2010-11-17 102 views
5

加載[編輯:使用簡化的測試頁沒有JavaScript等]HTML5音頻文件無法在Safari

我有一個包含四個音頻文件的網頁。這些文件將作爲HTML5 <audio>提供.mp3文件,這些文件應在Safari中播放。 (我對Firefox和Chrome中的.ogg文件沒有任何問題。)

每次我重新加載頁面時,一到三個文件加載正常,其餘都無法加載 - 儘管它們不會加載,給出錯誤,並且'加載'消息消失;就好像他們正在加載0B的大小。哪些文件可以工作,哪些不完全是隨機的:我已經看到每個文件都加載,並且每個文件都會失敗多次。

如何才能使所有這些文件加載​​正確?

+1

我有這個確切相同的問題;我完全被它困惑不解。 – 2010-12-13 07:52:10

+0

你能解決這個問題嗎?我面臨完全相同的問題。即使我在停滯的事件上重新加載音頻,它也會不斷停頓不停。它永遠不會超過幾秒鐘。 – Kolyunya 2014-10-16 05:41:18

+0

知道Safari似乎需要媒體請求的文件擴展名可能有幫助。正確的MIME類型(在音頻元素和響應中)不足以加載資源。 – pwray 2016-04-21 05:15:09

回答

8

我是有文件不加載,並用此解決方案提出了類似的問題。看起來HTML5音頻/視頻可能會「失速」,這意味着只是停止加載。幸運的是,發生這種情況時會發生「失速」事件。我所做的就是聽這個事件,當它/如果它發生了,就試着強制重新加載音頻。

示例使用jQuery:

// the event is 'onstalled' - 'stalled' in the jquery case 
    $("audio").bind("stalled", function() { 
     var audio = this; 
     audio.load(); 

     // Threw in these two lines for good measure. 
     audio.play(); 
     audio.pause(); 
    }); 
+0

在這種情況下'$(this)[0]'相當於'this' – incarnate 2014-01-10 22:15:20

+0

任何想法,如果這也適用於soundmanager2? – 2014-12-15 19:36:45

0

看你的頁面生成的源加載的第一源那麼OGG文件的MP3文件,嚴格按照此順序

但是,正如http://html5doctor.com/native-audio-in-the-browser/文件中指定的是相反的順序,所以嘗試做同樣的

否則嘗試在你的源代碼也以投放AAC音頻在M4A/MP4容器

+0

感謝您的回覆。我扭轉了文件類型的順序,並沒有什麼不同。 我會嘗試使用m4a文件,但它真的不清楚爲什麼我必須這樣做,因爲Safari理論上支持mp3文件,而且其中一些工作正常。 – 2010-11-17 15:08:02