长参考帧LTR
一、LTR是什么
在 RTC 场景下一般的编码参考策略是向前一帧参考(在不考虑 temporal svc 的情况下),因为一般情况下参考距离越近,相似性越好,则压缩效果越好,出于实时的考虑编码只有 I 帧和 P 帧,没有 B 帧。在有 P 帧丢失的场景下,接收端需要重新请求 I 帧才能继续正确的解码和播放。
如果发生弱网导致中间的某个 P 帧(✖️ 标记)丢失,无法恢复,则接收端会请求发送端重新编码 I 帧。
长期参考帧是一种可跨帧的参考帧选择策略,这种策略打破了传统的向前一帧的限制,可以更加灵活地选择参考帧。长期参考帧策略的目的是在有 P 帧丢失的场景下,接收端不需要重新请求 I 帧也能继续正确的解码和播放,其相对于 I 帧可以明显提升编码效率,节省带宽。该技术可以绕过丢失的帧,利用丢失帧之前的一个已经接收的长期参考帧作为参考进行编码 / 解码显示,从而提升弱网场景下的视频流畅性。
上图所示是引入 LTR 技术后的丢帧恢复策略,未发生弱网时仍然是正常的 I P P P 帧编码,只是会将其中的某些 P 帧标记为 LTR 帧(如图中的绿色 P 帧,以下称为 LTR 标记帧)。如果发生弱网中间的某个 P 帧(✖️ 标记)丢失,无法恢复,则接收端会请求发送端(编码器)利用 LTR 恢复,此时编码器会利用之前的已经确认收到的 LTR 标记帧做为参考编出一个 P 帧(图中红色 P 帧,以下被称为 LTR 恢复帧)。
由于之前的 LTR 标记帧已经被解码器确认收到,所以解码器参考帧 buffer 中必然存有此帧,所以利用此帧做参考的红色 P 帧必然可以被解码器正确解码。LTR 恢复帧由于是有参考的 P 帧,所以比 I 帧的编码效率显著提升。
根据上述 LTR 技术的特点和目的,可见 LTR 技术是一种网络模块和编码器共同配合完成的参考帧选择技术。实现 LTR 技术需要有接收端侧反馈信息,即编码器发出的 LTR 标记帧(图中的绿色 P 帧),如果被解码器成功收到,需要解码器通知编码器其收到了这一帧,这样编码器在收到 LTR 恢复请求的时候,才可以 “放心的” 使用此帧做参考。
二、LTR的应用
2.1 节省带宽、提高画质
与关键帧相比,LTR-P 尺寸更小,但质量更高。LTR-P 可以比关键帧小 40% 到 50%,但它提供与 P 帧相似的视频质量(如果离 LTR 不是很远)。下图说明了关键帧和 P 帧之间的潜在差异:
Figure 3: Key frame on the left. LTR-P on the right.
鉴于质量差异,LTR-P 可以成为改善损失恢复的基础。不再需要对每个丢失的数据包进行重传;现在接收器可以根据最后可解码的 LTR 帧请求 LTR-P。在高损耗网络中,这比重传要高效得多。
再者,在一个稳定的视频场景中,高质量的参考帧可以提高后续帧的图像质量。在解码内容相似帧时,可以使参考帧保持更长时间,这样避免在场景稳定的情况下传输另一个参考帧,从而节省传输带宽。 根据视频内容来动态的使用LTR功能,这叫做自适应性LTP。当检测到静态场景时采用LTP, 动态场景关闭LTP。
在视频监控的场景中,稳定的视频占多数,使用LTP会很好的提高视频质量。编码误差不容易扩散。
2.2 RTC场景下抗弱网
总的来说,利用LTR可以避免在弱网环境下频繁的进行I帧请求,降低卡顿率,以及减少对其他下行的影响,感兴趣的读者可以阅读字节和阿里在RTC场景下应用LTR的心得和分享。 developer.volcengine.com/articles/72…
mp.weixin.qq.com/s?__biz=MjM…
mp.weixin.qq.com/s?__biz=MjM…
三、参考
www.cnblogs.com/VideoCloudT…
cloud.tencent.com/developer/a…
zhuanlan.zhihu.com/p/103542912