HEVC视频的P帧可以在流中丢弃吗?

时间:2020-01-10 02:24:04

标签: udp video-streaming live-streaming hevc real-time-data

我正在使用HEVC编码/解码在不可靠的网络上创建直播应用程序。 HEVC中有IDR / I / P / B帧类型,由于源视频是实时捕获的,并且捕获设备到显示器的延迟至关重要,因此我使用IDR和P帧。

由于网络不可靠,因此需要预期流中的任何帧都可能会丢失。 为了避免使解码的图像变得锯齿,我按如下方式实现了接收器:

  1. 在正常操作中,以秒为单位1个IDR帧和29 P帧(总计= 30fps)
  2. 如果IDR帧丢失,则即将出现的P帧不会传递给解码器,而是等待新的IDR帧
  3. 如果丢弃了P帧,只需跳过该帧并将下一个接收到的帧传递给解码器

此过程是基于我的理解,即P帧引用了最新的IDR帧,因此可以删除任何P帧,而不能删除任何IDR帧。

但是,解码后的图像仍然参差不齐(看起来解码器无法补偿运动矢量)

以下是我想到的问题:

  • P帧是否引用了最后的IDR帧,这是真的吗?还是规范中不能将任何帧(包括IDR / I / P / B)放在HEVC上?
  • 有什么方法可以避免在不可靠的网络上流式传输时解码视频中的锯齿现象?

非常感谢您!

1 个答案:

答案 0 :(得分:2)

P帧可以引用其他P帧。您不能丢下它们。您可以使用参考帧无效来强制它们仅参考IDR,但这会提高比特率/降低图像质量。