初步了解视频的编码格式
视频编码格式-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的实现原理
- 使用帧间预测来消除荣誉,使用了大量的矢量运动来进行运动补偿:分析相似图片的规律,将它们不变的地方保留下来,变动的地方按照位移编码规律的出一个计算方式,并根据这个计算规在解码的时候则自动生成中间帧(由于是可以计算出来的,所以中间帧被丢掉)
- 变换编码部分使用了一个8x8的离散余弦变换来消除空域的冗余:
- 然后对变换后的系数进行阶梯量化
- 再对变换系数进行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编解码流程
- 帧间和帧内预测(Estimation)
- 变换(Transform)和反变换
- 量化和反量化
- 环路滤波
- 熵编码
H.264的优势
- 编码效率高: 同H.263等标准的特率效率相比,节省约一半的时间。
- 高质量的视频画面: 能够在较低的带宽传送高质量的图像
- 网络适应能力强: 可以在低延迟和无延迟的的场景下工作,不同的环境不同的传输和播放熟虑,提供丰富的错误处理工具,很好的控制或消除丢包和误码
- 采用混合编码个够: 使用了DCT+DPCM的编码个够,此外还增加了运动估计,帧内预测,多帧预测,基于内容的变长编码,4*4二维整数变换等新的编码方式
- 编码选项少,降低了编码时开发的复杂的度
- 较高的计算复杂度,相比H.263计算更为复杂
编码方式
- 帧内预测编码: 利用相邻宏块的空间相关性(相似属性),预测剩余位置的属性进行压缩编码,为了满足不同场景,宏快和取点数以及取点方向各有差异,有
4*4,8*8,16*16
的宏块划分, 这种压缩类似于JPEG压缩,在图片色彩越统一,压缩效果越好,压缩后的这帧叫做I帧
(I-frame). - 帧间预测编码: 帧间预测编码利用连续帧中的冗余来进行运动估计和补偿, 总而言之,就是各种找规律,统计分析,将相似部分去掉,可推导有规律部分记录差值计算规则,完全不相似部分则全部记录。 帧间压缩后,很多帧会被组成一组图片(GOP,group of pictures)
- 去块滤波器:自适应去除块效应的滤波器,人们无法识别的信号先去除掉
- 整数变换: 基于4×4像素块的类似于DCT的变换,有减少运算量和复杂度,有利于向定点DSP移植的优点
- 量化:可选52种不同的量化步长
- 熵编码: 采用了两种不同的熵编码方法:通用可变长编码(UVLC)和基于文本的自适应二进制算术编码(CABAC)。
H.264-GOP
上面提到在帧间编码后,会压缩生成一组图片(GOP),GOP中主要保留有三种不同的帧.
1.I-frame
,关键帧,独立帧,尺寸最大,也是压缩最快的;
-
P-frames
: 预测帧,基于I-frames
或P-frames
的可预测的图片进行编码得到的,P-frames
可以引用最近预测的P-frames
或一组I-frames
; -
B-frames
,双向帧,基于使用之前和之后的帧信息进行编码后得到的帧。几乎不需要存储空间,但其解码过程会耗费很长时间,因为它依赖于周围其他的帧.
H.264-视图编码
- Baseline: 支持I/P 帧,只支持无交错和CAVLC,一般用于低阶或需要额外容错的应用,比如视频通话、手机视频等;
- Main:提供I/P/B 帧,支持无交错和交错,提供对于CAVLC 和CABAC 的支持,用于主流消费类电子产品规格如低解码的mp4、便携的视频播放器、PSP和Ipod等。
- High:在Main的基础上增加了8x8 内部预测、自定义量化、无损视频编码和更多的YUV 格式(如4:4:4)用于广播及视频碟片存储(蓝光影片),高清电视的应用。