减少 HLS 流 FFMPEG 的延迟

par*_*rsa 3 streaming ffmpeg video-streaming http-live-streaming

我通过 ffmpeg 使用了 hls 流。
在开始流延迟存在几秒钟。
当我想在非常延迟的情况下从流中的 4k 视频中进行串流时。
我能做什么?

Bra*_*rad 8

4k 视频

...

在开始流延迟存在几秒钟

是的,当然可以。缓冲足够的数据以播放非常高的比特率需要时间。不仅如此,您的 HLS 播放器通常在解码甚至开始之前需要几个片段。正如@iangetz 所说,您可以减少段长度,但现在由于所有额外的 HTTP 请求,您将有更多的开销。

减少 HLS 流的延迟

不要使用 HLS。HLS 和任何其他分段流协议(如 DASH)都针对低延迟进行了优化。它针对 HTTP CDN 的重用、可以在网络变化(例如从 WiFi 到 LTE 时)继续存在的播放以及客户端可选择(通常是动态的)质量进行了优化。

分段协议的本质要求将相对较大的缓冲区分块,然后单独上传到服务器/CDN。这真的很有用,但如果您需要低延迟,这不是一个好的折衷方案。

如果延迟对您很重要,那么您需要一种完全不同的技术。看看 WebRTC。使用这项技术,实时视频流,编解码器针对延迟而不是质量进行了优化,并降低了可靠性以支持延迟。它还需要对分销基础设施进行大量投资。

我无法想象一个关心 4k 视频的人认为质量下降值得为低延迟进行权衡的情况。你不可能拥有你想要的一切……你必须选择对你真正重要的东西并从那里优化。如果您想要低延迟,您将不得不降低质量并在基础设施上花费大量金钱和时间来支持这项工作。如果你想要高质量和可靠的流,你可以保持良好的编码参数,同时使用 DASH(或 HLS)在现有的基于 HTTP 的 CDN 上进行分发。