数据压缩实验六——H.264编码实验

实验原理

实验流程

将不同的视频序列编码为.264文件
固定码率,以不同的GOP长度及形状编码
GOP=15,2B帧;GOP=12,2B帧,GOP=9,2B帧
GOP=4,1B帧;GOP=12,无B帧;GOP=1,全I帧
相同的GOP长度及形状,不同的码率
例:300kb/s, 200kb/s,100kb/s,…
用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
用播放器观看所生成码流的质量
生成率失真曲线

调试过程

需改动的参数:
encoder.cfg
LINE194: HierarchicalCoding = 0 关闭B帧Hierarchy编码模式
LINE13/16/30/31/33/34/57/58/59: 一些基本输入输出参数
LINE73: IDRPeriod IDR(Instantaneous Decoding Refresh)帧间隔,标志着GOP的开始,所以IDRPeriod也是GOP长度。这里需要和LINE72的IntraPeriod区分,IntraPeriod是I帧间隔,而一个GOP内可以有多个I帧,但只有一个IDR帧。参考http://blog.sina.com.cn/s/blog_520811730101jlsa.html#cmt_2512661
180NumberBFrames: B帧数,指的是I帧/P帧之间的B帧数。如GOP=12,B=2时帧结构为:IBBPBBPBBPBB
LINE444/445: 调整可变输出码率

编码帧数FramesToBeEncoded的选择:要想对比不同GOP类型和不同码率下编码后的失真程度和一些参数,每次的编码帧数应相同。如果在GOP为4时只编码4帧,则无法压到比较小的输出码率,比如要求输出100kbps,在这种情况下只能输出229kbps。

实验结果

不同输出码率下每一帧编码结果及参数(GOP15B2)

设置码率(kbps) 实际码率(kbps) 结果
50 119.81 数据压缩实验六——H.264编码实验_第1张图片
100 119.81 数据压缩实验六——H.264编码实验_第2张图片
200 192.62 数据压缩实验六——H.264编码实验_第3张图片
300 290.03 数据压缩实验六——H.264编码实验_第4张图片
400 395.44 数据压缩实验六——H.264编码实验_第5张图片
500 489.10 数据压缩实验六——H.264编码实验_第6张图片
600 591.46 数据压缩实验六——H.264编码实验_第7张图片

对比发现每组前4帧的比特数都相等,随后每帧的比特数都根据设置的输出码率,有不同程度的增加。分析这是由H.264某些自适应机制决定的(?)

率失真曲线
由于输出码率设置为50k时,实际输出码率和设置为100k时的实际码率相等,猜测可能100k时已经达到码率最低底线,所以输出码率仅以100k作为起始。当输出全I帧时,实际输出码率固定在6000k,所以没有画全I帧的图像。

在相同码率下,没有B帧时的视频客观质量(Y-PSNR)最高。GOP越短,低码率的视频客观质量越高。码率和视频客观质量呈非线性关系,低码率段100-250的斜率大于高码率段250-400,在低码率段提升码率,视频客观质量提升更显著。

用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息

帧类型
I帧 数据压缩实验六——H.264编码实验_第8张图片
P帧 数据压缩实验六——H.264编码实验_第9张图片
B帧 数据压缩实验六——H.264编码实验_第10张图片
B帧 数据压缩实验六——H.264编码实验_第11张图片

以上几幅图片分别是用码流分析软件H264Visa,对生成的.264文件进行查看的结果。图像中的标记的是每个块的运动矢量,一个块的大小不定,从16x16~4X4。I帧为帧内编码没有运动矢量,P帧为前向预测编码,运动矢量为绿色,B帧为双向预测编码,运动矢量有红绿两种颜色。
参考:http://www.cnblogs.com/xkfz007/archive/2012/07/27/2612038.html
码流分析软件H264Visa可以查看.264文件的数据和编码信息,比如:帧信息、宏块信息、像素信息。可以查看帧序号、图片尺寸、编码方式、块类型、YUV通道等等信息。
数据压缩实验六——H.264编码实验_第12张图片
数据压缩实验六——H.264编码实验_第13张图片
数据压缩实验六——H.264编码实验_第14张图片

用播放器观看所生成码流的质量

GOP长度/类型 \ 设置输出码率(kbps) 100 200 300 400
15 / 2B帧 数据压缩实验六——H.264编码实验_第15张图片 数据压缩实验六——H.264编码实验_第16张图片 数据压缩实验六——H.264编码实验_第17张图片 数据压缩实验六——H.264编码实验_第18张图片
12 / 2B帧 数据压缩实验六——H.264编码实验_第19张图片 数据压缩实验六——H.264编码实验_第20张图片 数据压缩实验六——H.264编码实验_第21张图片 数据压缩实验六——H.264编码实验_第22张图片
9 / 2B帧 数据压缩实验六——H.264编码实验_第23张图片 数据压缩实验六——H.264编码实验_第24张图片 数据压缩实验六——H.264编码实验_第25张图片 数据压缩实验六——H.264编码实验_第26张图片
4 / 1B帧 数据压缩实验六——H.264编码实验_第27张图片 数据压缩实验六——H.264编码实验_第28张图片 数据压缩实验六——H.264编码实验_第29张图片 数据压缩实验六——H.264编码实验_第30张图片
12 / 0B帧 数据压缩实验六——H.264编码实验_第31张图片 数据压缩实验六——H.264编码实验_第32张图片 数据压缩实验六——H.264编码实验_第33张图片 数据压缩实验六——H.264编码实验_第34张图片
1 / 全I帧 数据压缩实验六——H.264编码实验_第35张图片 数据压缩实验六——H.264编码实验_第36张图片 数据压缩实验六——H.264编码实验_第37张图片 数据压缩实验六——H.264编码实验_第38张图片

主观上看,长GOP、无B帧的视频质量不好。比较推荐GOP长12,2B帧的方案。
另:GOP长4,1B帧码率最低只能到300k,全I帧码率为6000k,所以这两个方案在此表中没有参考价值(设置的输出码率和实际的输出码率不一致)

你可能感兴趣的:(数据压缩课程实验)