【问题标题】:Play several sound effects simultaneously using OpenSL ES Android使用 OpenSL ES Android 同时播放多个音效
【发布时间】:2012-05-07 08:22:16
【问题描述】:

我正在使用 OpenSL ES 在我的项目中播放音乐和声音。我使用 native-audio sample 作为开始,它可以很好地再现背景音乐和单个声音,但是当我尝试同时再现两个或多个声音时,声音不会同时再现,因为播放所有先前的缓冲区时,声音缓冲区将排队等待播放。

然后,经过一番研究,我找到了两种解决方法,简而言之:

  1. 使用多个音频播放器(以及缓冲队列)来重现声音。
  2. 将音效缓冲区混合到一个缓冲区中,然后加入队列。

我的问题是: 您认为最好的方法是什么?有没有更好的方法被我忽略了?

提前致谢。

【问题讨论】:

    标签: android android-ndk opensl


    【解决方案1】:

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

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

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

    希望你能找到有用的

    【讨论】:

      【解决方案2】:

      这是一种完全不同的方法:我正在使用 SoundPool 来执行此操作:它非常简单,而且效果很好。

      【讨论】:

      • 首先,感谢您的回复。我在一个旧项目中使用了 SoundPool,是的,它非常简单,即使使用 c++ 也很容易实现,但对我来说,SoundPool 有两个大问题,它在 Galaxy S 设备上崩溃而且非常不稳定(有些声音从未播放过,第一次播放无效...)。
      猜你喜欢
      • 2012-12-23
      • 1970-01-01
      • 2012-06-21
      • 2013-07-19
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      相关资源
      最近更新 更多