dash.js - 为什么要获得BUFFER_EMPTY事件?

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

无论我如何尝试在dash.js播放器中配置实时流,偶尔我会得到BUFFER_EMPTY事件('bufferStalled'),然后播放暂停并重新缓存。

它以某种方式与“缓冲级别”相关,但我无法配置缓冲级别以使其不会下溢。从日志/事件中我看到“缓冲水平”在10秒左右反弹,但有时会下降到0.5,低于此值会触发bufferStalled事件并中断播放。我从局域网播放视频内容,因此网络状况良好。

知道如何配置它以获得稳定的视频流吗?

mpeg-dash dash.js
1个回答
0
投票

问题可能在于服务器流以及可用的比特率 - 它需要一些测试。

当玩家看到低缓冲时,它通常会切换到较低的比特率,以便更好地通过网络获取流(简单来说 - 请参阅下面的详细信息)。可能是其中一个较低的流实际上在您的打包程序或流服务器上存在问题。显然,没有测试就很难说。

它还值得考虑段长度 - 较短的段使一般规则更容易快速切换。

和。即使它是局域网,主机上的局域网流量甚至其他活动仍然是一个因素。

如果你只想看看dash.js缓冲是如何工作的,那么这里有一个很好的指南:https://github.com/Dash-Industry-Forum/dash.js/wiki/ABR-Logic

以及这里的概述图:https://github.com/Dash-Industry-Forum/dash.js/wiki/Buffer-and-Scheduling-Logic

Dash.js在去年年中改变了方法,使用了现有的两个主要缓冲规则之间的动态切换 - 它在GitHub变化(https://github.com/Dash-Industry-Forum/dash.js/pull/2083)中有所描述,但是从两个规则中快速总结了两个规则现在使用的是:

  • 在启动和搜索等瞬态条件下,需要使用吞吐量规则。
  • BolaRule在具有足够缓冲液的稳定条件下是理想的。

新的流在ThroughputRule上启动,然后在缓冲级别达到阈值时切换到BolaRule,当缓冲级别低于(低于第一个)阈值时切换回ByputRule,依此类推。

请注意,虽然自动规则切换可以充分利用这两个规则,但是AsputRule和BolaRule都可以在没有其他规则的情况下正常工作。

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