Как использовать Android-аудио с низкой задержкой - PullRequest
7 голосов
/ 08 декабря 2011

Проблема:

Как вы, наверное, уже слышали, Android не предоставляет аудио API с низкой задержкой.Под звуком с низкой задержкой я имею в виду, что вы должны иметь возможность получать аудиосигналы с микрофона и воспроизводить звук без большого промежутка времени (например, 5-7 мс)

Я пробовал старую Java(с AudioRecord и AudioTrack) и «новый» OpenSL ES.Они ужасны и делают приложение непригодным для использования. Проблема была хорошо задокументирована здесь. Кстати, iOS API может давать задержку около 5-7 мс.

Поиск обходных путей:

Но я все равно пытаюсь сделать звук с низкой задержкой. Нечто подобное описывает этот ответ.

"Однако я смог добиться этого удовлетворительно только написав собственный код, который выполнял микширование внутри и получал доступ к низкоуровневому воспроизведению звука.API только для воспроизведения окончательного смешанного вывода. Способы воспроизведения звуков в .Net Compact Framework более высокого уровня теоретически способны к полифонии, но на практике они работают ужасно (много глюков, заиканий и искажений). "

Имеет ли это смысл для Android? Ответ обескураживает.

Так что мой вопрос.Неужели нет никакого способа добиться задержки звука в 10 мс с помощью Android?

Если честно, я не ожидаю решения в ближайшее время, а просто хочу, чтобы один великий ум дал ответ на эту проблему.

Ответы [ 3 ]

4 голосов
/ 08 марта 2013

Android 4.1+ имеет аудио интерфейс API с низкой задержкой, который должен дать вам задержку менее 10 мс. однако значение зависит от аппаратного обеспечения (добро пожаловать в богатый и разнообразный мир Android).

также можно использовать дескриптор функции «android.hardware.audio.low_latency» для фильтрации устройств, не поддерживающих низкую задержку.

проверить http://www.youtube.com/watch?v=Yc8YrVc47TI&feature=player_de%20tailpage#t=1366s

и это: http://createdigitalmusic.com/2012/07/android-high-performance-audio-in-4-1-and-what-it-means-plus-libpd-goodness-today/

3 голосов
/ 29 сентября 2016

как продолжение функции android.hardware.audio.pro, запускаемой в Android 6, обещает <20 мс в оба конца, что, как мы можем надеяться, означает <10 мс в одну сторону. </p>

3 голосов
/ 12 декабря 2011

В настоящее время невозможно получить звук с низкой задержкой на устройствах Android без изменения операционной системы, и даже в этом случае большая часть задержки может быть вызвана аппаратной реализацией, поэтому программное обеспечение не может это исправить. Это печально, поскольку ядро ​​Linux очень способно к задержке звука <5 мс, а большая часть оборудования ARM способна к приличной задержке. У меня была пользовательская <a href="http://vimeo.com/2397102" rel="nofollow"> сборка Linux, работающая на старом Palm TX , и у нее действительно была довольно приличная задержка.

...