2012-05-07 90 views
1

我使用OpenSL ES在我的项目中播放音乐和声音。我已经使用原生音频样本作为开始,并且可以用于再现背景音乐和单个声音,但是当我尝试在同一时间再现两个或更多声音时,由于声音缓冲区已被排入播放所有以前的缓冲区时播放。使用OpenSL ES同时播放多种音效Android

然后,一个小小的研究后,我发现两种方法来解决它,简称:

  1. 使用几个音频播放器(因此缓冲队列)为再现声音。
  2. 将音效缓冲区混合到一个缓冲区中,然后入队。

我的问题是: 你认为什么是最好的方法?我忽略了一个更好的方法?

在此先感谢。

回答

0

下面是一个完全不同的方法:我使用SoundPool来做到这一点:它非常简单,并且工作完美。

+0

首先,谢谢你的回应。我在一个旧项目中使用了SoundPool,是的,它非常简单,即使使用C++也很容易实现,但是对于我来说SoundPool有两个大问题,**它在Galaxy S设备上崩溃**并且非常不稳定**(有些声音从未播放过,第一次播放没有奏效......)。 – gergonzalez

1

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

反正你可以创建多你ObjectPlayer,永远记住,对象的最大ammount的是32

所以,理想情况下,如果你要玩4在声音同时,你需要4个PlayerObject和1个OutputMixObject

希望你能找到有用的