适用于Android的OpenSL ES教程

我一直在尝试使用OpenSL ES库来提供用于使用android 2.3进行原生audio的工作,但是看起来头文件和规范的600页pdf是唯一可用的文档。

我应该在哪里查找示例,教程或function的简要概述?

有一个名为NativeAudio的NDK附带的示例应用程序。 它有几乎任何你想要实现的例子:效果,stream媒体,综合等。如果你看看它的代码,你会得到一个良好的开端。

你也可以检查victor lazzarini的audio编程博客,它有一个安卓部分: http ://audioprograming.wordpress.com/category/android/

在这里你会find一些工作的例子,它们对于我开始使用openSL是非常有用的,并且可以被用作使用ndk开发audio应用程序的基础。

另外,不要忽略规格说明文件,不要太长,第一部分不超过五十页,给你所需的视angular去了解所有的一切是如何工作的,其余的仅供参考。 请注意,android openSL实现中的一些内容与规范不同:请参阅-ndk-directory / docs / opensles / index.html以获取有关此更多信息。

经过一番search,我find了更有价值的信息:

  • 包含在NDK中的NativeAudio项目是一个好的开始。
  • 另外,Sylvain Ratabouil的书“Android NDK初学者指南”第7章“使用OpenSL ES播放声音”是一个很好的起点(您可以使用“look inside”function在亚马逊地区购买或购买)。
  • 这个用OpenSL代替SoundPool的google代码项目也是一个很好的例子。 所有学分和感谢他们的作者。

对于那些只想播放单个声音文件或logging一个简短快照(在一个缓冲区中)的人来说,NDK项目就足够了。 我看了一下“Android NDK新手指南”,实际上并没有比NDK示例项目更多的解释。

但实际上,对于这些应用程序,使用其中一个Java API可能会更好。 使用OpenSL ES对他们是一个矫枉过正的恕我直言。 将会有更多的代码写入,而且没有真正的收益。

OpenSL的优点是对那些对audio合成和处理有较低延迟感兴趣的人(这些可用时),为此,您可能需要stream式传输audio,而不是播放/logging单个缓冲区。 本书的章节和NDK的例子不会教你这个。 audio节目博客中的博客文章对于这些目的而言更具信息性。

维克托·拉扎里尼(Victor Lazzarini)在android部分的audio编程博客是一个很好的开始。 http://audioprograming.wordpress.com/category/android/

而且这个博客上还有一个来自bitbucket git仓库的直接下载示例代码,这是最受欢迎的部分。

构build和运行非常简单。 对我来说,我需要这些步骤来构build并运行这个例子:

  1. 安装SWIG: swig-3.0.2 。 安装3个步骤:

    $ configure $ make $ sudo make install。

  2. 编辑build.sh以反映你NDK的位置。 然后在顶层目录下运行build.sh脚本。
  3. 通过以下方式生成build.xml:

    $ android update project –name opensl-es-audiotest –target 1 –path ./

  4. 用ant构build:$ ant debug
  5. 然后,您可以将其安装到您的设备并进行testing:

    $ adb install bin / opensl-es-audiotest-debug.apk