2

我正在尝试构建一个应用程序,该应用程序使用数字过滤器来处理从其他(股票音乐播放器和 spotify 等)应用程序播放的音频。

到目前为止,我已经能够在 OpenSL ES 中为来自麦克风的音频输入创建过滤器。然后将过滤后的音频发送到硬件输出。该应用程序基于此教程http://audioprograming.wordpress.com/2012/03/03/android-audio-streaming-with-opensl-es-and-the-ndk/

如何从其他应用程序获取类似的输入缓冲区,以便在将其发送到硬件输出之前对其进行处理?

它不需要使用 OpenSL ES 或其他本机代码。澄清; 该应用程序应该以与android.media.audiofx.AudioEffect类似的方式应用自定义过滤器效果,然后才可以将其附加到全局音频输出混合(音频会话 0)。

4

1 回答 1

3

应用程序无法修改(甚至读取,如果您不考虑 Visualizer API)来自其他应用程序的音频输出。

只是关于音频会话 0 的说明:它仍然可以使用它(从 JB / JB MR1 开始),但这种可能性可能会在未来的 Android 版本中消失。但是有一个重要的细节需要记住,那就是如果应用程序在会话 0 上添加效果,则在会话 0 上添加的效果将被暂停。

音频 HAL 会跟踪所有启用的音频效果的(估计的)CPU 使用率,如果这样做会导致超出 CPU 周期预算,则会拒绝启用新的效果。这意味着,如果允许应用程序在会话 0 上自由叠加效果而不被暂停,它们可能会因为超出 CPU 周期预算而拒绝它们选择在自己的音频会话上启用哪些效果的能力,从而搞砸像 Spotify 这样的应用程序.

于 2013-03-13T14:19:33.943 回答