安卓OpenSL ES教程

40

我一直在研究如何使用可用于 Android 2.3 中进行本地音频的 OpenSL ES 库,但似乎头文件和 600 页的规范 pdf 是唯一可用的文档。

我应该在哪里查找示例、教程或简要概述其功能?


请查看 googlesample https://github.com/googlesamples/android-ndk/tree/master/native-audio。 - Anshuman Pattnaik
另一个本地音频示例:https://github.com/Jhuster/AudioDemo - zwcloud
5个回答

21

NDK自带一个示例应用程序,名为NativeAudio。它包含了几乎您想实现的所有内容的示例:效果、流式传输、合成等。如果您查看其代码,您将会有一个良好的起点。


16

你还可以查看 Victor Lazzarini 的音频编程博客,其中有一个 Android 部分:http://audioprograming.wordpress.com/category/android/

在那里,你会找到一些可行的示例,它们对我来说非常有用,让我开始使用 OpenSL,并且可以作为开发使用 NDK 的音频应用的基础。

此外,不要忽视规范文档,它并不是很长,前面部分不超过 50 页,可以帮助你了解如何运作,其余部分则供参考使用。注意,Android OpenSL 实现中的某些内容与规范不同:有关更多信息,请查看 your-ndk-directory/docs/opensles/index.html。


1
@Timo,这个问题已经超过五年了,很多事情都发生了变化(甚至有一个新的音频API可以在更新的设备上使用,而不是OpenSL!)。如果你仍然在寻找示例,请查看这些Google的GitHub存储库:https://github.com/googlesamples/android-ndk/tree/master/audio-echo和https://github.com/googlesamples/android-audio-high-performance。我的建议关于OpenSL规范仍然适用。另一个信息来源是ndk google组:https://groups.google.com/forum/#!forum/android-ndk,只需使用“audio”关键字搜索即可。 - athos

12

经过一番搜索,我找到了更有价值的信息:

  • NDK中包含的NativeAudio项目是一个很好的起点。
  • 此外,Sylvain Ratabouil所著的《Android NDK初学者指南》第7章“使用OpenSL ES播放声音”也是一个很好的起点(您可以使用“查看内部内容”功能在亚马逊上查看或购买该书)。
  • 这个Google代码项目用于替换SoundPool与OpenSL也是一个很好的例子。所有的荣誉和感谢都归功于他们的作者。

好像我不小心给这个答案点了踩的按钮 :/ 一旦我的投票解锁,我会立即取消踩的。 - Kevin Crain

7

如果你只想播放单个音频文件或记录一个短暂的快照(在单个缓冲区中),那么NDK项目就足够了。

我看了一下《Android NDK初学者指南》,它确实没有比示例NDK项目更多的解释。

但是,对于这些应用程序,您可能最好选择其中一个Java API。在我看来,为它们使用OpenSL ES有点过度设计。将会有更多的代码需要编写,而且没有实际收益。

OpenSL的优点在于那些对低延迟(当这些可用时)的音频合成和处理感兴趣的人,并且为此,您可能想要流式传输音频,而不是播放/记录单个缓冲区。该书章节和NDK示例都不会教您如何做到这一点。音频编程博客中的博文对于这些目的来说更有信息量。


那些博客文章是什么?你的回答真的是一个答案吗?在我看来,它更像是一条评论。 - Amit
我相信他指的是这个网站:http://audioprograming.wordpress.com/,实际上它被称为“音频编程博客”。 - Mike Ortiz

1

Victor Lazzarini的音频编程博客中的Android部分是一个很好的开始。http://audioprograming.wordpress.com/category/android/

而且这篇博客还提供了可直接下载的示例代码,这是最受欢迎的部分。

构建和运行非常简单。对我来说,我需要以下步骤才能构建和运行此示例:

  1. 安装SWIG: swig-3.0.2。按照以下三个步骤进行安装:

    $ 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构建:$ ant debug
  5. 然后,您可以将其安装到设备上并进行测试:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接