【发布时间】:2016-07-03 01:20:56
【问题描述】:
我正在尝试将实时音频从 iOS 设备流式传输到网络浏览器。 iOS 设备通过 Web 套接字发送小的单声道 wav 文件(因为它们是录制的)。一旦客户端收到 wav 文件,我就会对 Web Audio API 进行解码并相应地安排它们。
这让我完成了大约 99% 的路程,除了我能听到每个音频块之间的咔嗒声。经过一番阅读,我意识到问题的可能根源:音频正在以仅 4k 的采样率录制,这是无法更改的。似乎 Web Audio API 的 decodeAudioData() 函数不能以精确的精度处理除 44.1k 以外的采样率,从而导致块之间的间隙。
我已经尝试了字面上的所有我能找到的关于这个问题的一切(scriptProcessorNodes、调整时间、创建新的缓冲区,甚至手动上采样),但都没有奏效。此时我即将放弃 Web Audio API。
网络音频 API 是否适用于此? 对于我想要完成的事情,是否有更好的选择? 感谢您提供任何帮助/建议,谢谢!
【问题讨论】:
-
按照目前的规定,
decodeAudioData()总是将编码音频重新采样为context.sampleRate指定的采样率。除非您可以更改输出设备的采样率,否则必须在某处进行重新采样。有人建议decodeAudioData()不重新采样或AudioContext()采用所需的采样率,以便所有重新采样都在内部进行。我认为,这可以解决您的点击问题。 -
也许您可以使用 FileAPI 将文件放在一起,然后使用普通音频对象播放?
标签: streaming web-audio-api live-streaming