视频介绍4-H264编码

举报
Higeeon 发表于 2019/04/21 22:07:18 2019/04/21
【摘要】 H.264/MPEG-4第十部分,或称AVC(Advanced Video Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。虽然HEVC受到很多青睐,但是由于当前很多在网设备,如电视以及部分电视盒子对于hevc并没有做到很好地支持,而大部分设备,就算年代稍久远的设备,也大多能支持H.264,为此,本文重点介绍H.264。 ...


        H.264/MPEG-4第十部分,或称AVC(Advanced Video Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。虽然HEVC受到很多青睐,但是由于当前很多在网设备,如电视以及部分电视盒子对于hevc并没有做到很好地支持,而大部分设备,就算年代稍久远的设备,也大多能支持H.264,为此,本文重点介绍H.264。


        图像的大小(分辨率)和帧率是影响实现编解码所需处理能力和存储空间的主要因素。H264定义了16种不同的级别,主要受限于图像大小和帧率,也就是指某个视频分辨率,理论上建议最大值的帧率。级别也对参考帧数以及可用的最大压缩比特率(码率)提供了约束建议。每个级别定义了比特流的上界和解码器能力的下限。

1.png


        不同的视频标准虽然存在差异,但是很多标准都使用了共同的工具,比如基于运动降低时间冗余、基于变换降低空间冗余。这些工具形成的视频编码器可以分为两类,一类包括自适应帧内预测,另外一类没有这种模式。而H.264是属于前一种,帧内预测、帧间预测、变换工具和熵编码在其中扮演着重要的角色。


        H264中定义了三种帧,I帧、P帧、B帧。帧内压缩是生成I帧的算法,帧间压缩是生成B帧和P帧的算法。

        1)I 帧,关键帧

        完整编码的帧,信息完整保留的帧,解码时只需要此帧数据就可以完成,第一帧就是I帧。使用帧内压缩,不依赖其它帧,随机存取的入点,同时是解码的基准帧。I 帧主要用于接收机的初始化和信道的获取,以及节目的切换和插入,I 帧图像的压缩倍数相对较低。I 帧图像是周期性出现在图像序列中的,出现频率可由编码器选择,也可以简单地认为两个I帧就是一组GOP。


        2)P 帧,帧间编码或帧内编码

        P 帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P 帧图像中可以包含帧内编码的部分,即 P 帧中的每一个宏块可以是前向预测,也可以是帧内编码。


        3)B 帧,双向差别帧,帧间编码

        B帧图像采用双向时间预测,可以大大提高压缩倍数。B帧参考前后的帧编码,要解码,不仅要取得之前缓存的画面,还要解码之后的画面,通过前后帧的相关数据取得最终画面。值得注意的是,由于 B 帧图像采用了未来帧作为参考,因此 MPEG-2 编码码流中图像帧的传输顺序和显示顺序是不同的。

以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧,最后将I帧数据与预测的差值信息进行存储和传输。


        几个关键定义:

        1)GOP即Group of picture(图像组),指两个I帧之间的距离。

        2)Reference(参考周期)指两个P帧之间的距离

        3)下图中,GOP=6,Reference=2


image.png

I帧与B P帧的关系


        从上面的GOP和Reference定义中可以看到,在码率不变的前提下,GOP值越大,P、B帧的数量会越多,画面细节更多,也就更容易获取较好的图像质量,但是相应文件也变大了;Reference越大,B帧的数量越多,也更容易获得较好的图像质量。

    

        通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧。在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP开始,即下一个I帧,才有可能得以恢复。因此,GOP值也不宜设置过大。


        由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响视频播放时的Seek操作(找I帧)的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,seek响应的时间也越长。


        编码中另外一个关键的内容就算pts和dts,因为如果这两个值设置不合适,将导致在播放时声音画面不同步。但是pts和dts将放到后续再介绍


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。