Softvelum Low Delay Protocol: низкая задержка, высокая производительность
Время задержки - это важно
Низкое время задержки - критичный вопрос для живого вещания. Многие сценарии требуют минимальной задержки - менее секунды - между съёмкой и отображением события на экране.
Чаты: общение всегда подразумевает немеденную реакцию.
Игровые трансляции требуют реального масштаба времени.
Ставки и торги: когда на кону большие деньги, вам точно не захочется узнать всё последним.
Безопасность и системы слежения требуют живой картинки для немеленной реакции.
В приложениях "второго экрана" зритель не хочет видеть картинку на десятки секунд позже телевизионной.
Долгое время Flash и RTMP были основным способом доставки живых потоков, но сейчас индустрия отходит от них, постоянно находясь в поиске наилучшего решения для вещания в реальном масштабе времени.
Софтвелум представляет SLDP - протокол доставки "последней мили" до пользовательских устройств, который решает эти задачи.
Что такое SLDP
SLDP - это протокол потоковой передачи на основе WebSockets. Его ключевые возможности:
Задержка между источником и плеером около секунды. Отсюда и "Low Delay" в названии.
Независим от кодеков. Можно передавать всё, что поддерживает платформа пользователя: H.264, VP8, VP9, H.265/HEVC видео, AAC, MP3, Opus аудио.
Поддержка ABR. Переключение между каналами занимает лишь время одного GOP, а каждый канал может использовать свой кодек.
Вы можете использовать бесплатные приложения, а также подписаться на SDK для этих платформ.
Поддержка на сервере
Nimble Streamer - бесплатный программный медиа-сервер с полной поддержкой SLDP. Он берёт на вход любой протокол и выдаёт SLDP на выход. Создаётся поток SLDP с H.264/H.265/VP8/VP9 видео и AAC/MP3/Opus аудио, и любой плеер с поддержкой протокола может к нему подключиться.
Amazon CloudFront полностью поддерживает доставку WebSockets, таким образом SLDP можно доставлять через CloudFront. Статья Настройка CloudFront для доставки SLDP даст больше подробностей.
Синхронизация проигрывания
Технология SLDP позволяет синхронизировать одновременное проигрывание на любом количестве устройств и браузеров. Это бывает важно в различных случаях:
Один экран с несколькими личными аудио-устройствами.
Приложение "второго экрана".
Несколько экранов с одним источником звука.
Камеры наблюдения, отображаемые на одной странице.
Эта возможность поддерживается в сервере Nimble Streamer, плеере HTML5 SLDP, Larix Player для Android и iOS. Читайте эту статью, она объясняет настройку и использование.
Можете попробоватьдемо-страницу HTML5с двуми плеерами SLDP, которые показывают видео синхронно. На видео ниже показан плеер в HTML5 браузере, на устройствах Android и iOS, играющие один и тот же синхронизированный поток:
Чем SLDP отличается от других протоколов?
SLDP - это отличный протокол для малой задержки, но как насчёт других протоколов?
HLS и MPEG-DASH
Протоколы, использующие сегменты изначально были созданы с учетом требований к простоте доставке, отсюда и деление на чанки. Отсюда следует, что клиент должен целиком скачать первый сегмент, чтобы начать проигрывание. Размер чанка HLS, рекомендуемый Apple по умолчанию, составляет 10 ссекунд, но его можно уменьшить до 2-3 секунд. Тем не менее, задержку всё равно нельзя уместить в пределах секунды. То же касается и MPEG-DASH, HDS и SmoothStreaming, т.к. они построены на тех же принципах.
RTMP
RTMP - отличный протокол реального масштаба времени, который прекрасно решает задачу малой задержки. Однако лидеры рынка убирают его поддержку, т.к. для проигрывания требуется наличие Flash-плагина в браузерах. Кроме того, протокол имеет ограничения на поддержку современных кодеков.
FAQ
Также обратите внимание на часто задаваемые вопросы, в которых раскрываются преимущества и самые интересные техники использования SLDP.