Необходимо воспроизвести аудио в формате MP3 через inte rnet без задержки в iOS (Swift) - PullRequest
0 голосов
/ 27 мая 2020

Мы пытаемся добиться потоковой передачи звука с низкой задержкой (присутствуют только кодированные аудиоданные, без видеоданных) с помощью AVPlayer. Мы протестировали протоколы потокового аудио, такие как HTTP и HLS, и наблюдали задержку не менее 3 секунд для воспроизведения. Требуется ли AVPlayer входной буфер продолжительностью не менее 3 секунд на устройстве перед началом воспроизведения?

Есть ли корреляция между уменьшением задержки и качеством воспроизведения звука?

Можно ли уменьшить эту задержку ? Если да, то есть ли какие-либо предложения или рекомендуемые методы?

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Вы можете просто наблюдать playerItem.loadedTimeRanges паузу воспроизведения AVPlayer вручную, если буфера (также известного как loadedTimeRanges) достаточно для условий задержки

0 голосов
/ 28 мая 2020

Задержка может быть минимизирована с помощью аудиоустройств, так как аудиоустройства могут запрашивать настройку с очень короткими аудиобуферами, обычно от 20 мс до 5 мс или даже меньше на некоторых устройствах Apple. Пакеты UDP с размером MTU могут использоваться для потоковой передачи данных по сети, где буферизация сети и помехи c трафика могут быть доминирующим фактором дополнительной задержки. Вероятно, вам придется добавить некоторую задержку (уровень заполнения кольцевого буфера), чтобы учесть худший случай джиттера синхронизации сети. Затем для аудио, сжатого в формате mp3, добавьте минимальный размер блока mp3 и время, необходимое для выбранного декодера mp3.

Другие API и протоколы потенциально могут увеличить накладные расходы и задержку буферизации.

...