本实验使用JM 18.6编解码
一、解码
修改decoder.cfg,将输入文件与输出文件改为自己所用的文件和想要的文件,将程序运行目录设置到bin中,运行程序解码.264文件,根据.264文件生成.yuv文件。
解码完成
二、编码
修改encoder.cfg,将输入文件与输出文件改为自己所用的文件和想要的文件,同时调整输入输出分辨率、编码帧数、GOP长度、连续B帧数、码率,将程序运行目录设置到bin中。
调整GOP长度:
连续B帧长度:
码率:(调整码率时要把RateControlEnable打开)
GOP与连续B帧数对图像质量的影响
GOP=15,2B帧:
Y分量的PSNR为39.975dB
该视频中较明显的运动处:
P帧:
红色为前向预测,绿色为后向预测,P帧只有前向预测。
B帧:
既有前向预测也有后向预测
I、B、P帧的宏块类型:
(红色与橙色均为帧内编码,黄色为与上一帧相同不用编码,蓝色为前向预测编码,绿色为双向编码)
更多测试:
GOP=12,2B帧 | GOP=9,2B帧 | GOP=4,1B帧 | GOP=12,无B帧 | GOP=1,全I帧 | |
---|---|---|---|---|---|
P帧运动矢量 | |||||
B帧运动矢量 | 无 | 无 | |||
I帧宏块类型 | |||||
P帧宏块类型 | 无 | ||||
B帧宏块类型 | 无 | 无 | |||
PSNR(dB) | 40.174 | 40.129 | 40.735 | 40.904 | 41.177 |
不同码率的PSNR:
分别对各个情况测试最小码率、60kbps、100kbps、140kbps、180kbps、最大码率,记录数据。
使用matlab绘图:
不统计最大码率情况时:
统计最大码率情况时:
各情况的趋势接近,由统计最大码率的情况可知GOP=12,无B帧的压缩质量最好,GOP=1,全I帧质量最差,其他情况排序为GOP=12,2B > GOP=9,2B > GOP=4,1B
由结果可知相同码率时,连续B帧数相同时GOP越大质量越好,GOP相同时连续B帧数越大越好,即B帧占比越大时质量越好。