我正在从服务器接收原始数据波形文件,我需要在客户端播放这个字节数组。
我尝试像这样使用decodeAudioData link但我收到错误:
DOMException : Unable to decode Audio data.
这是合乎逻辑的,因为我的原始数据不是常规的 mp3 文件,它是需要以 8000Hz 速率、1 个 channel 和每个样本 16 位播放的波形。
是否有一个函数可以以一定的速率和多个 channel 播放从服务器接收到的字节数组
最佳答案
我设法使用此方法在浏览器上播放字节:
function playWave(byteArray) {
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var myAudioBuffer = audioCtx.createBuffer(1, byteArray.length, 8000);
var nowBuffering = myAudioBuffer.getChannelData(0);
for (var i = 0; i < byteArray.length; i++) {
nowBuffering[i] = byteArray[i];
}
var source = audioCtx.createBufferSource();
source.buffer = myAudioBuffer;
source.connect(audioCtx.destination);
source.start();
}
关于javascript - 以从服务器接收到的字节形式播放 wav 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44073159/