2012-10-22 344 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 –