Минимизация задержки при потоковой передаче аудио с помощью HTML 5
Я пытаюсь прослушать живой аудиопоток на веб-странице с задержкой менее 3 секунд. До сих пор с потоками ogg vorbis, генерируемыми с помощью льдов и льдов, я не смог получить задержки менее 7 секунд. Все плееры, которые я использовал до сих пор (аудио-тег html5 в Firefox, Opera, Safari; также в VLC), похоже, имеют похожие задержки. На данный момент неясно, сколько задержек вводится в айс / айскаст против игрока на стороне клиента. Я подправил настройки льда и льда, но безрезультатно.
Кто-нибудь добился лучших задержек, чем этот, в аналогичных настройках айс / айскаст? Я не ожидал бы, что декодер ogg vorbis (будь то HTML 5 в браузере, VLC или что-то еще) задержит аудиопоток на несколько секунд. Я не прав? Я не могу найти информацию об управлении размерами буфера или декодирования в браузерах.
Благодаря другой архитектуре (html 5, firefox, сервер WSGI, обслуживающий аудио в формате wav), я смог достичь задержек около 1-2 секунд. По умолчанию firefox начал проигрывать файл wav на 5+ секунд позже, но я мог продвинуть воспроизведение, установив audio.currentTime вперед, и только на 1-2 секунды назад (несколько хрупко). Тем не менее, я бы предпочел использовать Icecast, и потоковое вещание явно не масштабируется.
Заранее спасибо за любые идеи.
2 ответа
Сами серверы Icecast и Shoutcast имеют внутренние буферы. Я знаю, что shoutcast можно настроить (смотрите дополнительные директивы в документации).
Есть несколько заархивированных обсуждений о задержке, связанной с Ogg / Vorbis:
Кажется, ответ таков: вам нужно настроить формат контейнера Ogg, и тогда оставшаяся задержка Vorbis не должна быть слишком большой.
Тем не менее, я также часто читал, что новый кодек Opus лучше подходит для малой задержки / задержки. Смотрите, например, здесь или здесь.