2012-10-22 387 views
11

簡單地說,我想在Firefox中播放一個blob MP3文件。播放存儲爲blob的MP3文件

我有權訪問這兩個blob本身:blob(切片MIME類型audio/mpeg3),其URL:blobURL = window.URL.createObjectURL(blob)

我曾嘗試用:

  1. 的HTML5音頻播放器:

    <audio controls="controls"> 
        <source src="[blobURL]" type="audio/mp3"> 
    </audio> 
    

    ,但我在Firebug得到一個警告,告訴我,火狐無法讀取audio/mpeg3類型的文件。

  2. 多個音頻播放器庫(SoundManagerJPlayer等),但沒有一個似乎允許blob URL作爲輸入。

我做錯了嗎?還是有人知道一個解決方法或庫可以播放blob的MP3文件?

+0

感謝。你知道任何現有的音頻播放器是基於你的解決方案嗎? – Axel

+0

解決方案是什麼? – Tjorriemorrie

+4

這是2014年...你是誰,DenverCoder9!? https://xkcd.com/979/ – Scott

回答

10

這似乎很好地工作對我來說,雖然我使用audio/mpeg的MIME類型:

$scope.player = new window.Audio(); 

var xhr = new XMLHttpRequest(); 
xhr.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     $scope.player.src = window.URL.createObjectURL(this.response); 
     $scope.player.play(); 
    } 
}; 
xhr.open('GET', url); 
xhr.responseType = 'blob'; 
xhr.send(); 
+0

這與使用HTML5音頻播放器並將其傳遞給blob的URL幾乎相同。所以它仍然依賴支持MP3的瀏覽器/操作系統組合。 – Axel

+0

不錯,乾淨的香草JavaScript!無論如何,感謝Firefox 24,我想我的問題不再是真正相關的。 – Axel

+1

謝謝你這個很好的解決方案,代碼中有一個小錯誤。迴應=> this.response –