自适应流媒体库(shaka / dash.js)无法清除搜索中的缓冲视频?

问题描述 投票:0回答:1

似乎大多数自适应流媒体播放器会在您寻找时(到未缓冲的时间)清除整个缓冲区。甚至youtube - 例如播放YouTube视频,提前几分钟,然后回到原始位置。由于视频必须重新加载,因此会略有延迟

dash.js和shaka的行为方式相同,并没有简单的方法来改变它们

我有点能够通过nooping this function对DASH.js进行修补并且有效 - 但是会导致一些不良行为,比如低比特率段被缓冲,即使带宽过多也不会升级

如果您正在流式传输简单的mp4,Chrome实际上会默认缓冲多个范围,但这不是DASH /自适应。有谁知道支持这个的DASH实现?

video-streaming html5-video mpeg-dash shaka
1个回答
1
投票

我不知道,但我会详细说明Shaka Player为什么不这样做。

当您不清除缓冲区时,浏览器具有多个缓冲内容范围。跟踪哪些区域被缓冲以及哪些区段映射到这些区域是很复杂的。跟踪我们追加的最后一段并从那里向前移动要简单得多。如果我们正在向前播放并且击中已经缓冲的区域,我们将需要跟踪哪些段与该缓冲范围相关联,以便我们可以从中断的地方继续。这不是不可能的,但重新开始就简单得多了。

浏览器限制了我们可以缓冲的内容量。所以我们清除了远远落后于播放头的内容。这将擦除已缓冲区域的部分。因此,如果有一个30-50的区域映射到我们已经缓冲的6-8区段;如果我们清理一些数据并且现在只有40-50缓冲,我们不知道哪些段仍然是缓冲的。请注意,我们不能总是从清单中查看时间来确定哪些时间映射到哪些段,因为它可能不准确。

我们跟踪我们在播放头之前缓冲了多少以避免过多地缓冲(再次因为浏览器限制)。具有多个缓冲范围会使我们计算它的方式变得复杂。特别是因为当我们顺序追加细分时,也可能存在差距。所以我们不能只看当前范围的结束来确定我们缓冲了多少。另外,在视频结尾处有大量高清缓存对我们开始时没有帮助,所以我们需要清除它以腾出空间。

你还提到低质量的细分市场永远不会消失。这也会发生在Shaka Player中。我们永远不会替换已下载的细分。这又是为了简单起见(并且只有在暂停时才会合理地发生)。因此,当我们访问已经缓冲的区域时,即使我们可以下载HD,我们也会跳过它。尝试确定哪个流顺序播放以保持实时播放是很困难的;添加到必须确定我们是否有足够的额外来替换已经缓冲的内容将是太复杂。

© www.soinside.com 2019 - 2024. All rights reserved.