前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >视频压缩编码技术(H.264) 之SP/SI帧

视频压缩编码技术(H.264) 之SP/SI帧

作者头像
瓜大三哥
发布2018-10-08 16:01:06
4.2K0
发布2018-10-08 16:01:06
举报
文章被收录于专栏:瓜大三哥

当前视频编码标准主要包括三种的帧类型:I帧、P帧和B帧。随着H.264/AVC为了顺应视频流的带宽自适应性和抗误码性能的要求,又定义了两种新的帧类型:SP帧和SI帧。

SP帧编码的基本原理同P帧类似,仍是基于帧间预测的运动补偿预测编码,两者之间的差异在于SP帧能够参照不同参考帧重构出相同的图像帧。充分利用这一特性,SP帧可取代了I帧,广泛应用于流间切换(bitstreamswitching)、拼接(splicing)、随机接入(randomaccess)、快进快退(fastforward,fastbackward)以及错误恢复(errorrecovery)等应用中,同时大大降低了码率的开销。与SP帧相对应,SI帧则是基于帧内预测编码技术,其重构图像和对SP的重构图像完全相同。

SP帧的编码效率尽管略低于P帧,但却远远高于I帧,大大改善了H.264的网络亲和性,支持灵活的流媒体服务应用,具有很强的抗误码性能,适应在噪声干扰大、丢包率高的无线信道中传输。

01

SP/SI 帧的应用

视频流传输已经成为了“尽力而为”的因特网和无线网络的基本应用,而网络传输条件是时变的。正是为了满足视频流切换的需求,H.264 提出了SP/SI 帧技术,从而解决视频流应用中终端用户可用带宽不断变化、不同内容节目拼接时数据量的激增、快进快退以及错误恢复等问题。

流间切换

视频服务器应该可以根据网络条件,调整编码码率,实现带宽的自适应性。这涉及会话业务和流业务两种应用场合。其中会话业务的特点是实时编解码、点对点传输,一般根据解码端的反馈信息,调整码率或帧率;而流业务的特点是非实时编解码,这往往采用预先编码出不同质量和带宽要求的视频码流。

下面主要以流业务的应用为例,众所周知,实现带宽自适应的最好方法是设置多组不同的信源编码参数对同一视频序列分别进行压缩,从而生成适应不同质量和带宽要求的多组相互独立的码流。

这样,视频服务器只需在不同的码流间切换,以适应网络有效带宽的不断变化。

设{P1,n-1,P1,n,P1,n+1}和{P2,n-1,P2,n,P2,n+1} 分别是同一视频序列采用了不同的信源编码参数编码所得到的两个视频流。由于编码参数不同,两个码流中同一时刻的帧,如P1,n-1 和P2,n-1,并不完全一样。假设服务器首先发送视频流P1,到时刻n 再发送视频流P12,则解码端接收到的视频流为{P1,n-2,P1,n-1,P2,n,P2,n+1,P2,n+2}。在这种情况下,由于接收的P2,n 应使用的参考帧应该是P2,n-1 而不是P1,n-1,所以P2,n 帧就不能完全正确地解码。在以往的视频压缩标准中,实现码流间的切换功能时,确保完全正确解码的前提条件是切换帧不得使用当前帧之前的帧信息,即只使用I 帧。在实际的流业务码流切换中,往往通过周期性地放置I 帧确实能实现流间切换等功能,但I 帧的插入势必造成视频流数据量增大,增加传输带宽的要求。

从SP 帧的特性可知,使用不同的参考帧作预测,也可以得到完全相同的解码帧。这一特点正好适用于流间切换。如下图所示中,视频流明确的切换点处放置主SP 帧(Primary SP-frames)—S1,n帧和S2,n 帧。在不同编码参数的视频流间进行切换时,发送与主SP 帧相对应的辅SP 帧(SecondarySP-frames)—S12,n。当然信源编码部分根据需要插入SP/SI 帧,也适当增加了编码的复杂度。

02

拼接(Splicing)与随机接入(Random Access)

上述流间切换的例讨论了同一图像序列、不同编码参数压缩编码的流间切换。然而,实际的流间切换的应用并不单单如此。例如,关注同一事件而处于不同视角的多台摄像机的输出码流间的切换和电视节目中插入广告等,这就涉及到拼接不同图像序列生成码流的问题。由于各个码流来自于不同的信源,帧间缺乏相关性,切换点处的辅帧如果仍采用帧间预测的辅SP 帧,编码效率就不会那么有效,而应采用空间预测的SI 帧——SI2,n 帧。

综上所述,SP 帧与SI 帧均可用于流间切换。当视频流的内容相同,编码参数不同采用SP 帧;而当视频流的内容相差很大时,则采用SI 帧将更加有效。

03

错误恢复

采用不同的参考帧预测,可以获得同一帧的多个SP 帧,利用这种特性可以增强错误恢复的能力。如图所示,正在进行视频流传输的比特流中的一个帧P1,n-1 无法正确解码,得到用户端反馈的错误报告后,服务器就可以发送其后最邻近主SP 帧的一个辅SP 帧—S12,n,以避免错误影响更多后续帧,S12,n 帧的参考帧是已经正确解码的帧。当然,用户端也可以使用辅SI 帧—SI1,n 来实现相同的功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档