javascript - 网络音频 API : How to play a stream of MP3 chunks

标签 javascript html audio streaming web-audio-api

所以我尝试使用 Web Audio API 解码和播放使用 Node.js 和 Socket.IO 流式传输到浏览器的 MP3 文件 block 。

在这种情况下,我唯一的选择是为接收到的每个音频数据 block 创建一个新的 AudioBufferSourceNode,或者是否可以为所有 block 创建一个 AudioBufferSourceNode 并且简单地将新的音频数据附加到源节点的 buffer 属性的末尾?

目前这就是我接收 MP3 block 、解码它们并安排它们播放的方式。我已经验证接收到的每个 block 都是“有效的 MP3 block ”,并且正在被 Web Audio API 成功解码。

audioContext = new AudioContext();
startTime = 0;

socket.on('chunk_received', function(chunk) {
    audioContext.decodeAudioData(toArrayBuffer(data.audio), function(buffer) {
        var source = audioContext.createBufferSource();
        source.buffer = buffer;
        source.connect(audioContext.destination);

        source.start(startTime);
        startTime += buffer.duration;
    });
});

对于如何最好地使用新音频数据“更新”Web Audio API 播放的任何建议或见解,我们将不胜感激。

最佳答案

目前,decodeAudioData() 需要完整的文件,不能对不完整的文件提供基于 block 的解码。下一版本的 Web Audio API 应提供此功能:https://github.com/WebAudio/web-audio-api/issues/337

与此同时,在新的 API 版本可用之前,我已经开始编写用于解码音频的示例。

https://github.com/AnthumChris/fetch-stream-audio

关于javascript - 网络音频 API : How to play a stream of MP3 chunks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20134384/

相关文章:

jquery - 一张一张地再现音频文件

c++ - Qt滚动大图

javascript - D3.js - 错误 : d3. line() 不是函数(从版本 4 更改为 3)

javascript - 为 <div> 中用逗号分隔的文本应用不同的 css

javascript - 如何追踪添加事件监听器的位置?

javascript - jquery 编辑帖子,图像缺少某些内容

javascript - 尝试获取所选选项的值(value)

javascript - 2个DIVS重叠并具有缩放效果

javascript - 插入音频元素会导致 CSS 错误

android - 当一个人靠近距离传感器时如何播放重复的音频,而当他离开时如何停止