Открыть сервис

RTMP

RTMP (Real-Time Messaging Protocol, протокол обмена сообщениями в реальном времени) — это проприетарный протокол прикладного уровня, разработанный компанией Macromedia (ныне подразделение Adobe Systems) для передачи аудио-, видео- и других данных в режиме реального времени через интернет. Основное назначение RTMP — обеспечение низкой задержки при потоковой передаче мультимедийного контента, что делает его популярным для прямых трансляций, видеоконференций и интерактивных приложений. Протокол работает поверх транспортного протокола TCP (Transmission Control Protocol) и использует порт 1935 по умолчанию.

История

Протокол RTMP был впервые представлен компанией Macromedia в 2002 году как часть технологии Flash Communication Server (позднее переименованного в Adobe Flash Media Server). Основной целью разработки было создание надёжного и эффективного способа передачи потокового видео и аудио между сервером и клиентом, работающим на платформе Adobe Flash. В 2005 году компания Adobe Systems приобрела Macromedia, и RTMP стал ключевым компонентом экосистемы Flash, включая такие продукты, как Adobe Flash Player и Adobe AIR.

В 2009 году Adobe опубликовала спецификацию RTMP в открытом доступе, что стимулировало развитие сторонних реализаций, таких как серверы потокового вещания (например, Wowza Streaming Engine, Red5, Nginx-RTMP). Однако с конца 2010-х годов популярность RTMP начала снижаться из-за отказа от технологии Flash в пользу HTML5 и более современных протоколов, таких как HLS (HTTP Live Streaming) и MPEG-DASH. Тем не менее, RTMP остаётся востребованным в качестве протокола для приёма видеопотоков от кодировщиков (например, OBS Studio) до серверов потокового вещания.

Архитектура и принцип работы

Транспортный уровень

RTMP использует TCP в качестве транспортного протокола, что гарантирует доставку данных без потерь, но может приводить к задержкам в условиях нестабильного соединения. Для снижения задержек протокол поддерживает мультиплексирование нескольких потоков данных (аудио, видео, управляющие команды) в одном TCP-соединении. Каждый поток делится на фрагменты (chunks), которые передаются в порядке приоритета.

Типы сообщений

RTMP определяет несколько типов сообщений, которые передаются между клиентом и сервером:

  • Аудиоданные: закодированные аудиопотоки (например, в форматах AAC, MP3).
  • Видеоданные: закодированные видеопотоки (например, в форматах H.264, VP8).
  • Управляющие сообщения: команды для установки соединения, управления буферизацией, синхронизации потоков.
  • Сообщения данных: метаданные (например, информация о битрейте, разрешении) и пользовательские данные (например, ActionScript-объекты для интерактивных приложений).

Режимы работы

RTMP поддерживает несколько режимов передачи данных:

  • RTMP (обычный): использует TCP-соединение на порту 1935.
  • RTMPS (RTMP Secure): поверх TLS/SSL, обеспечивает шифрование трафика (порт 443).
  • RTMPT (RTMP Tunnelled): инкапсулирует RTMP-трафик в HTTP-запросы для обхода прокси-серверов и файрволов (порт 80).
  • RTMFP (RTMP over UDP): использует протокол UDP для снижения задержек, но не получил широкого распространения из-за проблем с совместимостью.

Установка соединения

Процесс установки соединения включает несколько этапов:

  1. Рукопожатие (handshake): клиент и сервер обмениваются версиями протокола и случайными данными для подтверждения возможности связи.
  2. Создание потока: клиент отправляет команду connect для установки логического соединения с сервером.
  3. Публикация или воспроизведение: клиент может начать публикацию (отправку) потока данных или запросить воспроизведение существующего потока.

Классификация

RTMP можно классифицировать по нескольким признакам:

По типу передачи

  • Однонаправленный (unicast): передача данных от одного источника к одному получателю (например, обычная видеотрансляция).
  • Многоадресный (multicast): передача данных от одного источника к нескольким получателям одновременно (реализуется редко из-за ограничений сетевой инфраструктуры).

По роли в потоковой системе

  • Приёмный протокол (ingest): используется для передачи потока от кодировщика (например, OBS Studio) до сервера потокового вещания. В этом качестве RTMP остаётся наиболее популярным.
  • Доставка конечному пользователю (delivery): ранее использовался для доставки видео в Flash Player, но сейчас практически вытеснен HLS и DASH.

Применение

Прямые трансляции

RTMP широко используется для прямых видеотрансляций на платформах, таких как YouTube, Twitch, VK Видео (входит в экосистему VK). Кодировщики (например, OBS Studio, XSplit) передают поток на сервер через RTMP, откуда он затем распространяется зрителям через другие протоколы (например, HLS). Низкая задержка RTMP (обычно 2–5 секунд) делает его предпочтительным для интерактивных стримов, где важна оперативная обратная связь.

Видеоконференции и интерактивные приложения

В прошлом RTMP использовался в системах видеоконференций (например, Adobe Connect) и многопользовательских онлайн-играх на Flash. Однако с упадком Flash эти применения стали менее распространёнными.

Интеграция с CDN

Многие сети доставки контента (CDN) поддерживают RTMP для приёма потоков от кодировщиков. Например, сервисы Cloudflare Stream, Amazon IVS (Interactive Video Service) и другие позволяют подключаться через RTMP для последующей перекодировки и доставки.

Сравнение с другими протоколами

ПротоколТранспортЗадержкаПоддержка HTML5Популярность
RTMPTCPНизкая (2–5 с)Нет (требуется плагин)Высокая для ingest, низкая для delivery
HLSHTTP/TCPСредняя (10–30 с)ДаВысокая для delivery
MPEG-DASHHTTP/TCPСредняя (10–30 с)ДаВысокая для delivery
WebRTCUDPОчень низкая (<1 с)ДаВысокая для видеозвонков

Критика и ограничения

  • Зависимость от TCP: RTMP использует TCP, что может приводить к увеличению задержки при потере пакетов, так как TCP требует повторной передачи потерянных данных. В условиях нестабильного интернет-соединения это может ухудшить качество трансляции.
  • Отсутствие нативной поддержки в HTML5: RTMP не поддерживается современными браузерами без использования плагинов (например, Flash Player, который был официально прекращён в 2020 году). Это ограничивает его использование для доставки контента конечным пользователям.
  • Проприетарность: несмотря на публикацию спецификации, RTMP остаётся проприетарным протоколом Adobe, что может вызывать сложности с лицензированием для коммерческого использования.
  • Уязвимости безопасности: RTMP не поддерживает шифрование по умолчанию (RTMPS решает эту проблему, но требует дополнительной настройки). Это делает его уязвимым для перехвата трафика.

Интересные факты

  • RTMP был разработан на основе протокола Real-Time Messaging Protocol (RTMP) компании Macromedia, который изначально предназначался для передачи данных в реальном времени в приложениях Flash.
  • В 2012 году Adobe объявила о прекращении поддержки Flash Player для мобильных устройств, что ускорило переход на HTML5 и снизило популярность RTMP.
  • Протокол RTMP используется в некоторых системах видеонаблюдения для передачи видеопотоков с IP-камер на серверы записи.
  • Существует открытая реализация RTMP-сервера — Nginx-RTMP, которая позволяет создавать собственные потоковые серверы на базе веб-сервера Nginx.

Источники

  • Adobe Systems Incorporated. «Real-Time Messaging Protocol (RTMP) specification». 2009.
  • Ozer, J. «Video Encoding and Streaming: A Practical Guide». 2017.
  • «RTMP: Real-Time Messaging Protocol». Wikipedia, The Free Encyclopedia. 2023.
  • «Nginx-RTMP Module». GitHub. 2023.
  • «Streaming Protocols: RTMP, HLS, MPEG-DASH, and WebRTC». Wowza Media Systems. 2023.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →