将实时音频流式传输到浏览器 - Web Audio API的替代方案?

时间:2016-03-16 22:12:05

标签: streaming web-audio live-streaming

我正在尝试将实时音频从iOS设备流式传输到网络浏览器。 iOS设备通过Web套接字发送小的单声道wav文件(因为它们被录制)。一旦客户端收到wav文件,我就会对Web Audio API进行解码并相应地安排它们。

除了我可以听到每个音频块之间的点击之外,这让我大约99%的方式。经过一些阅读后,我意识到了问题的可能来源:音频以4k 的采样率进行录制,这是无法改变的。似乎Web Audio API的decodeAudioData()函数不能处理除44.1k之外的采样率,精确精度导致块之间存在间隙。

我已经尝试了字面上所有我可以找到关于这个问题(scriptProcessorNodes,调整时间,创建新的缓冲区,甚至手动上采样),但没有一个有效。此时我即将放弃Web Audio API。

Web Audio API是否适用于此? 对于我想要实现的目标,还有更好的选择吗? 任何帮助/建议表示赞赏,谢谢!

1 个答案:

答案 0 :(得分:0)

唉! AudioFeeder.js创造奇迹。我只需指定4k的采样率,输入原始的32位pcm数据,它就会输出一致的无缝音频流!甚至内置缓冲区处理事件,因此无需设置任何循环或超时来安排块播放。不过,我确实需要稍微调整一下,将它连接到我的其他网络音频节点而不仅仅是context.destination。

注意:AudioFeeder会自动上采样到音频上下文采样率。从4k到44.1k确实在高端引入了一些非常粗糙的声音伪影,但是在2khz的48db低通滤波器(4 x 12db' s)摆脱了它们。我选择2khz是因为,感谢Harry Nyquist,我知道4k的采样率不可能在原始文件中产生2khz以上的频率。

所有冰雹Brion Vibbers