В настоящее время я пытаюсь свести к минимуму задержку звука для простого приложения:
У меня есть видео на ПК, и я передаю видео аудио через RTP мобильному клиенту. С очень похожим алгоритмом буферизации я могу достичь 90 мс латентности на iOS, но ужасно ± 180 мс на Android.
Я предполагаю, что отличия от известных задержек на Android.
Однако после прочтения немного, я столкнулся с этой статьей, в которой говорится, что:
-
Звук с низкой задержкой доступен с Android 4.1/4.2 на некоторых устройствах.
-
Звук с низкой задержкой может быть достигнут с помощью libpd, который представляет собой библиотеку Pure Data для Android.
У меня есть 2 вопроса, непосредственно связанных с этими 2 утверждениями:
-
Где я могу найти дополнительную информацию о новом аудио с низкой задержкой в Jellybean? Это все, что я могу найти, но в нем не хватает конкретной информации. Должны ли изменения быть прозрачными для меня или есть какие-то новые вызовы класса /API, которые я должен реализовать для меня, чтобы заметить какие-либо изменения в моем приложении? Я использую API AudioTrack, и я даже не уверен, что он должен извлечь выгоду из этого улучшения или если я должен смотреть на какой-то другой механизм воспроизведения звука.
-
Должен ли я изучать использование libpd? Мне кажется, что это единственный шанс добиться меньших латентностей, но поскольку я всегда думал о PD как утилите для синтеза звука, действительно ли это подходит для проекта, который просто захватывает кадры из сетевого потока и воспроизводит их? Я вообще не синтезирую. Я следую за неправильным следом?
В качестве дополнительной заметки, прежде чем кто-то упоминает OpenSL ES, в этой статье совершенно ясно, что от ее использования не следует ожидать улучшения латентности:
"Поскольку OpenSL ES является родным API C API, не-Dalvik-приложениями, которые вызов OpenSL ES не имеет связанных с Dalvik накладных расходов, таких как мусор паузы коллекции. Однако нет дополнительных преимуществ в плане производительности к использованию OpenSL ES, кроме этого. В частности, использование OpenSL ES не приводит к более низкой задержке звука, более высокому приоритету планирования, и т.д., чем обычно предоставляет платформа.