简而言之,我想在Firefox中播放一个blob MP3文件。
我可以访问blob本身:blob
(用mime类型audio/mpeg3
切片),以及它的URL:blobURL = window.URL.createObjectURL(blob)
。
我尝试过:
<audio controls="controls">
<source src="[blobURL]" type="audio/mp3">
</audio>
但我在Firebug中收到警告,告诉我Firefox无法读取audio/mpeg3
类型的文件。我做错了吗?或者有没有人知道可以从blob播放MP3文件的变通方法或库?
这似乎对我很好,虽然我使用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();
我意识到这个问题已经得到了回答,而且我的发现是针对不同的浏览器(Chrome),但我想我会留下这个,以防将来有人遇到同样的问题。我无法通过音频播放器播放blob文件,但发现删除源标签修复了一些问题。所以这不起作用:
<audio controls="controls">
<source src="[blobURL]" type="audio/mp3">
</audio>
但这很好:
<audio controls="controls" src="[blobURL]" type="audio/mp3" />
我不确定为什么一个会工作而另一个不会,但它确实存在。希望这对其他人有用。