文章目录
- 1.将两个.264文件进行解码,得到相应的YUV文件
- 2.将上述两个视频序列编码为.264文件
- 3.用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
- 4.用播放器观看所生成码流的质量
- 5.生成率失真曲线
- 6.结论
1.将两个.264文件进行解码,得到相应的YUV文件
在decoder.cfg里修改输入第一个文件名称:
InputFile = "test_zy.264" # H.264/AVC coded bitstream
之后命令行运行ldecode.exe:
便得到输出结果:
同理得到第二个输出结果:
2.将上述两个视频序列编码为.264文件
2.1 固定码率,以不同的GOP长度及形状编码
在encoder.cfg里修改输入文件名称:
InputFile = "foreman_part_qcif.yuv" # Input sequence
修改输入输出文件宽高:
SourceWidth = 640 # Source frame width
SourceHeight = 360 # Source frame height
SourceResize = 0 # Resize source size for output
OutputWidth = 640 # Output frame width
OutputHeight = 360 # Output frame height
修改 :
IntraPeriod = 15 # Period of I-pictures (0=only first)
修改 :
NumberBFrames = 2 # Number of B coded frames inserted (0=not used)
修改 :
HierarchicalCoding = 0 # B hierarchical coding (0= off, 1= 2 layers, 2= 2 full hierarchy, 3 = explicit)
这里只列举出test_zy.yuv的例子:
2.1.1 GOP=15,2B帧
2.1.2 GOP=12,2B帧
2.1.3 GOP=9,2B帧
2.1.4 GOP=4,1B帧
2.1.5 GOP=12,无B帧
2.1.6 GOP=1,全I帧
2.2 相同的GOP长度及形状(GOP=15,2B帧),不同的码率
2.2.1 1000kb/s
2.2.2 800kb/s
2.2.3 400kb/s
3.用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
4.用播放器观看所生成码流的质量
4.1.1 GOP=15,2B帧,1000kb/s
选取第一帧,第一帧一定是帧内编码帧(I帧),同时,由于是I帧的原因,运动矢量并不存在。,在分析软件中分析时也确实如此,其Slice Type为I Slice:
第十帧:
4.1.2 GOP=12,2B帧,1000kb/s
4.1.3 GOP=12,0B帧,1000kb/s
4.1.4 GOP=9,2B帧,1000kb/s
4.1.5 GOP=4,1B帧,1000kb/s
4.1.6 GOP=1,全I帧,1000kb/s
4.1.7 GOP=15,2B帧,800kb/s
4.1.8 GOP=15,2B帧,400kb/s
5.生成率失真曲线
5.1.1 GOP=15,2B帧,1000kb/s
5.1.2 GOP=12,2B帧,1000kb/s
5.1.3 GOP=12,0B帧,1000kb/s
5.1.4 GOP=9,2B帧,1000kb/s
5.1.5 GOP=12,1B帧,800kb/s
5.1.6 GOP=1,全I帧,1000kb/s
5.1.7 GOP=15,2B帧,800kb/s
5.1.8 GOP=15,2B帧,400kb/s
…
以此类推,得到多组Y-PSNR
由上得Y-PSNR和码率绘制率失真曲线。
6.结论
通过率失真曲线可以比较两个编码器的性能:
●在PSNR相同时,对应码率小的编码器性能好
●在码率相同时,对应PSNR大的编码器性能好