浅谈视频编码技术
什么是视频编码
所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,面临着存储困难:一张DVD只能存储几秒钟的未压缩数字视频和传输困难 : 1兆的带宽传输一秒的数字电视视频需要大约4分钟。视频编码是音视频技术中最重要的技术之一。高效率的视频编码在同等的码率下,可以获得更高的视频质量。
视频编码分类
视频压缩编码技术可以分为两大类:无损压缩和有损压缩
无损压缩也称为可逆编码,指使用压缩后的数据进行重构(即:解压缩)时,重构后的数据与原来的数据完全相同。也就是说,解码图像和原始图像严格相同,压缩是完全可恢复的或无偏差的,没有失真。无损压缩用于要求重构的信号与原始信号完全一致的场合,例如磁盘文件的压缩。
有损压缩也称为不可逆编码,指使用压缩后的数据进行重构(即:解压缩)时,重构后的数据与原来的数据有差异,但不影响人们对原始资料所表达的信息造成误解。也就是说,解码图像和原始图像是有差别的,允许有一定的失真,但视觉效果一般是可以接受的。有损压缩的应用范围广泛,例如视频会议、可视电话、视频广播、视频监控等。
如下图是常用的压缩编码方法的分类:
编码器中的关键技术
预测:通过帧内预测和帧间预测降低视频图像的空间冗余和时间冗余。
变换:通过从时域到频域的变换,去除相邻数据之间的相关性,即去除空间冗余。
量化:通过用更粗糙的数据表示精细的数据来降低编码的数据量,或者通过去除人眼不敏感的信息来降低编码数据量。
熵编码:根据待编码数据的概率特性减少编码冗余。
帧内压缩和帧间压缩
帧内压缩也称为空间压缩。当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。帧内一般采用有损压缩算法, 由于帧内压缩时各个帧之间没有相互关系,所以压缩后的视频数据仍可以以帧为单位进行编辑。帧内压缩一般达不到很高的压缩
采用帧间压缩是基于许多视频或 动画的连续前后两帧具有很大的相关性,或者说前后两帧信息变化很小的特点。也即连续的视频其相邻帧之间具有冗余信息,根据这一特性,压缩相邻帧之间的冗余量就可以进一步提高压缩量,减小压缩比。帧间压缩也称为时间压缩它通过比较时间轴上不同帧之间的数据进行压 缩。帧间压缩一般是无损的。帧差值算法是一种典型的时间压缩法,它通过比较本帧与相邻帧之间的差异,仅记录本帧与其相邻帧的差值,这样可以大大减少数据量。
常见的音频视频编码有以下几类
MPEG系列
(由ISO[国际标准组织机构]下属的MPEG[运动图象专家组]开发 )
视频编码方面主要是Mpeg1(vcd编码方式)、Mpeg2(DVD编码方式)、Mpeg4、Mpeg4 AVC(当下最流行)。
H.26X系列
(由ITU[国际电传视讯联盟]主导,侧重网络传输,只是视频编码)
包括H.261、H.262、H.263、H.263+、H.263++、H.264(就是MPEG4 AVC-合作的结晶)
互动直播领域多采用 H264编码,其编码步骤如下:
1.分组:把几帧图像分为一组(GOP,也就是一个序列),为防止运动变化,帧数不宜取多。
2.定义帧:将每组内各帧图像定义为三种类型,即I帧、B帧和P帧;
3.预测帧:以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;
4.数据传输:最后将I帧数据与预测的差值信息进行存储和传输。
总结
随着直播行业的爆发,视频编码技术将向着压缩率更高,画面损失更小的方向发展。如新推出的 H265 编码技术,在强大硬件编码器的配合下,同等画质的视频文件, H265 编码比 H264编码文件体积缩小一半,大大降低了流量和带宽的开销。想体验互联网直播的相关技术,感受视频编码的神奇,可以关注又拍云直播云。