Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OpenSL ES Android同时播放多个音效_Android_Android Ndk_Opensl - Fatal编程技术网

使用OpenSL ES Android同时播放多个音效

使用OpenSL ES Android同时播放多个音效,android,android-ndk,opensl,Android,Android Ndk,Opensl,我正在使用OpenSL ES在我的项目中播放音乐和声音。我使用本机音频样本作为开始,它可以重现背景音乐和单个声音,但当我尝试同时重现两个或更多声音时,声音不会同时重现,因为在播放所有以前的缓冲区时,声音缓冲区排队等待播放 然后,经过一点研究,我找到了两种方法来修复它,简言之: 使用多个音频播放器(以及缓冲队列)来重现声音 将音效缓冲区混合到一个缓冲区中,然后排队 我的问题是: 你认为什么是最好的方法?有一种更好的方法我忽略了? 提前谢谢 这里有一种完全不同的方法:我正在使用这种方法:它非常简单,

我正在使用OpenSL ES在我的项目中播放音乐和声音。我使用本机音频样本作为开始,它可以重现背景音乐和单个声音,但当我尝试同时重现两个或更多声音时,声音不会同时重现,因为在播放所有以前的缓冲区时,声音缓冲区排队等待播放

然后,经过一点研究,我找到了两种方法来修复它,简言之:

  • 使用多个音频播放器(以及缓冲队列)来重现声音
  • 将音效缓冲区混合到一个缓冲区中,然后排队
  • 我的问题是: 你认为什么是最好的方法?有一种更好的方法我忽略了?


    提前谢谢

    这里有一种完全不同的方法:我正在使用这种方法:它非常简单,工作非常完美。

    我也在使用OpenSL ES。一开始有点复杂

    无论如何,您可以创建任意数量的ObjectPlayer,请始终记住对象的最大数量是32

    因此,理想情况下,如果要同时播放4种声音,需要4个PlayerObject和1个OutputMixObject


    希望您能找到有用的

    首先,感谢您的回复。我在旧的项目中使用了So声池,是的,它非常简单,即使用C++来实现也是很容易的,但是对于我来说,SudiPo水池有两个大问题,它在Galaxy S设备上崩溃了,而且非常不稳定(一些声音从来没有播放过,第一次播放没有用过……)。