2013-03-13 83 views
1

我正试图建立一个应用程序,使用数字过滤器来处理从其他(股票音乐播放器和Spotify等)应用程序的音频播放。Hook简单的音频过滤器,以Android下的音乐播放

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

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

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

回答

1

应用程序无法修改(或甚至读取,如果您打折Visualizer API)从其他应用程序输出的音频。

只是关于音频会话0的一个说明:它仍然可以使用它(从JB/JB MR1开始),但在未来的Android版本中可能会消失。有一个重要的细节需要注意,这是因为如果应用在除0之外的会话中添加效果,会话0上添加的效果将被暂停。

音频HAL跟踪(估计)CPU用于所有已启用的音频效果,并将拒绝新的效果启用,如果这样做会导致超过CPU周期预算。这意味着,如果允许应用程序在不中断的情况下自由堆叠会话0上的效果,他们可以通过拒绝他们选择在自己的音频会话中启用哪些效果的能力来混淆像Spotify这样的应用程序,因为已超出CPU周期预算。

+0

谢谢。那么现有的DSP应用程序如何工作?有几个应用程序使用OpenSL ES,ffmpeg等来修改其他应用程序的声音。 – daker 2013-03-14 08:03:50

+0

我不知道。我只试过两个这样的应用程序;其中一个强制关闭,当我试图启动它,另一个只是使用内置的AudioEffects并将它们附加到会话0. – Michael 2013-03-14 09:20:54

+0

像这个线程中的解决方法可能是可能的(http://stackoverflow.com/questions/14055272/Android的4-0思路,如何到创纪录的捕获内部音频如流音乐)。 – daker 2013-07-25 14:41:27