实验要求
1、将两个264文件进行解码,得到相应的YUV文件
2、将上述两个视频序列编码为.264文件
固定码率,以不同的GOP长度及形状编码
GOP=15,2B帧;GOP=12,2B帧,GOP=9,2B帧
GOP=4,1B帧;GOP=12,无B帧;GOP=1,全I帧
相同的GOP长度及形状,不同的码率
例:1000kb/s, 800kb/s,400kb/s,…
3、用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
4、用播放器观看所生成码流的质量
5、生成率失真曲线
实验原理
H.264和先前的标准一样,都采用变换编码、基于运动补偿的帧间预测和熵编码的混合框架,大的不同是增加了帧内预测,变换采用整数变换,熵编码采用自适应的方法。
实验过程
将两个264文件进行解码,得到相应的YUV文件:
修改decoder.cfg中的文件名字参数:
修改命令行参数:
运行程序,得到demo_dec.yuv文件:
同样的步骤得到highwayqcif_dec.yuv
将视频序列编码为.264文件
1.固定码率,以不同的GOP长度及形状编码
修改命令行参数:
修改encoder.cfg中的参数:(GOP=15,间隔2B帧,码率1000kbps)
(列出的修改参数可能不全)
# Files
InputFile = "highwayqcif_dec.yuv" # Input sequence
InputHeaderLength = 0 # If the inputfile has a header, state it's length in byte here
StartFrame = 0 # Start frame for encoding. (0-N)
FramesToBeEncoded = 30 # Number of frames to be coded
SourceWidth = 176 # Source frame width
SourceHeight = 144 # Source frame height
SourceResize = 0 # Resize source size for output
OutputWidth = 176 # Output frame width
OutputHeight = 144 # Output frame height
TraceFile = "trace_enc.txt" # Trace file
ReconFile = "highwayqcif_rec.yuv" # Reconstruction YUV file
OutputFile = "highwayqcif152B.264" # Bitstream
StatsFile = "stats.dat" # Coding statistics file
NumberOfViews = 1 # Number of views to encode (1=1 view, 2=2 views)
View1ConfigFile = "encoder_view1.cfg" # Config file name for second view
# Encoder Control
IDRPeriod = 15 # Period of IDR pictures (0=only first)
# Error Resilience / Slices
PrimaryGOPLength = 15 # GOP length for redundant allocation (1-16)
# NumberReferenceFrames must be no less than PrimaryGOPLength when redundant slice enabled
#Rate control
RateControlEnable = 1 # 0 Disable, 1 Enable
# B Slices
NumberBFrames = 2 # Number of B coded frames inserted (0=not used)
Bitrate = 1000000 # Bitrate(bps)
GOP=15,2B帧 结果:
GOP=12,2B帧 结果:
GOP=9,2B帧 结果:
GOP=4,1B帧 结果:
GOP=12,无B帧 结果:
GOP=1,全I帧 结果:
2.相同的GOP长度及形状,不同的码率
选定GOP=15,2B帧,码率分别为:1000kb/s, 800kb/s,600kb/s,400kb/s,200kb/s,100kb/s.
1000kb/s:
800kb/s:
600kb/s:
400kb/s:
200Kb/s:
100kb/s:
率失真曲线:
1000kb/s:
800kb/s:
600kb/s:
400kb/s:
200kb/s:
100kb/s:
实验结论
固定的GOP长度及形状,码率越高,图像质量越好,但人眼看这些不同码率的图像感觉不出太大的差别,编码的成本却提升了很多。所以在考虑码率时,应该考虑到人眼的主观感受,以平衡图像质量和编码成本。