H.264以及编码调试

H.264以及编码调试

一、H.264编码原理

H.264相比于之前讲过的MPEG-2来说,注重实用,采用更成熟的技术,要求更高的编码效率和简洁的表现形式。与此同时,在混合编码器的基本框架下,H.264对MPEG-2中的主要关键模块都进行了重大改进。但是,H.264标准的预测、变换、量化、熵编码等基本模块和MPEG-2并没有太大的区别,变化主要体现在功能模块的具体细节上。

1. H.264的特点
  • 压缩比高:在同等图像质量的条件下,采用H.264技术压缩后的码流,数据量只有MPEG-2的1/2;
  • 容错率高:H.264码流具有较强的抗误码特性,可适应丢包率高、干扰严重的信道,如IP和无线网络;
  • 网络适应性强:H.264提供了网络适应层,使得H.264的文件能容易地在不同网络上传输;
  • 计算复杂度高:H.264使用较高的计算复杂度,换取优越的性能,其复杂度相当于MPEG-2的2—3倍。
2. H.264和其他MPEG-2编码标准的差异:
  1. 帧内预测
    在空间域内进行帧内预测,提高帧内编码的精确度。
  2. 运动估计和运动补偿
    不同尺寸的块和形状,高分辨率的子像素运动估计,选择多个参考帧
  3. DCT变换
    使用整数的DCT变换
  4. 去块效应滤波
    为消除块效应,增加了自适应消块滤波器
  5. 熵编码技术
    通用变长编码(UVLC),基于上下文的自适应变长码编码(CAVLC),基于上下文的自适应二进制算术编码(CABAC)

二、H.264解码器

修改decoder.cfg文件中的输入文件和输出文件:

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

可将.264文件解码为.yuv文件:

三、H.264编码

在进行实验前,我们先搞清一些参数:

  • InputFile/OutputFile/ReconFile:输入文件/输出文件(.264)/重建文件(.yuv)
  • SourceWidth/SourceHight/OutputWidth/OutputHeigh:输入、输入视频序列的宽、高
  • FramesToBeEncoded:帧数
  • IntraPeriod:GOP内I帧的周期
  • IDRPeriod:IDR帧的周期,表示GOP长度
  • EnableIDRGOP:表示是否允许IDR帧
  • Bitrate:比特率
  • NumberBFrames:两个I/P帧之间B帧的数目
  • PrimaryGOPLength:冗余分配的GOP长度

设定IntraPeriod = 0,PrimaryGOPLength = IDRPeriod(控制变量法)

分别选择比特率为40、80、200、500、1000 kbps,再对每一比特率各自分别设置GOP格式为GOP15(2B)、GOP12(2B)、GOP9(2B)、GOP4(1B)、GOP12(no B)和GOP1(all I)进行编码。

GOP1(all I):

1000:

image-20200904232542819

500:

image-20200904232659945

200:

image-20200904232746329

80:

image-20200904232842929

40:

image-20200904232909863

GOP12(no B):

1000:

image-20200904233630752

500:

image-20200904233431238

200:

image-20200904233346751

80:

image-20200904233254705

40:

image-20200904233155714

GOP4(1B):

1000:

image-20200904234536917

500:

image-20200904234837813

200:

80:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNk3Vftt-1599267817290)(/Users/yaohaoyuan/Library/Application%20Support/typora-user-images/image-20200904235013500.png)]

40:

在这里插入图片描述

GOP9(2B):

1000:

500:

在这里插入图片描述

200:

在这里插入图片描述

80:

在这里插入图片描述

40:
在这里插入图片描述

GOP12(2B):

1000:

在这里插入图片描述

500:

在这里插入图片描述

200:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cH4TMnE7-1599267496989)(/Users/yaohaoyuan/Library/Application Support/typora-user-images/image-20200905000316435.png)]

80:

在这里插入图片描述

40:
在这里插入图片描述

GOP15(2B):

1000:

在这里插入图片描述

500:
在这里插入图片描述

200:
在这里插入图片描述

80:

在这里插入图片描述

40:

在这里插入图片描述

四、结果分析

1. 码流分析

用Elecard StreamEye Tools码流分析软件对编码后的内容进行分析。

以GOP15(2B)的情况为例:

在这里插入图片描述

图中,红、蓝、绿分别表示I、P、B帧,我们可以清楚看到编码后视频的码流结构并且可以看到有帧重排(显示顺序为IBBPBBPBBPBBPBP)。

我们截取其中四帧进行分析:

在这里插入图片描述

红、橙:帧内编码 黄:与前一帧相同,跳过编码 绿:前项预测 蓝:双向预测

可看出:

  • I帧使用帧内编码,无运动矢量,B、P帧中都可看到运动矢量
  • 4帧的背景大体都相似,因而背景部分均没有进行编码
  • 通过宏块分界线我们还可以看到H.264中不同形状、不同大小的宏块,且在低频区域的宏块更大。这也是前面提到的H.264采用的先进技术之一(感谢zsz同学提醒)
2.视频差异分析

在这里插入图片描述

3.视频质量评估

将前文中得到的实际码率和Y-PSNR整理到一个表格中,得到如下图所示的表格:

在这里插入图片描述

根据上述表格中的数据作图,如下图所示:
在这里插入图片描述

从图中可以得到(折线的标签不知道为什么总是打不出来),在码率相同的前提下,视频质量大体情况由好到差为:GOP12 (0B) > GOP15 (2B) > GOP12 (2B) > GOP9 (2B) > GOP4 (1B) > GOP1 (all-I)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值