H.264编解码
实验要求:
一: 将自行选择或老师给的两个264文件进行解码,得到相应的YUV文件
二:将上述两个视频序列编码为.264文件
1.固定码率,以不同的GOP长度及形状编码
·GOP=15,2B帧;GOP=12,2B帧,GOP=9,2B帧
·GOP=4,1B帧;GOP=12,无B帧;GOP=1,全I帧
2.相同的GOP长度及形状,不同的码率
例:1000kb/s, 800kb/s,400kb/s,…
三: 用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
四: 用播放器观看所生成码流的质量
五: 生成率失真曲线
实验内容:
一、将.264文件解码得到YUV文件
修改decoder.cfg文件
运行Idecod.exe完成解码,生成yuv文件
二、将yuv文件编码为.264文件
- 以GOP=15,2B帧为例
修改encoder.cfg如下:
##########################################################################################
# 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
...
OutputFile = "highway_qcif_GOP15_2B_1k.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 used)
...
HierarchicalCoding = 0 # B hierarchical coding (0= off, 1= 2 layers, 2= 2 full hierarchy, 3 = explicit)
########################################################################################
#Rate control
########################################################################################
RateControlEnable = 1 # 0 Disable, 1 Enable
Bitrate = 1000000 # Bitrate(bps)
- GOP=1,全I帧
IntraPeriod = 1 # Period of I-pictures (0=only first)
NumberBFrames = 0 # Number of B coded frames inserted (0=not used)
RCUpdateMode = 1 # Rate Control type. Modes supported :
# 0 = original JM rate control,
# 1 = rate control that is applied to all frames regardless of the slice type,
# 2 = original plus intelligent QP selection for I and B slices (including Hierarchical),
# 3 = original + hybrid quadratic rate control for I and B slice using bit rate statistics
三: 用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
H.264的特点:
(1)帧内预测
在空间域进行帧内预测,提高帧内编码的精确度;
(2)运动估计与运动补偿
不同尺寸的块和形状,高分辨率的子像素;运动估计和选择多个参考帧;
(3)DCT变换
使用整数的DCT变换
(4)去块效应滤波
为消除块效应,增加了自适应消块滤波器
(5)熵编码技术
通用变长编码(UVLC, universal variable length coding)、基于上下文的自适应变长码编码(CAVLC, context-based adaptive variable length coding)或基于上下文的自适应二进制算术编码(CABAC, context-based adaptive binary arithmetic coding)。
H.264采用帧内预测编码和帧间预测编码,对于预测的宏块,重建值=预测值+残差
以GOP=15,1B,1kbps为例
根据图像内容的变化程度选择不同大小的块进行编码:
对于每一帧的图像:
图像的基本信息
预测及重构值:
I帧中无运动矢量:
P帧有前向预测:
B帧有双向预测:
其中,绿色为前向预测,红色为后向预测
四: 用播放器观看所生成码流的质量
速率\类型 | GOP=15 2B | GOP=12 2B | GOP=9 2B | GOP=4 1B | GOP=12 0B | GOP=1 全I |
---|---|---|---|---|---|---|
1000 | ||||||
800 | ||||||
400 |
使用相关软件查看生成视频
速率\类型 | GOP=15 2B | GOP=12 2B | GOP=9 2B | GOP=4 1B | GOP=12 0B | GOP=1 全I |
---|---|---|---|---|---|---|
1000 | ||||||
800 | ||||||
400 |
五: 生成率失真曲线
Y:PSNR(dB)
折线图