不要在 Android 上加载时间流音频

Do not load time streaming audio on Android

我想在我的某个电台的网络音频流中播放它。按 loadstart 事件消息播放会出现 LOADING 但在它开始播放音频流之前被删除,大约提前 4 或 5 秒。我希望事件能够控制加载流文件的时间。

台式电脑不存在音频即时加载问题,但在 Chrome 浏览器和 S.O 智能手机中。 Android 这个问题非常明显,加载大约需要 6 或 7 秒。所以我会通过一些事件来控制这个时间。

什么样的事件可以用于在音频未开始播放之前未删除消息 LOADING?谢谢。

 function AudioStart(){
    audio = new Audio();
  audio.src = "http://listen.XXXX.com/XXXX";

    audio.addEventListener("loadstart", function(){

document.getElementById('title').innerHTML="<span>LOADING...</span>";

;
},false);


audio.addEventListener("loadeddata", function(){

audio.play();

},false);



} 

Listen oncanplay instead of loadeddata or oncanplaythrough if you ant to make sure entire audio is loaded.

当加载当前帧的数据,但没有足够的数据来播放指定 audio/video 的下一帧时,loadeddata 事件发生。

当浏览器可以开始播放指定的audio/video(当它有足够的缓冲可以开始播放时)canplay事件发生

当浏览器估计它可以播放指定的 audio/video 而无需停止缓冲时,就会发生 canplaythrough 事件。

试试这个:

function AudioStart() {
  audio = new Audio();
  audio.src = "http://www.w3schools.com/html/horse.mp3";

  audio.addEventListener("loadstart", function() {
    document.getElementById('title').innerHTML = "<span>LOADING...</span>";
  }, false);

  audio.addEventListener("canplay", function() { //OR 'oncanplaythrough'
    document.getElementById('title').innerHTML = "";
    audio.play();
  }, false);
}
<h3 id='title'></h3>
<button onclick='AudioStart()'>Start Audio</button>

Fiddle here