我想使用原生 android ndk 和 OpenSL ES 同时播放多个声音。我已经查看了 ndk 中的 native 音频示例,但无法弄清楚如何概括它以便我可以播放不同的音频剪辑,可能同时播放。我通过最近 50 次左右的搜索尝试在网上找到的大多数示例似乎都依赖于第三方库等附加代码,它们是用 Java 编写的(我是正在寻找原生解决方案),或者似乎并不是为同时处理多种声音而设计的。
如果它对如何处理这个有任何影响,对于我想要播放的每个声音,我已经在内存中有一些准备播放的原始 pcm 数据(小端),并且对于每个我都知道它采样率、每个样本的位数(8 或 16)和 channel 数(1 或 2)。
如能提供任何帮助,我们将不胜感激。 提前致谢。
最佳答案
您可以创建多个简单的缓冲队列音频播放器。您应该有一种机制来知道队列何时结束播放,以便您可以使用池中的免费播放器。您可以使用回调机制来做到这一点。 native 音频示例涵盖了此回调。
关于android - OpenSL,同时播放不同的声音 fragment 与 android ndk?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755074/