javascript - 以从服务器接收到的字节形式播放 wav 文件

标签 javascript html audio

我正在从服务器接收原始数据波形文件,我需要在客户端播放这个字节数组。

我尝试像这样使用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/

相关文章:

javascript - 从html调用js命名空间函数

python - 为什么sfml无法在此python代码中的函数内播放文件?

android - FFmpeg 和样本类型

javascript - 我如何找到哪个 JavaScript 正在改变元素的样式?

javascript - 有没有一种简单/快速的方法可以将 "data-"属性映射到大小写混合的属性名称?

javascript - 将 JSON 数据加载到 Bootstrap 模式中

html - CSS - 如何在 3 层中正确添加 3 个图像

javascript - jQuery Accordion 在子页面上时保持菜单从一页到另一页打开

javascript - 为什么我不能用 javascript 同时更改图像的高度和宽度?

iPhone应用程序内部录音