【数据压缩(十)】H264文件分析2

H264文件分析2

  • 一、实验要求
  • 二、实验原理
    • 1、h264编码
    • 2、h264解码
  • 三、实验步骤
    • 0、文件准备
    • 1、264文件解码
      • 1.1 解码`lan.264`文件
      • 1.2 解码`demo.264`文件
    • 2、264文件编码
      • 2.1 固定码率,以不同的GOP长度及形状编码
      • 2.2 相同GOP长度及形状,不同码率编码
    • 3、分析码流
    • 4、视频质量主观评价
    • 5、率失真曲线
  • 四、实验结论

一、实验要求

  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、h264编码

编码原理框图如下:
【数据压缩(十)】H264文件分析2_第1张图片

2、h264解码

解码原理框图如下:
【数据压缩(十)】H264文件分析2_第2张图片

三、实验步骤

0、文件准备

本次实验用到两个MP4文件,分别在线转为.264文件。
在这里插入图片描述

1、264文件解码

1.1 解码lan.264文件

  1. 修改bin目录下的decoder.cfg文件:
InputFile             = "lan.264"       # H.264/AVC coded bitstream
OutputFile            = "lan_dec.yuv"   # Output file, YUV/RGB
  1. 运行命令ldecod.exe -d decoder.cfg进行解码
    【数据压缩(十)】H264文件分析2_第3张图片
    【数据压缩(十)】H264文件分析2_第4张图片
    生成yuv文件:
    在这里插入图片描述

1.2 解码demo.264文件

  1. 修改bin目录下的decoder.cfg文件:
InputFile             = "movie.264"       # H.264/AVC coded bitstream
OutputFile            = "movie_dec.yuv"   # Output file, YUV/RGB
  1. 运行命令ldecod.exe -d decoder.cfg进行解码
    【数据压缩(十)】H264文件分析2_第5张图片
    【数据压缩(十)】H264文件分析2_第6张图片
    生成yuv文件:
    在这里插入图片描述

2、264文件编码

2.1 固定码率,以不同的GOP长度及形状编码

以刚刚解码生成的lan_dec.yuv文件为例,取GOP=15,2B帧。

  1. 修改bin目录下的encoder.cfg文件(此处陈列需修改的内容):
# Files
##########################################################################################
InputFile             = "lan_dec.yuv"       # Input sequence
FramesToBeEncoded     = 60      # Number of frames to be coded
SourceWidth           = 320    # Source frame width
SourceHeight          = 180    # Source frame height
OutputWidth           = 320    # Output frame width
OutputHeight          = 180    # Output frame height
##########################################################################################
# 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       = 0     # 0 Disable, 1 Enable
Bitrate                 = 45020 # Bitrate(bps)
RCUpdateMode            = 2     # 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
                                #
  1. 运行命令lencod.exe -d encoder.cfg进行编码
    【数据压缩(十)】H264文件分析2_第7张图片
    【数据压缩(十)】H264文件分析2_第8张图片
  2. 方法同上,继续编码生成符合以下格式的.264文件,此处不再展示。
    GOP=12,2B帧;GOP=9,2B帧;GOP=4,1B帧;GOP=12,无B帧;GOP=1,全I帧。

2.2 相同GOP长度及形状,不同码率编码

lan_dec.yuv文件为例,取GOP=15,2B帧,码率1000000bps。

  1. 修改bin目录下的encoder.cfg文件(在2.1的基础上仅改变码率):
OutputFile            = "1000kb.264"           # Bitstream
RateControlEnable       = 1     # 0 Disable, 1 Enable
Bitrate                 = 1000000 # Bitrate(bps)
  1. 运行命令lencod.exe -d encoder.cfg进行编码
    【数据压缩(十)】H264文件分析2_第9张图片

  2. 方法同上,继续以800kb/s,600kb/s,400kb/s,200kb/s,100kb/s的码率编码。
    800kb/s:
    【数据压缩(十)】H264文件分析2_第10张图片
    600kb/s:【数据压缩(十)】H264文件分析2_第11张图片
    400kb/s:
    【数据压缩(十)】H264文件分析2_第12张图片
    200kb/s:【数据压缩(十)】H264文件分析2_第13张图片
    100kb/s:
    【数据压缩(十)】H264文件分析2_第14张图片

3、分析码流

使用ESEyE软件打开生成的GOP=15,2B帧的test.264文件,分析一组IPBB。

  • I帧
    【数据压缩(十)】H264文件分析2_第15张图片
  • P帧
    【数据压缩(十)】H264文件分析2_第16张图片
  • B帧
    【数据压缩(十)】H264文件分析2_第17张图片
  • B帧
    【数据压缩(十)】H264文件分析2_第18张图片

由以上可知:

  1. I帧全部都是帧内预测;
  2. P帧存在帧间预测和帧内预测,包括部分不编码的P_skip;
  3. B帧存在帧间预测和大量不编码的B_skip。

4、视频质量主观评价

对比只有码率不同的第一帧图片。

码率 图片
1000kbps 【数据压缩(十)】H264文件分析2_第19张图片
800kbps 【数据压缩(十)】H264文件分析2_第20张图片
600kbps 【数据压缩(十)】H264文件分析2_第21张图片
400kbps 【数据压缩(十)】H264文件分析2_第22张图片
200kbps 【数据压缩(十)】H264文件分析2_第23张图片
100kbps 【数据压缩(十)】H264文件分析2_第24张图片

码率改变很大时,视频主观质量相差不大。

5、率失真曲线

以Y分量的PSNR值为y轴,对应码率为x轴作图。
【数据压缩(十)】H264文件分析2_第25张图片
可以初步得出结论:其他参数一致时,码率越高,视频质量越好。但当码率提高到一定程度时,提升效果变得不明显。

四、实验结论

视频编码效果无论从数据上看好坏与否,都要与人眼相匹配。从本次实验可以知道,一味的提升码率并不能持续的提高视频质量,人眼也较难看出质量的提升,同时,这也会造成编码成本的提升。

你可能感兴趣的:(数据压缩,stm32,深度学习)