【数据压缩实验八】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、生成率失真曲线

实验原理

H.264和先前的标准一样,都采用变换编码、基于运动补偿的帧间预测和熵编码的混合框架,大的不同是增加了帧内预测,变换采用整数变换,熵编码采用自适应的方法。

在这里插入图片描述

实验过程

将两个264文件进行解码,得到相应的YUV文件:

修改decoder.cfg中的文件名字参数:
在这里插入图片描述
修改命令行参数:
在这里插入图片描述
运行程序,得到demo_dec.yuv文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同样的步骤得到highwayqcif_dec.yuv在这里插入图片描述
将视频序列编码为.264文件

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

修改命令行参数:
在这里插入图片描述
修改encoder.cfg中的参数:(GOP=15,间隔2B帧,码率1000kbps

(列出的修改参数可能不全)

# Files

InputFile             = "highwayqcif_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

TraceFile             = "trace_enc.txt"      # Trace file 
ReconFile             = "highwayqcif_rec.yuv"       # Reconstruction YUV file
OutputFile            = "highwayqcif152B.264"           # Bitstream
StatsFile             = "stats.dat"          # Coding statistics file

NumberOfViews         = 1                     # Number of views to encode (1=1 view, 2=2 views)
View1ConfigFile       = "encoder_view1.cfg"   # Config file name for second view
# Encoder Control

IDRPeriod             = 15   # Period of IDR pictures (0=only first)
# Error Resilience / Slices

PrimaryGOPLength      = 15   # GOP length for redundant allocation (1-16)
                             # NumberReferenceFrames must be no less than PrimaryGOPLength when redundant slice enabled
#Rate control

RateControlEnable       = 1     # 0 Disable, 1 Enable
# B Slices

NumberBFrames          = 2  # Number of B coded frames inserted (0=not used)
Bitrate                = 1000000 # Bitrate(bps)

GOP=15,2B帧 结果:
在这里插入图片描述
在这里插入图片描述

GOP=12,2B帧 结果:
在这里插入图片描述
GOP=9,2B帧 结果:在这里插入图片描述
GOP=4,1B帧 结果:在这里插入图片描述
GOP=12,无B帧 结果:在这里插入图片描述
GOP=1,全I帧 结果:
在这里插入图片描述
2.相同的GOP长度及形状,不同的码率
选定GOP=15,2B帧,码率分别为:1000kb/s, 800kb/s,600kb/s,400kb/s,200kb/s,100kb/s.

1000kb/s:
在这里插入图片描述
800kb/s:
在这里插入图片描述
600kb/s:
在这里插入图片描述
400kb/s:
在这里插入图片描述
200Kb/s:
在这里插入图片描述
100kb/s:
在这里插入图片描述
率失真曲线:
在这里插入图片描述
1000kb/s:
在这里插入图片描述
800kb/s:
在这里插入图片描述
600kb/s:
在这里插入图片描述
400kb/s:
在这里插入图片描述
200kb/s:
在这里插入图片描述
100kb/s:
在这里插入图片描述

实验结论

固定的GOP长度及形状,码率越高,图像质量越好,但人眼看这些不同码率的图像感觉不出太大的差别,编码的成本却提升了很多。所以在考虑码率时,应该考虑到人眼的主观感受,以平衡图像质量和编码成本。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值