音视频压缩编码介绍

99封情书 提交于 2020-02-22 20:40:37
1.概念:

压缩(编码):因为未经压缩的数字视频的数据量巨大,在相对有限的存储空间和传输带宽条件下,其在互联网上的传输会有极大的不便,所以在视频的传输之前,会对视频数据和音频数据进行一定算法的压缩,这个过程又称为编码。

帧内(Intraframe)压缩:也称为空间压缩,当压缩一帧图像时,只考虑本帧的数据而不考虑相邻帧之间的冗余信息,帧内一般采用有损压缩算法,由于帧内压缩时各个帧之间没有相互关系,所以压缩后的视频数据仍可以以帧为单位进行编辑。帧内压缩一般达不到很高的压缩比率,可能有一定的失真。

基于同一帧内已编码块预测,构造预测块,计算与当前块的残差,对残差、预测模式等信息进行编码。其主要去除的是空域冗余

帧间(Interframe)压缩:是基于许多视频或 动画的连续前后两帧具有很大的相关性,或者说前后两帧信息变化很小的特点。也即连续的视频其相邻帧之间具有冗余信息,根据这一特性,压缩相邻帧之间的冗余量就可以进一步提高压缩量,减小压缩比。帧间压缩也称为时间压缩(Temporalcompression),它通过比较时间轴上不同帧之间的数据进行压缩。帧间压缩一般是无损的。帧差值(Frame differencing)算法是一种典型的时间压缩法,它通过比较本帧与相邻帧之间的差异,仅记录本帧与其相邻帧的差值,这样可以大大减少数据量。

基于一个或多个已编码帧预测,构造预测块,计算与当前块的残差,对残差、预测模式、运动矢量残差、参考图像索引等信息进行编码。其主要去除的是时域冗余

RGB:任何彩色图像可由不同比例的红色、绿色和蓝色组合而成,即三基色原理。这种表示彩色图像的方法即RGB 彩色空间。

YUV(YCbCr):人类视觉系统(HDV)对亮度比彩色更敏感,因此可以把亮度信息从彩色信息分离处来,并使之具有更高的清晰度,彩色信息的清晰度较低些,可显著压缩带宽,实现视频压缩的一部分,人的感觉却没有不同。

如果亮度分量用Y 表示,色度用Cb,Cr 表示,则由大量实验得出:

Y=0.299R+0587G+0.114B

Cb=0564(B-Y)

Cr=0.713(R-Y) 

**反之,可由下式得到相应的R、G、B:**

R=Y+1.402Cr

G=Y-0.344Cb-0.714Cr

B=Y+1.772Cb 

GOP(Group of Pictures):策略影响编码质量:所谓GOP,意思是画面组,一个GOP就是一组连续的画面。MPEG编码将画面(即帧)分为I、P、B三种。

I帧:帧内编码帧,表示关键帧,可以理解为这一帧画面的完整保留;解码时只根据本帧数据就可以完成。

I帧特点: 1.它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输; 2.解码时仅用I帧的数据就可重构完整图像; 3.I帧描述了图像背景和运动主体的详情; 4.I帧不需要参考其他画面而生成; 5.I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量); 6.I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧; 7.I帧不需要考虑运动矢量; 8.I帧所占数据的信息量比较大。

P帧:前向预测编码帧。P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)

P帧的预测与重构:P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。

P帧特点:1.P帧是I帧后面相隔1~2帧的编码帧;2.P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);3.解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;4.P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧;5.P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧;6.由于P帧是参考帧,它可能造成解码错误的扩散;7.由于是差值传送,P帧的压缩比较高。

B帧:双向预测内插编码帧。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况,但我这样说简单些),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。

B帧的预测与重构:B帧以前面的I或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。

B帧特点:1.B帧是由前面的I或P帧和后面的P帧来进行预测的;2.B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;3.B帧是双向预测编码帧;4.B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确;5.B帧不是参考帧,不会造成解码错误的扩散。

:I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧。一般来说,I帧的压缩率是7(跟JPG差不多),P帧是20,B帧可以达到50。可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

2.视频几种主流编码算法

为什么视频信息可以被压缩?

视频信息之所以存在大量可以被压缩的空间,是因为其中本身就存在大量的数据冗余。其主要类型有:

时间冗余:视频相邻的两帧之间内容相似,存在运动关系

空间冗余:视频的某一帧内部的相邻像素存在相似性

视觉冗余:观众的视觉系统对视频中不同的部分敏感度不同

针对这些不同类型的冗余信息,在各种视频编码的标准算法中都有不同的技术专门应对,以通过不同的角度提高压缩的比率。

理论依据:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。所以对于一段变化不大图像画面,我们可以先编码出一个完整的图像帧A,随后的B帧就不编码全部图像,只写入与A帧的差别,这样B帧的大小就只有完整帧的1/10或更小!B帧之后的C帧如果变化不大,我们可以继续以参考B的方式编码C帧,这样循环下去。这段图像我们称为一个GOP(GOP就是有相同特点的一段数据),当某个图像与之前的图像变化很大,无法参考前面的帧来生成,那我们就结束上一个GOP,开始下一段GOP,也就是对这个图像生成一个完整帧A1,随后的图像就参考A1生成,只写入与A1的差别内容。

链接:https://www.jianshu.com/p/8d5dbfb52c6e

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!