HEVC 视频的 P 帧可以在流式传输中丢失吗?
Can P frame of HEVC video be dropped on streaming?
我正在不可靠的网络上使用 HEVC encoding/decoding 创建一个直播应用程序。
HEVC 中有 IDR/I/P/B 帧类型可用,我从中使用 IDR 和 P 帧,因为源视频是实时捕获的,并且从捕获设备到显示的延迟很关键。
由于网络不可靠,需要预料到流式传输中的任何帧都可能丢失。
为了避免解码后的图像出现锯齿,我按如下方式实现了接收器:
- 1个IDR帧和29个P帧在正常操作下(=总共30fps)
- 如果 IDR 帧被丢弃,即将到来的 P 帧不会传递给解码器并等待新的 IDR 帧
- 如果P帧被丢弃,则跳过该帧并将下一个接收到的帧传递给解码器
这个过程来自于我的理解,P帧是指最新的IDR帧,所以任何P帧都可以被丢弃,而任何IDR帧都不能被丢弃。
然而,解码后的图像仍然有锯齿(看起来解码器无法补偿运动矢量)
我想到了以下问题:
- P帧是指最后的IDR帧是真的吗?或者任何帧(包括 IDR/I/P/B)不能在规范中的 HEVC 上丢弃?
- 有什么方法可以避免在不可靠的网络上流式传输解码视频时出现锯齿?
非常感谢您!
P帧可以引用其他P帧。你不能放弃他们。您可以使用参考帧失效来强制它们仅参考 IDR,但这会提高 bitrate/decrease 图像质量。
我正在不可靠的网络上使用 HEVC encoding/decoding 创建一个直播应用程序。 HEVC 中有 IDR/I/P/B 帧类型可用,我从中使用 IDR 和 P 帧,因为源视频是实时捕获的,并且从捕获设备到显示的延迟很关键。
由于网络不可靠,需要预料到流式传输中的任何帧都可能丢失。 为了避免解码后的图像出现锯齿,我按如下方式实现了接收器:
- 1个IDR帧和29个P帧在正常操作下(=总共30fps)
- 如果 IDR 帧被丢弃,即将到来的 P 帧不会传递给解码器并等待新的 IDR 帧
- 如果P帧被丢弃,则跳过该帧并将下一个接收到的帧传递给解码器
这个过程来自于我的理解,P帧是指最新的IDR帧,所以任何P帧都可以被丢弃,而任何IDR帧都不能被丢弃。
然而,解码后的图像仍然有锯齿(看起来解码器无法补偿运动矢量)
我想到了以下问题:
- P帧是指最后的IDR帧是真的吗?或者任何帧(包括 IDR/I/P/B)不能在规范中的 HEVC 上丢弃?
- 有什么方法可以避免在不可靠的网络上流式传输解码视频时出现锯齿?
非常感谢您!
P帧可以引用其他P帧。你不能放弃他们。您可以使用参考帧失效来强制它们仅参考 IDR,但这会提高 bitrate/decrease 图像质量。