1、1目录目录概述概述视频编码原理视频编码原理码率控制码率控制X264码率控制码率控制H264帧解析帧解析H264码流传输码流传输H264与媒体文件与媒体文件2概述概述文件:一种容器,是既包括视频又包括音频、 甚至还带有脚本的一个集合编码: 文件当中的视频和音频的压缩算法AVI文件: H.264+AAC,MPEG4+G.711Alaw.3概述概述视频编码:视频压缩,是计算机处理视频的前提。视频信号数字化后数据带宽很高,原始的720P约533Mbps。经过H.264压缩,带宽可以降至5Mbps以下,甚至数百Kbps视频编码方案(标准)有很多,主要的有MPEG系列(由ISO下属的MPEG运动图象专家组
2、开发)和H.26X系列(由ITU主导,侧重网络传输)。4概述概述H.261: 为ISDN设计,主要针对实时编码和解码设计,压缩和解压缩的信号延时不超过150ms,码率px64kbps(p=130)。主要采用运动补偿的帧间预测、DCT变换、自适应量化、熵编码等压缩技术。只有I帧和P帧,没有B帧,运动估计精度只精确到像素级。支持QCIF和CIFH.263: 甚低码率的图像编码国际标准,它一方面以H.261为基础,以混合编码为核心,其基本原理框图和H.261十分相似,原始数据和码流组织也相似;另一方面,H.263也吸收了MPEG等其它一些国际标准中有效、合理的部分,如:半像素精度的运动估计、PB帧预
3、测等,使它性能优于H.261。码率可小于64Kb/s,支持多种分辨率:SQCIF、 QCIF、CIF、4CIF、16CIF。5概述概述MPEG-1:主要针对SIF标准分辨率的图像进行压缩,目标码率为1.5Mb/s。特点:1.随机存取;2. 快速正向/逆向搜索;3 .逆向重播;4. 容错性。 MPEG-2:“21世纪的电视标准”,它在MPEG-1的基础上作了许多重要的扩展和改进,但基本算法和MPEG-1相同。和MPEG-1向下兼容,主要针对存储媒体、数字电视、高清晰等应用领域,分辨率为:低(352x288),中(720 x480),次高(1440 x1080),高(1920 x1080)。MPE
4、G-4:相对于MPEG-1/2在低比特率压缩上有着显著提高,在CIF(352*288)或者更高清晰度(768*576)情况下的视频压缩,无论从清晰度还是从存储量上都比MPEG1具有更大的优势,也更适合网络传输。另外MPEG-4可以方便地动态调整帧率、比特率,以降低存储量。设计过于复杂,难以完全实现并且兼容,另外还有高昂的专利费的问题。6概述概述H.264/AVC:由ITU-T与MPEG联合制定。它集中了以往标准的优点,在压缩编码效率、视频内容自适应处理能力方面及网络层面,特别是对IP网络及移动网络的自适应处理能力、抗干扰能力与顽健性等方面,相比H.263/MPEG-4均有大幅度提高。一般来说H
5、.264的数据压缩率在MPEG2的2倍以上、MPEG4的1.5倍以上。专利费:H.264广播时基本不收费;产品中嵌入H.264编/解码器时,年产量10万台以下不收取费,超过10万台每台收取0.2美元,超过500万台每台收取0.1美元。7目录目录概述概述视频编码原理视频编码原理码率控制码率控制X264码率控制码率控制H264帧解析帧解析H264码流传输码流传输H264与媒体文件与媒体文件8视频编码原理视频编码原理压缩原理:模拟视频信号在数字化过程中的过采样导致大量数据冗余。主要有时间冗余,空间冗余,视觉冗余,信息熵冗余空间冗余:基于块的变换编码信息熵冗余:熵编码-无损编码,编码后的平均码长接近信
6、源的熵时间冗余:基于运动补偿的时域预测视觉冗余:YUV4209视频编码原理视频编码原理视频编码框架:H263、MPEG4、H264等编码标准都基于这个标准框架 在目前的视频编码标准框架结构中,通常采用基于运动补偿的时域预测去除时间冗余,采用基于块的变换编码去除空间冗余,使用熵编码去除前面两步生成数据中的信息熵冗余。这三种主要技术的组合,再辅以若干增强编码算法,就形成了基于块的混合编码框架。10视频编码原理视频编码原理量化参数QP和量化步长Qstep的关系:量化步长Qstep共有52个值(对于亮度编码而言)。量化参数QP是量化步长Qstep的序号,取值0-51。Qstep随着QP的增加而增加,Q
7、P每增加6,Qstep增加一倍。QPQPQstepQstepQPQPQstepQstepQPQPQstepQstepQPQPQstepQstepQPQPQstepQstep0 00.6250.62511112.252.2522228 83333282844441041041 10.68750.687512122.52.523239 93434323245451121122 20.81250.812513132.752.75242410103535363646461281283 30.8750.87514143.253.25252511113636404047471441444 41 11515
8、3.53.5262613133737444448481601605 51.1251.12516164 4272714143838525249491761766 61.251.2517174.54.5282816163939565650502082087 71.3751.37518185 5292918184040646451512242248 81.6251.62519195.55.530302020414172729 91.751.7520206.56.5313122224242808010102 221217 7323226264343888811视频编码原理视频编码原理视频合成:多个视频
9、源在YUV空间或RGB空间进行像素的重新排列12目录目录概述概述视频编码原理视频编码原理码率控制码率控制X264码率控制码率控制H264帧解析帧解析H264码流传输码流传输H264与媒体文件与媒体文件13码率控制码率控制最关键2点:运动估计(搜索算法)和码率控制H.264的2个提案 JVT-F086:TM5改进版本,线性模型 JVT-G012:用流量往返模型来分配每个基本单元目标比特 数,并在宏块层编码采用二次率失真函数计算量化参数,二次率失真(Rate-Distortion, R-D)模型JVT-G012比较了这两种算法,认为其算法优于F086算法14码率控制码率控制蛋蛋-鸡悖论鸡悖论 码率
10、控制-量化参数QP-率失真优化RDO-绝对平均差值MAD-编码为了对宏块进行RDO,必须先用宏块的MAD值来确定宏块的QP值。然而当前宏块的MAD值只有在RDO之后才可以获取。漏桶模型漏桶模型(Leaky Bucket Model)和线性跟踪理论线性跟踪理论(Linear Tracking Theory)根据已经确定的帧率、当前的缓冲占用率、目标缓冲级别和可用的带宽确定当前帧的目标码率。剩余比特数平均分配给当前帧中没有编码的基本单元基本单元。通过线性模型,用前一帧相同位置处的基本单元的实际MAD值来预测出当前基本单元的MAD值。再用二次率失真模型来计算相应的QP值,从而用来对当前基本单元的每一
11、宏块进行率失真优化基本单元:一个宏块、一片、一场或一帧基本单元:一个宏块、一片、一场或一帧基本单元个数:基本单元个数:基本单元更大能获得更大的基本单元更大能获得更大的PSNR值,但码率波动更大。更小的基本单元码率更平滑,但值,但码率波动更大。更小的基本单元码率更平滑,但PSNR会有轻微损失会有轻微损失15码率控制码率控制基本单元码率控制二次R-D计算QP更新二次R-D模型系数16目录目录概述概述视频编码原理视频编码原理码率控制码率控制X264码率控制码率控制H264帧解析帧解析H264码流传输码流传输H264与媒体文件与媒体文件17X264X264码率控制码率控制每帧一个QP,未实现H.264
12、规范允许的每个宏块使用不同的QP。2pass:指定目标码率,:指定目标码率,2趟编码趟编码在第1趟编码(比如ABR)时为每一帧生成一些统计信息,以助在第2趟编码中时为每一帧找到最好的QP。第2趟编码包含以下三部分:1. 第2趟编码开始之前,拿出一些bit用于在帧间灵活分配。这个bit数与目标码率无关,只是一个使用恒定QP(根据第一趟编码估计)编码的码率的比值,一般是0.6;2. 用(1)得出来的值和目标码率计算每一帧要使用的QP。使用VBV是方法之一,VBV是一个迭代的过程,因为使用VBV和QP会互相影响3. 现在开始编码。每编完一帧,按照还剩下的空间重新计算后面将要使用的QP,如果编码过程中
13、第2趟编码的实际码率偏离了目标码率(因为第二趟编码用了更慢的参数),会在随后的帧里做出变化以纠正错误趋势。VBV:Video Buffer Verifier18X264X264码率控制码率控制ABR:1趟编码,平均码率趟编码,平均码率目标是达到和2趟编码同样的效果,但没有第1趟编码的帮助,所以只能一边编码一边控制码率:1、和2趟编码的(1)过程一样,但因为没有第1趟编码的帧信息,所以把帧缩小为一半分辨率后用一个快速预测算法和SATD(sum of absolute transform differences绝对变换差值和)做一个预测来代替。而且也不知道后面的GOP的大小和复杂度,所以I帧的决策
14、基于之前的帧;2、因为不知道后面帧的复杂度,所以只根据前面的帧来测算QP。测算的因数将定为如果应用于目前所有帧则可以满足目标比特率的数;3、和2趟编码一样有溢出补偿,调节补偿力度可以得到很接近2趟编码的质量(但大小将在接近正负10%的范围内浮动),通过这种方式可以在一定程度上控制住文件大小而又不太牺牲视频质量。19X264X264码率控制码率控制CBR:1趟编码,恒定码率(用趟编码,恒定码率(用VBV限制)限制)1、同ABR;2、测算因子基于一个范围内(由VBV buffer大小决定)的均值,而不是之前所有帧;3、溢出补偿更加严格,而且在VBV接近0时将会强制限制QP。但在VBV没用完时并不会
15、强制限制QP,所以CBR的结果多少会比目标码率低一点。还要注意的是,如果在所有机制过后,一个帧还是超出了VBV的限制,那它是不会被重新编码的。CRF:1趟编码,恒定码率因子趟编码,恒定码率因子constant rate factor1、同ABR;2、换算因子恒定为 crf参数的值;3、没有溢出补偿。CQP:恒定量化参数:恒定量化参数QP20X264X264码率控制码率控制X264没有采用拉格朗日代价函数来控制编码,而是使用一种更简单的方法,即利用半精度帧的SATD(sum of absolute transformed difference)作为模式选择的依据。SATD即将残差经哈德曼(had
16、amard)变换的44块的预测残差绝对值总和,可以将其看作简单的时频变换,其值在一定程度上可以反映生成码流的大小。21H264H264帧解析帧解析H264码流H.264编码时,在每个NAL前添加起始码0 x000001 0 x000000 - 0 x00000300 0 x000001 - 0 x00000301 0 x000002 - 0 x00000302 0 x000003 - 0 x0000030322目录目录概述概述视频编码原理视频编码原理码率控制码率控制X264码率控制码率控制H264帧解析帧解析H264码流传输码流传输H264与媒体文件与媒体文件23H264H264码流传输码流传
17、输H264的传输:RFC3984RFC3984规定了H.264在网络上如何通过RTP协议进行传输三个不同的基本荷载结构:单个NAL单元包、聚合包、分片单元24H264H264码流传输码流传输三种打包方式 交错方式 :交错模式目标是不要求非常低的端到端延迟的系统。 允许NAL单元不按照解码顺序传送。单NAL单元方式 :目标是常规的系统,该系统兼容ITU-T H.241 非交错方式:目标是常规系统,可以不符合ITU-T H.241。 NAL单元按照解码顺序传送。25H264H264码流传输码流传输单个NAL单元包:RTP载荷就是一个NAL单元26H264H264码流传输码流传输分片NAL单元:一个NAL单元分成多个RTP包传送27目录目录概述概述视频编码原理视频编码原理码率控制码率控制X264码率控制码率控制H264帧解析帧解析H264码流传输码流传输H264与媒体文件与媒体文件28H264H264与媒体文件与媒体文件AVIAVIhttp:/ Stream(PS)传送流TransportStream(TS)31H264H264与媒体文件与媒体文件PS/TSPS/TSTS32H264H264与媒体文件与媒体文件MP4MP4谢 谢 大 家!