数据压缩试验 | H.264编码

实验要求

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.生成率失真曲线

编码原理

1.H.264主要特点
压缩效率高:在图像质量不变的条件下,码率只有MPEG-2的1/2;
容错能力强:H.264码流具有较强抗误码特性,可适应丢包率高、干扰严重的信道;
网络适应性好;
计算复杂度高,比MPEG-2复杂2~3倍。
2.H.264编码器框图
数据压缩试验 | H.264编码_第1张图片

3.H.264/AVC与其它编码标准的差异
1)帧内预测
在空间域进行帧内预测,提高镇内编码的精确度;
2)运动估计与运动补偿
不同尺寸的块和形状,高分辨率的子像素运动估计和选择多个参考帧;
3)DCT变换
使用整数的DCT变换;
4)去块效应
为消除块效应,增加了自适应消块滤波器;
5)熵编码技术
通用变长编码(UVLC),基于上下文的自适应变长码编码(CAVLC),基于上下文的自适应二进制算术编码(CABAC)。

实验步骤

1.将两个264文件进行解码得到相应的YUV文件
在decoder_test.c文件中修改输入和输出文件名:

InputFile             = "highway_qcif.264"       # H.264/AVC coded bitstream
OutputFile            = "highway_qcif_dec.yuv"   # Output file, YUV/RGB

输出结果:
数据压缩试验 | H.264编码_第2张图片

2.将YUV文件编码为.264文件
2.1不同GOP类型的参数设置:
数据压缩试验 | H.264编码_第3张图片

在encoder.cfg文件中修改参数(GOP=15,2B帧):

...
##########################################################################################
# Files
##########################################################################################
InputFile             = "highway_qcif_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
...
ReconFile             = "highway_qcif_rec.yuv"       # Reconstruction YUV file
OutputFile            = "highway_qcif.264"           # Bitstream
##########################################################################################
# Encoder Control
##########################################################################################
...
IntraPeriod           = 15   # Period of I-pictures   (0=only first)
...
##########################################################################################
# B Slices
##########################################################################################
NumberBFrames          = 2  # Number of B coded frames inserted (0=not 
disable, N <= NumberReferenceFrames)
...
HierarchicalCoding      =  0  # B hierarchical coding (0= off, 1= 2 layers, 2= 2 full hierarchy, 3 = explicit)
...

输出结果:
数据压缩试验 | H.264编码_第4张图片
同理可得(GOP=4,1B帧):
数据压缩试验 | H.264编码_第5张图片
2.2相同GOP长度及类型,不同的码率(GOP=15,2B帧,修改码率)

########################################################################################
#Rate control
########################################################################################

RateControlEnable       = 1     # 0 Disable, 1 Enable
Bitrate                 = 1000000 # Bitrate(bps)
...

输出结果:
在这里插入图片描述
3.用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
GOP=15,2B
第一帧一定是帧内编码(I帧)
数据压缩试验 | H.264编码_第6张图片
Slice Type:I Slice
数据压缩试验 | H.264编码_第7张图片
第二第三帧为帧间预测帧(B帧)
数据压缩试验 | H.264编码_第8张图片
数据压缩试验 | H.264编码_第9张图片Slice Type:B Slice

数据压缩试验 | H.264编码_第10张图片
第四帧为前向预测帧(P帧)
数据压缩试验 | H.264编码_第11张图片
Slice Type:P Slice
数据压缩试验 | H.264编码_第12张图片

4.用播放器观看所生成码流的质量
【GOP=15,2B帧,1000kbps】
数据压缩试验 | H.264编码_第13张图片
数据压缩试验 | H.264编码_第14张图片
该帧实际码率为615.26kbps,其Y-PSNR为53.422dB。
【GOP=4,1B帧,1000000bps】
数据压缩试验 | H.264编码_第15张图片
数据压缩试验 | H.264编码_第16张图片
该帧实际码率为659.76kbps,其Y-PSNR为59.393dB。
5.生成率失真曲线
数据压缩试验 | H.264编码_第17张图片

你可能感兴趣的:(数据压缩试验 | H.264编码)