我正在尝试在Cordova应用程序上使用HTML5音频流式传输Shoutcast URL。
我遇到的问题是:当音频流失去与ShoutCast URL的连接时,似乎没有触发的回调。在此阶段,音频元素表明它正在播放音频,但没有音频。
Radio = {
initialized: false,
isBuffering: false,
interrupted: false,
isPlaying: false,
media: null,
trackName: '',
url: 'shoutcast_url',
initialize: function () {
if (!this.media) {
this.media = new Audio(this.url);
this.media.preload = "none";
this.media.onerror = function (e) {
App.alert("Unable to connect to Radio");
Radio.interrupt();
};
this.media.onwaiting = function (e) {
Radio.set_buffering(true);
};
this.media.onplaying = function (e) {
Radio.set_buffering(false);
};
}
},
set_buffering: function (value) {
...
}
播放缓冲的内容后,音频将停止播放。但是不会触发表示连接断开的回调。
media.networkState
是2
(NETWORK_LOADING)media.playbackRate
是1
(以正常速度播放)media.readyState
是4
(HAVE_ENOUGH_DATA)media.preload
是 none
我尝试过的回调(当连接断开时不会触发)是:
onstalled
onreset
onsuspend
onerror
onprogress
onwaiting
问题-如果由于缺少连接而无法播放音频时,是否会触发音频回调?
如果不是,是否有任何方法可以更新readyState
或networkState
?如果是这样,我可以设置一个计时器来检查这些值。
当使用HTML5音频播放受支持的音频流时,弄清楚音频是否正在播放的最佳方法是监听事件timeupdate。
当currentTime属性指示的时间已更新时,将触发timeupdate事件。
仅在播放音频时触发此事件。如果音频由于任何原因停止播放,timeupdate
也不会触发。
但是,浏览器支持不完整。
timeupdate
永远不会触发或currentTime
更新。timeupdate
功能如文档所述。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句