これは、対象のブラウザと、現在のW3C WorkingDraftHTML5仕様のMediaElementsセクションの実装によって異なります。
ターゲットにしているブラウザが特定のイベントをサポートしているかどうかは、 http://www.w3.org/2010/05/video/mediaevents.htmlでいつでも確認できます。
そうしないと、データが届かない場合は、オーディオがバッファリングされず、stalled
イベントが発生すると思います。
suspend
データが通過している場合は、またはイベントをチェックできるはずですprogress
。どちらも、データがバッファリングされているときはいつでも起動するはずです(ただし、必ずしも一時停止/再生しているとは限りません)。
ブラウザがこれらのイベントをサポートしていないためにこれらのイベントが発生しない場合はnetworkState
、タイマーを使用してオーディオ要素の属性をいつでも確認できます。タイマーは、基本的にオーディオがバッファリングされているかどうかを示します。
HTML:
<!DOCTYPE html>
<html>
<body>
<audio controls="controls" id="myAudio">
<source src="http://www.w3schools.com/html5/horse.ogg" type="audio/ogg">
Your browser does not support the audio element.
</audio>
</body>
</html>
Javascript:
var audioElement = document.getElementById('myAudio');
var checkNetworkStateTimer = setInterval(function () {
console.log(audioElement.networkState); //2 indicates NETWORK_LOADING state
}, 250);
jsFiddleにもあります:http://jsfiddle.net/3sdhj/2/
jsFiddleのサンプルではオーディオが短すぎるため、おそらくを再現することはできませんが、アイデアは得られnetworkState
ます。2
それでも失敗する場合は、、などの人気のあるHTML5オーディオライブラリを使用しますSoundJS
(Buzz
私soundmanager2
はこれらのライブラリとは一切関係ありません)。