我正在尝试让 SoLoud 音频引擎与 Emscripten 一起工作,但它的行为相当奇怪。作为实验,我正在播放 500 毫秒的正弦波。
使用 2048 个样本缓冲区,延迟约为一秒或更长,输出的是 25 毫秒的正弦波。如果我将缓冲区减少到 256 个样本,延迟会好一点(仍然很糟糕),并且输出会增长到大约(但不完全是)500 毫秒,而且声音无论如何都不干净。这是使用 Firefox 进行的; chrome 沉默了。
emscripten/tests/sdl_audio* 测试全部使用 sdl_mixer 而不是直接使用流。
所以我的问题是 - 有什么方法可以让流音频(以便我自己进行混合并向某些 API 提供样本缓冲区)在 emscripten 下工作?
最佳答案
目前,有一个 emscripten 的拉取请求,要求 SDL 实现使用 Web Audio API(它目前使用 Mozilla Audio API,这就是 Chrome 保持沉默的原因):https://github.com/kripken/emscripten/pull/1299在同一个拉取请求中,我相信对缓冲流支持进行了许多改进。
否则,OpenAL 实现使用 Web Audio,并且当前在主分支中具有缓冲流支持。
关于emscripten - 让 Emscripten 流式音频正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18350537/