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

一、实验要求

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

编码原理框图如下:
在这里插入图片描述

2、h264解码

解码原理框图如下:
在这里插入图片描述

三、实验步骤

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进行解码
    在这里插入图片描述
    在这里插入图片描述
    生成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进行解码
    在这里插入图片描述
    在这里插入图片描述
    生成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进行编码
    在这里插入图片描述
    在这里插入图片描述
  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进行编码
    在这里插入图片描述

  2. 方法同上,继续以800kb/s,600kb/s,400kb/s,200kb/s,100kb/s的码率编码。
    800kb/s:
    在这里插入图片描述
    600kb/s:在这里插入图片描述
    400kb/s:
    在这里插入图片描述
    200kb/s:在这里插入图片描述
    100kb/s:
    在这里插入图片描述

3、分析码流

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

  • I帧
    在这里插入图片描述
  • P帧
    在这里插入图片描述
  • B帧
    在这里插入图片描述
  • B帧
    在这里插入图片描述

由以上可知:

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

4、视频质量主观评价

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

码率图片
1000kbps在这里插入图片描述
800kbps在这里插入图片描述
600kbps在这里插入图片描述
400kbps在这里插入图片描述
200kbps在这里插入图片描述
100kbps在这里插入图片描述

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

5、率失真曲线

以Y分量的PSNR值为y轴,对应码率为x轴作图。
在这里插入图片描述
可以初步得出结论:其他参数一致时,码率越高,视频质量越好。但当码率提高到一定程度时,提升效果变得不明显。

四、实验结论

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值