VIDEOCAMERA LIVE

WebRTC и HLS: как видео с камеры доходит до зрителя

Камера отдаёт видео по RTSP, а браузер RTSP не понимает. Поэтому сервер доставляет видео в понятном браузеру формате — через WebRTC или HLS. Разберём, чем они отличаются и зачем мы используем оба.

Почему браузер не показывает RTSP напрямую

RTSP — язык систем видеонаблюдения: его понимают камеры, регистраторы и VLC, но не Chrome, Safari и Firefox. Выставлять камеру напрямую в интернет к тому же небезопасно, и сотни зрителей она всё равно не выдержит. Поэтому наш сервер берёт с камеры один RTSP-поток и раздаёт его зрителям в формате, понятном браузеру. Таких форматов два.

WebRTC — почти в реальном времени

WebRTC создан для видеозвонков — на нём работает Google Meet. Видео идёт маленькими пакетами, в основном по UDP, и браузер показывает его сразу, без большого буфера. Задержка обычно меньше секунды: вы видите то, что происходит сейчас. Для приёма трансляции наш плеер использует стандартный протокол WHEP. WebRTC всегда зашифрован.

Слабое место: WebRTC нужен свой путь через сеть. Корпоративные файрволы, Wi-Fi в гостиницах и кафе, некоторые VPN блокируют UDP, и тогда соединение просто не устанавливается.

HLS — проходит везде, но позже

HLS режет видео на небольшие файлы, которые браузер скачивает один за другим по обычному HTTPS, как картинки. Поэтому он работает везде, где открываются сайты: файрвол не отличит его от обычной страницы. Цена — задержка: классический HLS часто отстаёт на 10–30 секунд, потому что плеер заранее накапливает несколько файлов. Мы используем LL-HLS (Low-Latency HLS): он отдаёт файлы более мелкими частями и сокращает задержку до нескольких секунд.

Сравнение

WebRTCLL-HLS
Порядок задержкиМеньше секундыНесколько секунд
ТранспортВ основном UDPHTTPS (обычный веб-трафик)
Корпоративный файрволМожет блокироватьПочти всегда пропускает
БраузерыВсе современныеВсе современные; встроен в iPhone
Когда используетсяВ первую очередь — когда важно «сейчас»Когда WebRTC не подключился

Точная задержка зависит от камеры, сети и местоположения зрителя. В таблице — порядок величин, а не обещание.

Почему сначала WebRTC, потом HLS

Наш плеер выбирает путь сам. Сначала он пробует WebRTC, потому что это лучший результат. Если сеть WebRTC не пропускает, плеер автоматически переходит на LL-HLS. Зрителю ничего не нужно ставить или выбирать — он просто видит видео, даже из офисной сети. Заметить он может разве что чуть большую задержку.

  • Склон, море, вид на город — несколько секунд никому не мешают; главное, чтобы видео открывалось у всех.
  • Стройка, ворота, мероприятие — здесь «сейчас» важнее, и преимущество WebRTC заметно.

На телефоне

Оба пути работают на Android и iPhone, в Chrome, Safari, Firefox и Edge, без приложения. В мобильном интернете WebRTC обычно подключается, но в сетях некоторых операторов или с включённым VPN плеер перейдёт на HLS. На iPhone в режиме энергосбережения браузер может блокировать автозапуск видео — тогда зритель один раз нажимает кнопку воспроизведения.

Как на это влияют настройки камеры

  • Интервал I-кадров. Видео нового зрителя начинается со следующего ключевого кадра. Интервал 1–2 секунды даёт быстрый старт и короткие части HLS.
  • B-кадры. В H.264 они вызывают подтормаживание в браузере, особенно через WebRTC. Отключите их на камере.
  • H.265. Большинство браузеров его не показывает; для таких камер сервер перекодирует видео в H.264, пока его кто-то смотрит. См. H.265 в браузере.

Все рекомендуемые значения в одном месте: настройки камеры для веб-трансляции.

Почему видео иногда отстаёт на несколько секунд?

Скорее всего, сеть зрителя не пропустила WebRTC, и плеер перешёл на LL-HLS. Так часто бывает в офисном и гостиничном Wi-Fi и с VPN. Видео работает, просто чуть позже.

Зрителю нужно что-то устанавливать?

Нет. Плеер работает в обычном браузере на компьютере и телефоне и сам выбирает путь.

Работает ли на iPhone?

Да, в Safari и других браузерах. Если телефон в режиме энергосбережения, может понадобиться один раз нажать кнопку воспроизведения.

Безопасен ли WebRTC?

Да. Видео в WebRTC всегда зашифровано, а HLS идёт по HTTPS. К тому же зритель подключается только к нашему серверу и не видит адрес вашей камеры.

Запустите камеру на сайте уже сегодня

Зарегистрируйтесь, добавьте RTSP-ссылку и получите код для вставки. Есть вопросы? Позвоните — ответим.