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