通过 <audio>
或 Audio()
播放网络广播之类的实时音频流时,暂停事件可以(至少)以三种方式触发:
<audio controls>
)setActionHandler
(到目前为止可能隐藏在标志后面)是否可以区分1/2和3?
isTrusted
这样的事件属性,但我缺少readyState
和 networkState
,但两者都没有定论,尤其是在浏览器中(例如HAVE_FUTURE_DATA
与HAVE_ENOUGH_DATA
的解释/语义)stalled
事件之前,有时在ended
事件之后。跨浏览器的实现似乎很复杂,而且误报的危险非常高。 在到处都有Media Session lands之前,我是否很幸运?
注意:this question看起来像一个解决方案,但不幸的是,它不是-浏览器以不同且不一致的方式处理实时流的“结束”。
最佳答案
waiting
事件应符合您的需求。
您可以在Chrome的“网络”标签的下拉菜单中模拟不良网络时尝试该演示(例如:慢速3G)
const video = document.getElementById('mwe_player_0');
video.onwaiting = function() { console.log('onwaiting'); };
<video id="mwe_player_0" controls="" preload="none" style="width:800px;height:450px"><source src="https://upload.wikimedia.org/wikipedia/commons/2/22/Volcano_Lava_Sample.webm" type="video/webm; codecs="vp8, vorbis""></video>
请注意,此演示也适用于
HTMLAudioElement
(因为它继承了HTMLMediaElement
)。视频演示更易于测试。