cacti不能实时刷新流量图_介绍一种编码帧内刷新算法

0.引言

本文主要介绍一种帧内刷新算法,解决I帧太大带来的延迟问题,可以在调优时,值得借鉴。

帧内刷新技术避免 I 帧尖峰带来的带宽压力,可以有效地降低视频通信中的缓冲区延迟。帧内刷新算法是一种视频错误恢复的方法,通过对部分宏块或者整帧采用强制帧内编码的模式,从而断开连续的帧间预测,所以之后的视频帧不会再依赖之前的帧信息执行解码操作,达到替代关键帧实现错误恢复的目的。

1.帧内刷新介绍

帧内刷新方法主要有随机帧内刷新、自适应帧内刷新以及周期性帧内刷新技术。随机帧内刷新在 P 帧中随机选择一部分 CTU 块进行帧内编码,因为该算法对帧内刷新块的选择是随机的,所以效率较为低下,该方法虽然降低了编码效率,但是对错误恢复能力的增加却非常有限。自适应的帧内刷新技术主要是通过算法挑选感兴趣区域的 CTU 块进行强制帧内编码,虽然该方法可以取得不错的效果,但是现有的算法都比较复杂(如果能够有这种计算力,实际也是可以使用),不利于实时视频通信系统的实现。

周期性帧内刷新算法由于其简单性和实用性被许多优秀的开源编码器(如x264,x265等采用。在进行低延迟编码时,视频帧在 PIR 指定的刷新周期内被完全刷新,同样对于每一帧,都有固定的宏块进行帧内编码,从而获得比插入关键帧更平稳的比特率。在多媒体传输过程中,该方法并不使用关键帧来恢复传输中发生的错误,因此可以在提供低延迟特性的条件下又具备较好的容错性,相比随机帧内刷新更加有效。

周期性帧内刷新算法是通过将帧内编码的columns 按照顺序依次插入到每个P帧中来完成的。在该刷新方案中,首先根据给定的刷新周期大小 N 将整个帧划分成 N 个区域。在

后面的编码过程中,这些区域依次使用强制帧内编码模式进行编码。已经采用帧内编码的区域称为清洁区域(clean region),而正在进行帧内编码(下图中的 intra coded region)和尚未进行帧内编码的区域都属于脏区域(dirty region)。在编码模式的判决过程中,编码器首先需要判断待编码块是否位于需要采用帧内编码的区域,然后决定是否进行强制帧内编码。整个视频帧在一个刷新周期可以被完全刷新,从而具备错误恢复的能力,可以有效地避免错误的传播。例如,如果第一帧的第二列发生错误,则在第二帧中,第二列将使用帧内编码模式进行编码,因此可以立即消除错误。周期性帧内刷新算法如下图:

ce3a68460b912e5a04a8cfb06403c7c2.png

但是只是采取上述刷新策略并不能完全恢复错误。在上图中,当第一帧的第二列发生错误时,第二帧中的第二列使用帧内编码模式进行编码可以消除错误。但是当第二帧第一列中边界附近的宏块参考了第一帧第二列的数据时,则该错误仍然会在随后的帧中传播。当视频的运动方向与帧内刷新方向相反时,这种情况会频繁发生。因此为了保护清洁区域,在 PIR 方法中,除了上述对 columns 进行依次刷新的操作之外,还需要对已刷新区域进行搜索范围的限制。也就是说,清洁区域不能参考脏区做运动估计,但是脏区可以使用先前帧的任何位置作为参考。帧内刷新方向如下图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值