zoukankan      html  css  js  c++  java
  • FFmpeg笔记(四)

    初步了解视频的编码格式

    视频编码格式-H.261

    H.261是1990年ITU-T定制的一个视频编码标准,属于视频编解码器,视频编码器的鼻祖
    H.261又称为P*64,其目是为了能在64kbps的带宽上传输质量可接受的视频信号,
    编码程序设计的码率是能够在40kbps到2Mbps之间工作
    对CIF和QCIF分辨率的视频进行编解码(即亮度分辨率分别是352x288和176x144,色度采用4:2:0采样,分辨率分别是176x144和88x72), 它们是一种国际化的标准图像格式,不同硬件之间共同约定的统一格式

    H.261的实现原理

    1. 使用帧间预测来消除荣誉,使用了大量的矢量运动来进行运动补偿:分析相似图片的规律,将它们不变的地方保留下来,变动的地方按照位移编码规律的出一个计算方式,并根据这个计算规在解码的时候则自动生成中间帧(由于是可以计算出来的,所以中间帧被丢掉)
    2. 变换编码部分使用了一个8x8的离散余弦变换来消除空域的冗余:
    3. 然后对变换后的系数进行阶梯量化
    4. 再对变换系数进行Zig-zag(模式填充矩阵,安某种规则对矩阵进行数据填充)扫描并进行熵编码来消除冗余的统计(编码过程中按熵原理不丢失任何信息的编码。)

    视频编码格式-H.264

    H.264目前的应用最广泛的的视频编码格式,是由视频编码专家组和动态图像专家组提出的视频解码器标准,名字有很多,如H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC`

    国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC)的第10 部分。因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。

    H.264编解码流程

    1. 帧间和帧内预测(Estimation)
    2. 变换(Transform)和反变换
    3. 量化和反量化
    4. 环路滤波
    5. 熵编码

    H.264的优势

    1. 编码效率高: 同H.263等标准的特率效率相比,节省约一半的时间。
    2. 高质量的视频画面: 能够在较低的带宽传送高质量的图像
    3. 网络适应能力强: 可以在低延迟和无延迟的的场景下工作,不同的环境不同的传输和播放熟虑,提供丰富的错误处理工具,很好的控制或消除丢包和误码
    4. 采用混合编码个够: 使用了DCT+DPCM的编码个够,此外还增加了运动估计,帧内预测,多帧预测,基于内容的变长编码,4*4二维整数变换等新的编码方式
    5. 编码选项少,降低了编码时开发的复杂的度
    6. 较高的计算复杂度,相比H.263计算更为复杂

    编码方式

    1. 帧内预测编码: 利用相邻宏块的空间相关性(相似属性),预测剩余位置的属性进行压缩编码,为了满足不同场景,宏快和取点数以及取点方向各有差异,有4*4,8*8,16*16的宏块划分, 这种压缩类似于JPEG压缩,在图片色彩越统一,压缩效果越好,压缩后的这帧叫做I帧(I-frame).
    2. 帧间预测编码: 帧间预测编码利用连续帧中的冗余来进行运动估计和补偿, 总而言之,就是各种找规律,统计分析,将相似部分去掉,可推导有规律部分记录差值计算规则,完全不相似部分则全部记录。 帧间压缩后,很多帧会被组成一组图片(GOP,group of pictures)
    3. 去块滤波器:自适应去除块效应的滤波器,人们无法识别的信号先去除掉
    4. 整数变换: 基于4×4像素块的类似于DCT的变换,有减少运算量和复杂度,有利于向定点DSP移植的优点
    5. 量化:可选52种不同的量化步长
    6. 熵编码: 采用了两种不同的熵编码方法:通用可变长编码(UVLC)和基于文本的自适应二进制算术编码(CABAC)。

    H.264-GOP

    上面提到在帧间编码后,会压缩生成一组图片(GOP),GOP中主要保留有三种不同的帧.

    1.I-frame,关键帧,独立帧,尺寸最大,也是压缩最快的;

    1. P-frames: 预测帧,基于I-framesP-frames的可预测的图片进行编码得到的,P-frames可以引用最近预测的P-frames或一组I-frames;
    2. B-frames,双向帧,基于使用之前和之后的帧信息进行编码后得到的帧。几乎不需要存储空间,但其解码过程会耗费很长时间,因为它依赖于周围其他的帧.

    H.264-视图编码

    1. Baseline: 支持I/P 帧,只支持无交错和CAVLC,一般用于低阶或需要额外容错的应用,比如视频通话、手机视频等;
    2. Main:提供I/P/B 帧,支持无交错和交错,提供对于CAVLC 和CABAC 的支持,用于主流消费类电子产品规格如低解码的mp4、便携的视频播放器、PSP和Ipod等。
    3. High:在Main的基础上增加了8x8 内部预测、自定义量化、无损视频编码和更多的YUV 格式(如4:4:4)用于广播及视频碟片存储(蓝光影片),高清电视的应用。

    参考文章

    百度百科

  • 相关阅读:
    一个tomcat 增加多个端口
    转项目经理
    apicloud 解析
    七行代码搞定 任意数据库中的数据迁移
    语语
    农家设计图纸
    日期再总结
    X删除数据表的新用法
    c#中各类日期的计算方法,收藏
    IIS 7.5 高并发参数配置
  • 原文地址:https://www.cnblogs.com/wwoo/p/ffmpeg-bi-ji-si.html
Copyright © 2011-2022 走看看