Javascript 如何将原始mp3二进制文件转换为blob url并在音频标签中播放

Javascript 如何将原始mp3二进制文件转换为blob url并在音频标签中播放,javascript,websocket,blob,Javascript,Websocket,Blob,我所做的是通过WebSocket将mp3数据作为base64字符串发送,然后在浏览器端对其进行解码,现在我要做的是将原始数据转换为一个blob,并在音频标签中播放,但我不知道你如何帮助解码base64字符串也很慢,有更好的方法吗 JAVASCRIPT [编码:功能(e){var t=”,编码:功能(e){var t=”;var t=”;var n,r,r,r,n,r,r,r,r,r,r,r,i,s,o,r,r,i,s,o,o,u,a,a;VAF=0;0;e=0;e编码(e);编码(e);而(f>

我所做的是通过WebSocket将mp3数据作为base64字符串发送,然后在浏览器端对其进行解码,现在我要做的是将原始数据转换为一个blob,并在音频标签中播放,但我不知道你如何帮助解码base64字符串也很慢,有更好的方法吗

JAVASCRIPT


[编码:功能(e){var t=”,编码:功能(e){var t=”;var t=”;var n,r,r,r,n,r,r,r,r,r,r,r,i,s,o,r,r,i,s,o,o,u,a,a;VAF=0;0;e=0;e编码(e);编码(e);而(f>2;o=(n&3)4;4;u=(r&15)4;u=(r&15)6;6;a=6;a;a=6;a;a=a=a;a;a;a;a;a;a;a;a=15;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a;a这个返回t},解码:函数(e){var t=“”;var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^a-Za-z0-9+/=]/g,”);而(f>6&63 | 128);t+=String.fromCharCode(r&63 | 128)}返回t},{u utf8(u解码:函数(e){var t=“;var n=0;var(audio context>用于原始数据,然后可以通过将其传递到
AudioBufferSourceNode
来播放。您也可以使用
decodeAudioData()
方法来使用音频文件。

您不需要将其转换为原始数据。HTML5 audio已经支持base64作为URL:


不确定什么样的数据是“js.buffer”?但如果它已经是base64编码的,只需像@Ashraf所说的那样给它加上前缀:

var audio = document.getElementById("audio");
audio.type = AudioType;
audio.src = "data:audio/mpeg;base64," + js.buffer;
// audio.src = "data:" + AudioType + ";base64," + js.buffer;
仅供参考:现代浏览器内置base64编码/解码


您增加了许多复杂的层次。您为什么要这样做?如果您向一个方向发送数据(从客户端到服务器,或从服务器到客户端),您不需要Web套接字。即使您要使用Web套接字,它们也支持二进制传输,因此不需要经历33%的大小开销和所有额外的CPU。即使在所有这些之后,当您可以直接流式传输数据时,也没有理由做这些大的MP3块。如果您只是正常使用HTTP,您可以划掉所有这些代码并使用
标记。
var audio = document.getElementById("audio");
audio.type = AudioType;
audio.src = "data:audio/mpeg;base64," + js.buffer;
// audio.src = "data:" + AudioType + ";base64," + js.buffer;
Use:
   atob() - decode base64
   btoa() - encode base64