2013-03-13 2 views
1

Я пытаюсь создать приложение, которое использует цифровой фильтр для обработки звука, воспроизводимого с других приложений (музыкального плеера и распознавания и т. Д.).Подключить простой звуковой фильтр к музыке, находящейся под андроидом.

До сих пор я смог создать фильтр для аудиовхода с микрофона в 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).

ответ

1

Приложение не может изменять (или даже читать, если вы снижаете API визуализатора) аудиовыход из других приложений.

Только примечание об аудиосеансе 0: его все еще можно использовать (как JB/JB MR1), но эта возможность может исчезнуть в будущих версиях Android. Однако есть одна важная деталь, которая заключается в том, что эффекты, добавленные в сеанс 0, будут приостановлены, если приложение добавит эффект на сеанс, отличный от 0.

Аудио HAL отслеживает (оценивает) CPU использование для всех включенных звуковых эффектов и запретит включение новых эффектов, если это приведет к превышению бюджета цикла процессора. Это означает, что если приложениям разрешалось свободно складывать эффекты на сеанс 0 без приостановки, они могли бы испортить такие приложения, как Spotify, отказав им в возможности выбирать, какие эффекты включить на своем собственном сеансе аудио, поскольку превышен бюджет цикла процессора ,

+0

спасибо. Тогда как работают существующие приложения DSP? Существует несколько приложений, использующих OpenSL ES, ffmpeg и т. Д. Для изменения звука, поступающего из других приложений. – daker

+0

Не знаю. Я только пробовал два таких приложения; один из них был принудительно закрыт, когда я попытался запустить его, а другой просто использовал встроенные аудиоэффекты и привязал их к сеансу 0. – Michael

+0

Возможно, обходной путь, как в этой теме (http://stackoverflow.com/questions/14055272/андроид-4-0-идея, как к зачетному захвату-внутреннее аудио, например, поток-музыка). – daker