2012-11-28 29 views
20

具體而言,如果206個音頻請求中的一個失敗並且緩衝停止,是否有辦法檢測該狀態?還是應該通過比較緩衝量與過去的量來檢查緩衝是否停止?如何檢查HTML5音頻是否已達到不同的錯誤

另外如何檢查指定的源是否失敗,然後您可以將它指向另一個源?

+0

你可以在SoundManager2上顯示你正在使用的代碼來加載這個文件(206的3或4) –

回答

30

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); 

你能不能不要那麼它指向其他來源?

裏面的錯誤處理功能,您可以使用音頻元素的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一段時間,這非常好!

+0

++,儘管由於閃回回退,它不能用於移動設備......或者至少我不會我不這麼認爲,是嗎? – infocyde

+1

@infocyde:不,它不適用於手機 –

+0

@TomSarduy'$('audio')。addEventListener'就是那個jQuery? – LoneWOLFs

-2

我認爲你可以找到答案在這裏w3schools在頁面的末尾(媒體活動塊)

可能onerroronstalledonreadystatechange

3

有在媒體元素處理的事件的完整列表規格:https://html.spec.whatwg.org/multipage/embedded-content.html#media-elements

我會專門看停滯,中止,進展事件。

由於這個元素是相對較新的實現可能差別很大。因此,我會針對您定位的平臺測試這些事件,看看它們是否按照您的需求按預期工作。如果沒有,你可能需要做一些更手動的操作,比如你剛纔提到的輪詢緩衝狀態。

相關問題