Play MP3 file stored as blob

梦想与她 提交于 2019-11-27 03:22:56

问题


Put simply, I'd like to play a blob MP3 file in Firefox.

I have access to both the blob itself: blob (sliced with mime type audio/mpeg3), and its URL: blobURL = window.URL.createObjectURL(blob).

I have tried with:

  1. an HTML5 audio player:

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

    but I get a warning in Firebug telling me that Firefox cannot read files of type audio/mpeg3.

  2. multiple audio player libraries (SoundManager, JPlayer, etc.), but none seem to allow blob URLs as input.

Am I doing it wrong? Or does anyone know a workaround or a library that can play MP3 files from blobs?


回答1:


This seems to work fine for me, although I'm using audio/mpeg as the MIME Type:

$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();



回答2:


I realize this question has been answered already and that my findings are for a different browser (Chrome), but I thought I'd leave this here just in case someone in the future is having the same problem I did. I was having trouble playing a blob file through the audio player, but found that removing the source tag fixed things. So this wouldn't work:

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

But this worked fine:

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

I'm not sure why one would work and the other would not, but there it is. Hopefully this is useful to someone else down the line.



来源:https://stackoverflow.com/questions/13004381/play-mp3-file-stored-as-blob

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!