<audio>
当通过或播放实时音频流(如网络广播)时,Audio()
暂停事件可以(至少)三种方式触发:
- 用户点击暂停按钮(带有
<audio controls>
) - 用户单击浏览器的全局音频控件
- 各种网络条件导致的缓冲区不足
可以区分 1/2 和 3 吗?
- 理想情况下,会有一个类似的事件属性
isTrusted
,我错过了 - 我试图猜测,特别是看起来。at
readyState
和,但两者都非常不确定,尤其是跨浏览器(例如vsnetworkState
的解释/语义)HAVE_FUTURE_DATA
HAVE_ENOUGH_DATA
- 我回避了制作“衰变状态机”,同时处理其他事件。缓冲区欠载通常
stalled
发生在事件之前,有时也发生在ended
事件之后。跨浏览器的实现看起来非常复杂,误报的风险非常高。
在 Media Session无处不在之前,我是否不走运?
注意:这个问题看起来像是一个解决方案,但不幸的是不是——浏览器以不同且不一致的方式处理直播流的“结束”。