Lab8-2 H.264编码实验——程序实现
一、实验要求
二、实验过程
1、使用ldecod_vc10的工程文件将highway_qcif.264和pulada.264进行解码,以得到yuv文件。
已知highway_qcif.264的图像宽高为176x144;pulada.264的图像宽高为640x368。(使用上一篇Lab8-1 H.264编码实验——软件分析中所使用的码流分析软件得到)
命令行参数设置:
将decoder.cfg分别修改为:
得到输出:
2、使用lencod_vc10的工程文件将刚刚得到的两个YUV文件按照不同要求编码为264文件。
命令行参数设置为:
(1)固定码率(5Mbps),不同的GOP长度及形状:
对pulada.yuv进行编码时,基本参数设置为:
参数所在行数 | 参数名称 | 参数含义 | 参数值 |
---|---|---|---|
13 | InputFile | 输入文件名 | “pulada.yuv” |
16 | FramesToBeEncoded | 编码帧数 | 30 |
30 | SourceWidth | 输入文件的宽度 | 640 |
31 | SourceHeight | 输入文件的高度 | 368 |
33 | OutputWidth | 输出视频的宽度 | 640 |
34 | OutputHeight | 输出视频的高度 | 368 |
56 | TraceFile | 跟踪文件名(.txt) | “pulada_enc.txt” |
57 | ReconFile | 重建文件名(.yuv) | “puladaxx_rec.yuv” |
58 | OutputFile | 输出文件名(.264) | “pulada_new0x.264” |
对highway_qcif.yuv进行编码时,基本参数设置为:
参数所在行数 | 参数名称 | 参数含义 | 参数值 |
---|---|---|---|
13 | InputFile | 输入文件名 | “highway_qcif.yuv” |
16 | FramesToBeEncoded | 编码帧数 | 30 |
30 | SourceWidth | 输入文件的宽度 | 176 |
31 | SourceHeight | 输入文件的高度 | 144 |
33 | OutputWidth | 输出视频的宽度 | 176 |
34 | OutputHeight | 输出视频的高度 | 144 |
56 | TraceFile | 跟踪文件名(.txt) | “highway_qcif_enc.txt” |
57 | ReconFile | 重建文件名(.yuv) | “highway_qcifxx_rec.yuv” |
58 | OutputFile | 输出文件名(.264) | “highway_qcif_new0x.264” |
其他参数按照要求分别进行设置,如下图:
优先级:IDRPeriod > IntraPeriod;IntraPeriod > NumberBFrames;IDRPeriod > PrimaryGOPLength。
以pulada.yuv,GOP=15,2B帧为例,将输出结果截图展示:
以pulada.yuv为例,使用ESEyE码流分析软件进行验证:
主观评价——通过H264Visa播放器观看生成码流的质量:
码率一定的情况下,图像质量从高到低依次是:GOP=12,0B帧 > GOP=15,2B帧 > GOP=12,2B帧 > GOP=9,2B帧 > GOP=4,1B帧 > GOP=1,全I帧。
(可用率失真曲线验证。)
(2)固定GOP长度及形状(GOP=15、2B帧),不同码率:
基本参数设置与(1)中相同,其他参数设置如下图:
以highway_qcif.yuv为例,记录不同码率下Y分量的PSNR,结果如下图:
客观评价——以Bitrate(Mkps)为横坐标,以PSNR(dB)为纵坐标,生成率失真曲线。
由率失真曲线可以看出,随着比特率的升高,编码后的图像质量也有所提升。