具體而言,如果206個音頻請求中的一個失敗並且緩衝停止,是否有辦法檢測該狀態?還是應該通過比較緩衝量與過去的量來檢查緩衝是否停止?如何檢查HTML5音頻是否已達到不同的錯誤
另外如何檢查指定的源是否失敗,然後您可以將它指向另一個源?
具體而言,如果206個音頻請求中的一個失敗並且緩衝停止,是否有辦法檢測該狀態?還是應該通過比較緩衝量與過去的量來檢查緩衝是否停止?如何檢查HTML5音頻是否已達到不同的錯誤
另外如何檢查指定的源是否失敗,然後您可以將它指向另一個源?
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一段時間,這非常好!
我認爲你可以找到答案在這裏w3schools在頁面的末尾(媒體活動塊)
可能onerror
或onstalled
或onreadystatechange
有在媒體元素處理的事件的完整列表規格:https://html.spec.whatwg.org/multipage/embedded-content.html#media-elements
我會專門看停滯,中止,進展事件。
由於這個元素是相對較新的實現可能差別很大。因此,我會針對您定位的平臺測試這些事件,看看它們是否按照您的需求按預期工作。如果沒有,你可能需要做一些更手動的操作,比如你剛纔提到的輪詢緩衝狀態。
你可以在SoundManager2上顯示你正在使用的代碼來加載這個文件(206的3或4) –