我需要能够同时播放两个或更多(比如说,最多 5 个)短 ogg 文件。同时,我的意思是完美同步。我可以将它们加载到 SoundPool 并播放,但这有时会在播放开始时间上产生明显的差异,我想摆脱这种差异。
据我了解,如果将 PCM 混合到一个缓冲区中并播放,则可以避免这种情况。但是 OGG 不是 PCM,需要在播放前以某种方式有效地解码,并且延迟必须非常低,理想情况下,只要用户按下按钮。所以我想我需要一种将 OGG 流式传输到 PCM 的方法,当我收到缓冲区时,我会将它们混合并馈送到 AudioTrack。我的要求是 Android 2.3.3+,所以我不能使用 Jelly Bean 中提供的任何新编解码器。
此外,虽然 OGG 本身很小,但数量很多。因此,将它们全部解码在内存中(SoundPool 或一些预解码)也可能会出现问题。
有人可以给我提示在哪里挖掘吗?OpenSL ES 可以为我做到这一点吗?还是我应该考虑集成ffmpeg?甚至可以以低延迟流式传输同步文件吗?
谢谢