24

具体的には、206のオーディオ要求の1つが失敗し、バッファリングが停止した場合、その状態を検出する方法はありますか?または、バッファリングされた量を過去の量と比較して、バッファリングが停止したかどうかを確認する必要がありますか?

また、指定したソースが失敗したかどうかを確認するにはどうすればよいですか?それから別のソースを指すことができますか?

4

3 に答える 3

35

1.具体的には、オーディオの要求の1つが失敗し、バッファリングが停止した場合、その状態を検出する方法はありますか?

はい、これを行う方法はいくつかあります。ただし、エラータイプをキャッチする場合は、エラーイベントリスナーをソースにアタッチできます。

$('audio').addEventListener('error', function failed(e) {
   // audio playback failed - show a message saying why
   // to get the source of the audio element use $(this).src
   switch (e.target.error.code) {
     case e.target.error.MEDIA_ERR_ABORTED:
       alert('You aborted the video playback.');
       break;
     case e.target.error.MEDIA_ERR_NETWORK:
       alert('A network error caused the audio download to fail.');
       break;
     case e.target.error.MEDIA_ERR_DECODE:
       alert('The audio playback was aborted due to a corruption problem or because the video used features your browser did not support.');
       break;
     case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
       alert('The video audio not be loaded, either because the server or network failed or because the format is not supported.');
       break;
     default:
       alert('An unknown error occurred.');
       break;
   }
 }, true);

2.次に、それを別のソースに向けることができますか?

エラーハンドラ関数内srcで、オーディオ要素のプロパティを使用してソースを変更できます。

var audio = $(this);
audio.src = "new-audio-file.mp3";
audio.load();

別のオプションは、次の構文を使用して同じオーディオタグに複数のソースを追加することです。

<audio>
    <source id="audio_player_ogv" src="test.ogv" type="audio/ogg" />
    //In case that you can't load the ogv file it will try to load test.mp3
    <source id="audio_player_mp3" src="test.mp3" type="audio/mpeg" />
</audio>

3.複数のオーディオファイルの管理について

206のオーディオファイルを管理することを考えている場合は、プラグインを使用することをお勧めします。私はSoundManager2をしばらく使用していますが、とても良いです!

于 2013-01-23T21:07:17.537 に答える
3

仕様には、メディア要素によって処理されるイベントの完全なリストがあります:https ://html.spec.whatwg.org/multipage/embedded-content.html#media-elements

特に、停止、中止、進行状況のイベントを調べます。

この要素は比較的新しいため、実装は大きく異なる場合があります。したがって、これらのイベントをターゲットとするプラットフォームに対してテストして、ニーズに対して期待どおりに機能するかどうかを確認します。そうでない場合は、前述のようにバッファリングされた状態をポーリングするなど、もう少し手動で行う必要があるかもしれません。

于 2013-01-23T17:46:02.613 に答える
-3

私はあなたがここであなたの答えを見つけることができると思いますw3schoolsはページの終わりにあります(メディアイベントブロック)

おそらくonerrorまたはonstalledまたはonreadystatechange

于 2012-11-28T21:55:57.800 に答える