欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

H.264编解码

程序员文章站 2022-07-07 09:07:24
...

实验要求:

一: 将自行选择或老师给的两个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文件
H.264编解码运行Idecod.exe完成解码,生成yuv文件
H.264编解码
H.264编解码

二、将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)

H.264编解码

  • 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编解码

三: 用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息
H.264编解码
H.264编解码

H.264编解码
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为例

根据图像内容的变化程度选择不同大小的块进行编码:
H.264编解码
对于每一帧的图像:H.264编解码
图像的基本信息
H.264编解码H.264编解码
预测及重构值:
H.264编解码
H.264编解码
H.264编解码
H.264编解码

I帧中无运动矢量:
H.264编解码
P帧有前向预测:
H.264编解码
B帧有双向预测:
H.264编解码
其中,绿色为前向预测,红色为后向预测

四: 用播放器观看所生成码流的质量

速率\类型 GOP=15 2B GOP=12 2B GOP=9 2B GOP=4 1B GOP=12 0B GOP=1 全I
1000 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码
800 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码
400 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码

使用相关软件查看生成视频

速率\类型 GOP=15 2B GOP=12 2B GOP=9 2B GOP=4 1B GOP=12 0B GOP=1 全I
1000 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码
800 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码
400 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码 H.264编解码

五: 生成率失真曲线
Y:PSNR(dB)H.264编解码
折线图
H.264编解码