Я просматриваю все виды API звука для Android, и я хотел бы знать, какой из них я должен использовать. Моя цель - получить звук с низкой задержкой или, по крайней мере, детерминированное поведение в отношении задержки воспроизведения.
У нас было много проблем, и кажется, что Android-звук API - это дерьмо, поэтому я изучаю возможности.
Проблема заключается в том, что между sound_out.write(sound_samples);
и фактическим звуком, воспроизводимым из динамиков, существует значительная задержка. Обычно это около 300 мс. Проблема в том, что на всех устройствах он отличается; некоторые из них не имеют этой проблемы, но большинство из них искалечено (однако вызов CS имеет нулевую задержку). Самая большая проблема с этой нелепой задержкой заключается в том, что на некоторых устройствах эта задержка представляется некоторым случайным значением (т.е. Не всегда 300 мс).
Я читаю о OpenSL ES, и я хотел бы знать, есть ли у кого-нибудь опыт с ним, или это же дерьмо, но упаковано в другой пакет?
Я предпочитаю иметь собственный доступ, но я не имею в виду перенаправление уровня Java, пока я могу получить детерминированное поведение: либо задержка должна быть постоянной (для данного устройства), либо я хотел бы получить доступ в текущую позицию воспроизведения, а не гадать с диапазоном ошибок ± 300 мс...
EDIT:
Спустя 1,5 года я попробовал несколько телефонов Android, чтобы узнать, как я могу получить наилучшую латентность для голосовой связи в реальном времени. Используя специализированные инструменты, я измерил задержку пути всплеска. Лучшие результаты были более 100 мс, большинство телефонов находились в диапазоне 180 мс. У кого-нибудь есть идеи?