【问题标题】:Live Streaming Performance with HLS - What does it mean to increase the live window for a stream?使用 HLS 的实时流媒体性能 - 增加流的实时窗口意味着什么?
【发布时间】:2021-06-19 17:05:13
【问题描述】:

我目前正在尝试通过“增加实时窗口”来改善实时流性能/重新缓冲问题,以避免太靠近流的实时边缘;但是我真的不明白增加实时窗口意味着什么,或者我什至会在哪里这样做(我猜清单文件中有一些东西?)。我了解 HLS 是什么以及它是如何工作的(大部分情况下),但我显然在这里遗漏了一条有价值的信息。

我一直在做研究,发现了以下实时窗口建议:

如果想要阻止它们,唯一的方法可能是手动将实时缓冲区的边缘及时设置回几秒钟。

  • android - 在exoplayer hls docs 中 -> 创建高质量的 HLS 内容(最后一个标题/页面底部):

提供一个长寿命的窗口。一分钟或更长的时间很棒

太棒了!是的,这些建议是有道理的。离实时边缘太近不一定是最好的主意..尤其是对于那些网络连接不佳的人;但是现在,我们该怎么做呢?

感谢您的帮助,cmets ..etc!

【问题讨论】:

  • 所以,回到这个.. 我几乎可以肯定实时窗口是指流的播放列表(称为滑动窗口:developer.apple.com/documentation/http_live_streaming/…)。根据我的阅读,听起来窗口的持续时间是播放列表中所有片段持续时间的总和:因此,如果您在 10 秒时有 5 个片段,那么实时窗口的持续时间为 50 秒。

标签: android ios avplayer http-live-streaming exoplayer


【解决方案1】:

根据您的目标,直播性能可能意味着不同的事情:

  • 如果您的目标是尽量减少由于下载视频延迟而导致缓冲或暂停播放的可能性,那么在开始播放之前缓冲更多的流将有助于解决此问题。
  • 如果您的目标是减少延迟,例如为了使直播体育赛事尽可能接近实时,您通常会希望尽快开始播放。

很有帮助的是,如果被问到,您经常会发现客户和客户都想要两者。一些基于 CMAF 协议的最新低延迟方法有助于实现这一点,但最终,缓冲与延迟通常总是需要权衡取舍。

专注于第一个,然后我认为您在上面和评论中的理解是正确的 - 从本质上讲,在清单中提供更大的片段集将允许播放器在开始播放之前选择更多缓冲。

例如,从您上面提到的链接修改清单,此清单提供播放器信息以允许它最多请求 3 个片段:

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.0,
fileSequence1.ts
#EXTINF:10.0,
fileSequence2.ts
#EXTINF:10.0,
fileSequence3.ts

虽然这个提供了 6 个片段的信息:

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.0,
fileSequence1.ts
#EXTINF:10.0,
fileSequence2.ts
#EXTINF:10.0,
fileSequence3.ts
#EXTINF:10.0,
fileSequence4.ts
#EXTINF:10.0,
fileSequence5.ts
#EXTINF:10.0,
fileSequence6.ts

请注意,如果播放器检测到或以某种方式知道它与流的连接质量良好,则播放器可以简单地提前开始播放,例如在一两个片段之后。

还值得注意的是,“实时窗口”一词在不同的上下文中可能有多种含义。

如上所述,一个关键的解释显然是服务器保持给定段的可用性以允许客户端下载它的时间量。随着实时清单的修改和旧段的退出,它们保留多长时间或保留多少,是最明显的“窗口”。

了解“窗口”在多长时间内服务器将尊重对给定段的请求在它下降到清单后也很有用。这显然是竞争条件的关键,但对于 'CatchUp' 或 'Start Over' 类型的服务也很重要,具体取决于它们的实现方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多