Внутри RTMP: как работает Real Time Messaging Protocol

13.09.2024

6мин. чтения

RTMP

В начале 90-х идея просмотра видео онлайн казалась практически нереальной. Тогда технологии только начинали развиваться, а низкая скорость интернета и ненадежное подключение оставались серьезными проблемами для юзеров. Каждая загрузка видео означала постоянную буферизацию и частые прерывания.

Все изменилось, когда Flash Player представил Real-Time Messaging Protocol (RTMP). Он решал проблему потоковой передачи по нестабильным интернет-соединениям и ознаменовал начало новой эры в онлайн-видео. Появление RTMP не только вывело потоковую передачу данных на новый уровень, но и заложило основы для развития стриминга, который мы знаем сегодня.

Рождение и развитие RTMP

Разработанный компанией Macromedia (позже ее приобретет Adobe) в 1996 году, протокол RTMP был создан для передачи аудио, видео и данных через TCP-соединения. Интеграция с Adobe Flash Player позволила ему быстро стать основным методом потоковой передачи видео в браузерах и на мобильных устройствах. На короткий период RTMP был основным решением для потоковой передачи видео в реальном времени, позволяя пользователям транслировать и смотреть видеоконтент в реальном времени.

Протокол предоставлял относительно стабильный стриминг по сравнению с альтернативами того времени, и благодаря этому быстро завоевал рынок. Благодаря повсеместному внедрению, сегодня RTMP все еще играет важную роль: он нашел свою нишу в продакшене потокового видео — в первую очередь как средство публикации контента в социальных сетях.

Дизайн и архитектура RTMP опередили свое время, сосредоточив внимание на стриминге в реальном времени и интерактивных возможностях. Однако по мере развития интернета выросли и требования: все хотят более гибких и надежных потоковых технологий. Современные протоколы, такие как HLS (HTTP Live Streaming) и DASH (Dynamic Adaptive Streaming over HTTP), предлагают функции, с которыми RTMP не справляется: адаптивную потоковую передачу и поддержку современных кодеков.

Технические детали и компоненты RTMP

Чтобы оценить функциональность RTMP, взглянем на его основные компоненты:

Handshake

«Рукопожатие» — это начальный этап установления соединения RTMP между клиентом и сервером. Он включает обмен серией сообщений для согласования и подтверждения параметров соединения, обеспечивая синхронизацию обеих сторон и готовность к передаче данных. RTMP поддерживает различные типы сообщений, включая команды, данные и видео/аудиосообщения.

Соединение

После рукопожатия клиент и сервер используют закодированные сообщения Action Message Format (AMF) для согласования подключения. RTMP-encoder отправляет запрос на подключение к серверу с использованием AMF, указывая такие детали, как URL подключения, аудиокодек и видеокодек. Соединение также обрабатывает управляющие сообщения и контролирует состояние сессии.

Поток

В потоке передаются аудио, видео и другие данные от клиента к серверу (или наоборот). Он разбивает медиа на блоки («чанки») и отправляет их в непрерывном потоке. Это обеспечивает доставку мультимедийного контента в реальном времени. Передача чанков позволяет лучше контролировать и синхронизировать передачу данных, хотя может привести к фрагментации пакетов и добавленной сложности.

Типы потоков и формат FLV

RTMP поддерживает одну видеодорожку и одну аудиодорожку. Он полагается на формат FLV (Flash Video), который предоставляет временные метки с точностью до миллисекунд, но ограничен фиксированным набором кодеков (H.264, AAC, PCMA). Этот формат обеспечивает точный тайминг, но ограничивает гибкость в кодеках.

Неопределенность URL

URL-адреса RTMP могут быть неоднозначными, что может вызвать путаницу при идентификации потока. Например, URL RTMP, такой как rtmp://server/live/tvchannels/cnn, может быть интерпретирован по-разному различными клиентами и CDN, усложняя управление потоками.

Аспект Детали
Основное использование Публикация видео в социальных сетях
Типы потоков Одна видеодорожка, одна аудиодорожка
Разделение данных Делит данные на более мелкие части для лучшего контроля и синхронизации, но может вызвать фрагментацию пакетов
Типы сообщений Command Messages (управляющие команды), data-сообщения (метаданные и управление), видео/аудио (реальный медиаконтент)
Формат FLV - Предоставляет временные метки с точностью до миллисекунд
- Ограничен кодеками, такими как H.264, AAC, PCMA
Ограничения - Плохое управление многоязычным и многобитратным потоковым вещанием
- Высокая задержка из-за блокировки заголовков
- Ограниченная поддержка современных кодеков и метаданных
Расширенный RTMP Расширенная версия для поддержки дополнительных кодеков, таких как H.265; более гибкая, но все еще имеет ограничения

Как используют RTMP

Трансляция в социальных сетях: RTMP остается популярным протоколом для прямых трансляций на платформах социальных сетей. Например, Facebook Live и YouTube Live используют протокол RTMP для публикации потоков от контент-креаторов на их платформах. Это подчеркивает роль RTMP в обеспечении живого взаимодействия с аудиторией.

Игровой стриминг: Многие стримеры игр используют OBS (Open Broadcaster Software), который полагается на RTMP для передачи прямого игрового процесса на платформы, такие как Twitch. Несмотря на ограничения протокола, простота интеграции с этими сервисами делает его жизнеспособным вариантом для игрового стриминга.

Корпоративное прямое вещание: Компании, использующие прямое вещание для корпоративных мероприятий и вебинаров, часто выбирают RTMP для публикации высококачественного видеоконтента. Несмотря на то, что более новые протоколы имеют улучшенную функциональность, RTMP все еще используется для вещания в реальном времени.

Сравнительный анализ: RTMP против HLS и DASH

Характеристика RTMP HLS (HTTP Live Streaming) DASH (Dynamic Adaptive Streaming over HTTP)
Основное использование Прямые трансляции и публикация видео Адаптивная потоковая передача видео в реальном времени и по запросу Адаптивная потоковая передача видео в реальном времени и по запросу
Метод потоковой передачи Передача в реальном времени через TCP Фрагментированная доставка через HTTP Фрагментированная доставка через HTTP
Адаптивная потоковая передача Не поддерживается Поддерживается Поддерживается
Поддержка кодеков Ограничена H.264, AAC, PCMA Поддерживает современные кодеки, такие как H.265 и AAC Поддерживает современные кодеки, такие как H.265 и AAC
Задержка ~1-2 секунды для прямого вещания ~15-40 секунд для прямого вещания ~10-20 секунд для прямого вещания
Обработка нескольких дорожек Одна видеодорожка и одна аудиодорожка Поддерживает несколько дорожек видео и аудио Поддерживает несколько дорожек видео и аудио
Диапазон битрейта Обычно от 1 до 5 Мбит/с для HD потокового вещания Гибкий; может варьироваться от 1 Мбит/с до 25 Мбит/с в зависимости от проигрывателя и условий сети Гибкий; поддерживает широкий диапазон битрейтов от 0,5 Мбит/с до более 20 Мбит/с
Совместимость В основном используется для публикации в социальных сетях Широко используется как для прямого, так и для стриминга по запросу Все больше принимается различными платформами и сервисами
Структура URL Неопределенная, может вызывать путаницу Ясный и стандартизированный формат URL Ясный и стандартизированный формат URL

Проблемы и ограничения

Несмотря на свой успех, RTMP имеет ограничения, которые повлияли на его популярность и использование в современных потоковых средах:

Многобитратное вещание: RTMP сталкивается с трудностями при доставке потоков с несколькими битрейтами, что более эффективно обрабатывается современными протоколами, например, HLS (HTTP Live Streaming).

Обработка нескольких языков: Стандартные методы протокола не поддерживают отправку нескольких аудиотреков для различных языков без специальных модификаций.

Сильная зависимость от условий сети: Зависимость RTMP от TCP может привести к значительным проблемам при плохих условиях сети. Один потерянный пакет может вызвать значительные задержки.

Современные кодеки и метаданные: RTMP не поддерживает современные кодеки, такие как AV1 или продвинутые аудиокодеки, такие как Opus, и не имеет стандартизированных методов для передачи субтитров и других метаданных.

Enhanced RTMP и альтернативы

В ответ на эти ограничения был разработан Enhanced RTMP для поддержки новых кодеков и расширения возможностей RTMP. Однако его принятие было неравномерным. Кроме того, Adobe исследовала другие протоколы, такие как RTMFP (Протокол потоковой передачи мультимедиа в реальном времени) для потоковой передачи на основе UDP и RTMPT (RTMP Tunnel) для вещания с низкой задержкой через HTTP, но они не получили широкого распространения.

RTMP сегодня

Сегодня RTMP в основном используется для публикации видео в социальных сетях и интегрирован в различные инструменты вроде OBS (Open Broadcaster Software). Несмотря на то, что его все реже используют для воспроизведения видео конечными пользователями и обычно эту роль выполняют HLS и DASH, RTMP остается ценным инструментом для прямого вещания и публикации видео. Например, Flussonic продолжает поддерживать RTMP и Enhanced RTMP для воспроизведения, захвата и публикации. Его совместимость с RTMP обеспечивает бесшовную интеграцию протокола в существующие рабочие процессы.

RTMP

Заключение

Путь RTMP от прорывной инновации до специализированного инструмента иллюстрирует его значительное влияние на индустрию потокового видео. Хотя он может уже не быть доминирующей силой, какой он был ранее, наследие RTMP сохраняется благодаря использованию его в конкретных приложениях и влиянию на современные технологии потокового вещания. RTMP стал настоящим «мостом» между прошлым и будущим видеоиндустрии, которая постоянно ищет новые гибкие и надежные решения для стриминга.

Ключевые слова:
Codecs Media Server

Бесплатный триал Flussonic Media Server

Отправляя заявку, вы соглашаетесь с правилами и условиями

Пожалуйста, заполните форму для получения бесплатного тестового ключа.

Если вы не получите от нас письмо в течение 30 мин, проверьте в спаме и добавьте наш адрес в избранные контакты.

Email: support@flussonic.com Phone: +7 (495) 481-37-63