【实验】H.264编码实验

H.264编解码框图

编码:
在这里插入图片描述

解码:
在这里插入图片描述

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

利用网站链接: https://www.convertfiles.com/convert/video/可以将mp4文件转为264文件

我生成了两个264文件
在这里插入图片描述
修改bin目录下的decoder.cfg文件,修改以下内容:

InputFile             = "use1.264"       # H.264/AVC coded bitstream
OutputFile            = "use1.yuv"   # Output file, YUV/RGB

将生成的264文件转为yuv文件,将生成的264文件放到bin目录下,在命令行中打开bin目录,运行命令 ldecod.exe -d decoder.cfg

运行效果如下在这里插入图片描述
在这里插入图片描述

2.将视频序列编码为264文件

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

GOP=15,2B帧;
修改bin目录下的encoder.cfg
应修改如下部分:

# Files
InputFile             = "use1.yuv"       # Input sequence
SourceWidth           = 640    # Source frame width
SourceHeight          = 360    # Source frame height
SourceResize          = 0      # Resize source size for output
OutputWidth           = 640    # Output frame width
OutputHeight          = 360    # Output frame height
FramesToBeEncoded     = 30      # Number of frames to be coded
ReconFile             = "use1_reconstruct.yuv"       # Reconstruction YUV file
OutputFile            = "use1_1.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)

在命令行中打开bin目录,运行命令 lencod.exe -d encoder.cfg
在这里插入图片描述
剩下的修改方式类似,于是就在此不赘述了。
GOP=12,2B帧,
GOP=9,2B帧,
GOP=4,1B帧,
GOP=12,无B帧,
GOP=1,全I帧

(二)相同的GOP长度及形状,不同的码率

以GOP=15,2B帧为例修改生成不同不同码率
修改bin目录下的encoder.cfg
修改如下部分:

# Files
InputFile             = "use1.yuv"       # Input sequence
SourceWidth           = 640    # Source frame width
SourceHeight          = 360    # Source frame height
SourceResize          = 0      # Resize source size for output
OutputWidth           = 640    # Output frame width
OutputHeight          = 360    # Output frame height
FramesToBeEncoded     = 30      # Number of frames to be coded
ReconFile             = "use1_reconstruct_2.yuv"       # Reconstruction YUV file
OutputFile            = "use1_2.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)

RateControlEnable       = 1     # 0 Disable, 1 Enable
Bitrate                 = 1000000 # Bitrate(bps)

在命令行中打开bin目录,运行命令 lencod.exe -d encoder.cfg
结果如下:
在这里插入图片描述

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

以GOP=15,2B帧为例
第17帧的编码模式如下图:
在这里插入图片描述
在这里插入图片描述

查看运动矢量首先要打开MB Motion Vectors
在这里插入图片描述

运动矢量信息包括在下图中:

在这里插入图片描述

4.用播放器观看所生成码流的质量

下图为参数:GOP=15,2B帧,45020bps
在这里插入图片描述
下图为参数:GOP=15,2B帧,1000000bps
在这里插入图片描述
下图为参数:GOP=15,2B帧,800000bps
在这里插入图片描述

5.生成率失真曲线

码率为1000000bps的y分量psnr值为46.642
在这里插入图片描述
码率为800000bps的y分量的psnr值为42.292
在这里插入图片描述
码率为450200bps的y分量的psnr值为42.016
在这里插入图片描述
matlab程序如下:
在这里插入图片描述

利用matlab绘出率失真曲线如下,剩下的一些数值实验顺序类似上面,所以只做了这一组率失真曲线
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值