我有一个网络音频播放器从websocket获取实时音频数据 . 我正在尝试调试一些音频问题,我想在收到后立即从websocket中保存二进制数据,并在使用 audioContext.decodeAudioData 解码后立即保存 . 例如

var ax = new window.AudioContext;
var ws = new WebSocket(ip);
ws.binaryType = 'arraybuffer';
ws.onmessage = function(event){
   // save data as binary to a file
   saveToFile(event.data);
   // decode audio and save as binary to a file
   ax.decodeAudioData(event.data, function(audio){
      saveToFile(audio);
   });
};

我在这里尝试过其他SO问题的一些东西,但是使用我认为正在工作的这种方法(因为检查生成的文件显示了WAV头信息),文件实际上似乎充满了垃圾 .

这是我在 ws.onmessage 处理程序中调用的"binary dump"函数 .

binaryString += String.fromCharCode.apply(null, new Uint8Array(binary));

我还没有为_1715712做这个 .

  • String.fromCharCode.apply(null, new Uint8Array(binary)) 是将原始二进制数据从websocket event.data 转储到文件中的合适方法吗?

  • 如果不是我可以使用的其他方法?