Полное руководство по RTMP: что это такое и когда его использовать?
Протокол обмена сообщениями в реальном времени (RTMP) - это широко используемый формат потокового вещания. Он существует уже много лет и стал важным инструментом для вещателей, операторов сетей и многих других отраслей. Однако некоторые заблуждения относительно RTMP сделали его менее популярным, чем он мог бы быть.
Но что такое RTMP? Как он работает? И стоит ли вам использовать его для своей следующей прямой трансляции?
Узнайте об этом и многом другом ниже.
Что такое RTMP?
RTMP - это сетевой протокол или система, используемая для потоковой передачи медиаконтента через Интернет на основе технологии Transmission Control Protocol (TCP).
TCP - это один из компонентов, составляющих набор интернет-протоколов. Другой важный компонент - интернет-протокол, также называемый IP.
RTMP - это сетевой протокол или система, используемая для потоковой передачи медиаконтента через Интернет.
Вместе TCP и IP выступают в качестве коммуникационных мостов между прикладным и сетевым уровнями. Подумайте об этом так: прикладной уровень включает в себя то, с чем вы обычно взаимодействуете, например браузер Mozilla Firefox или любое другое пользовательское приложение.
Чтобы браузер Firefox загрузил веб-страницу, он должен отправить запрос на сервер сайта. Получив запрос, сервер отправляет запрашиваемый ресурс (например, видеопоток, заранее записанное видео на YouTube или Html-код для веб-страницы).
Чтобы поддерживать эффективную связь (т. е. избежать потери или задержки корреспонденции), сообщение должно быть разобрано на более мелкие части, называемые пакетами. Это делается на стороне отправителя, а после получения сообщения оно вновь собирается для пользователя.
TCP - это компонент, который занимается разбиением сообщения на пакеты или более мелкие части, которые могут быть переданы эффективно и качественно.
Уровень IP выступает в качестве агента пересылки, определяющего оптимальные маршруты для передачи пакетов через Интернет.
Протокол RTMP используется многими популярными медиаплеерами, включая Adobe Flash Player, VLC Media Player, QuickTime Player и Windows Media Player. RTMP также поддерживается некоторыми веб-браузерами, включая Google Chrome и Mozilla Firefox.
Для большинства пользователей при выборе решения для потокового вещания главным является качество передачи контента. Если качество разрешения потоковой передачи низкое, то для большинства потребителей это станет причиной отказа. Аналогично, решение для потокового вещания с высокой задержкой и слишком долгим буферизацией или загрузкой перед воспроизведением контента не будет пользоваться успехом.
Именно здесь RTMP проявляет себя во всей красе. С момента своего появления RTMP гарантирует низкую задержку, минимальную буферизацию и одно из лучших разрешений потоковой передачи при условии, что сетевое соединение достаточно сильное и быстрое.
Еще одним плюсом RTMP является его способность поддерживать массовую потоковую передачу одновременно и без особых проблем.
Однако, несмотря на то, что система RTMP существует уже много лет, в последнее время она стала объектом пристального внимания, поскольку небезопасна для пользователей.
Вот как возникает уязвимость в системе безопасности:
Во-первых, протокол RTMP не имеет встроенных средств шифрования. Поэтому любая связь или передача пакетов при использовании RTMP открыта для прослушивания неавторизованными группами или атак типа "человек посередине".
Еще одним фактором, повлиявшим на уязвимость RTMP, является то, что его исходный код долгое время был проприетарным. Проприетарное программное обеспечение (т. е. программное обеспечение, права собственности и контроля над которым ограничены организацией, разработавшей или купившей его) обычно регулярно получает исправления безопасности, но этого недостаточно.
Новые уязвимости появляются часто, а сообщество, созданное вокруг программного обеспечения с открытым исходным кодом, гарантирует относительно более частые и качественные исправления безопасности. Именно этого не хватало RTMP для повышения уровня безопасности.
Разновидности RTMP
Варианты RTMP включают в себя следующее:
- Real-Time Messaging Protocol Server (RTMPS) - похож на RTMP, только с шифрованием, т. е. с включенным уровнем защищенных сокетов (SSL) и Transport Layer Security (TLS), и поддерживает все плееры с включенным Flash-плеером. Он используется в сценариях, где крайне важно предотвратить подделку или несанкционированный доступ к передаваемым данным.
- Зашифрованный протокол Real-Time Messaging Protocol (RTMPE) - это очень универсальный протокол потоковой передачи данных, который использует как протокол управления транспортом (TCP), так и протокол User Datagram Protocol (UDP) для передачи данных. RTMPE также шифрует все передаваемые данные с помощью фирменного шифрования Adobe, чтобы избежать несанкционированного доступа и несанкционированного вмешательства.
- Real-Time Messaging Protocol Tunnel (RTMPT) - RTMPT использует механизм туннелирования для обхода брандмауэров , которые обычно блокируют весь RTMP-трафик. На практике RTMPT требует, чтобы клиент отправил модифицированный HTTP-запрос на сервер, который отвечает почти такой же HTTP-передачей. Клиент и сервер используют идентификатор сессии; как только соединение установлено, между ними может начаться передача данных.
- Real-Time Media Flow Protocol (RTMFP) - RTMFP является усовершенствованной версией RTMP, поскольку использует другой формат кодирования UDP для достижения высокопроизводительной потоковой передачи мультимедиа.
История потоковой передачи данных RTMP
Протокол обмена сообщениями в реальном времени (RTMP) изначально был собственным протоколом, разработанным компанией Macromedia для потоковой передачи аудио, видео и данных через Интернет между Flash-плеером и сервером.
RTMP сегодня используется многими популярными онлайн-сервисами, такими как Facebook, Twitch и Twitter, для трансляции видео в реальном времени.
Первый публичный релиз RTMP был выпущен в 2002 году. В 2009 году Adobe выпустила версию RTMP с открытой спецификацией, известную как OpenRTMP. Основное различие между RTMP и OpenRTMP заключается в том, что в OpenRTMP можно использовать любой медиасервер, а не только Flash Media Server (FMS).
Кроме того, открытая спецификация RTMP обеспечивает большую гибкость в отношении того, как разработчики могут защитить или настроить одноранговую функциональность. Это призвано стимулировать инновации и сотрудничество через конкуренцию и открытый доступ разработчиков для создания идеального решения RTMP.
Главный принцип
Для доставки контентаRTMP использует технику, называемую "потоковой передачей". Это означает, что данные передаются небольшими частями, называемыми "фрагментами". Эти фрагменты собираются на другом конце, так что пользователь может смотреть или слушать контент, не дожидаясь его полной загрузки.
Работа RTMP состоит из двух частей: Доставка на первую и последнюю милю.
Доставка по первой миле обычно включает передачу мультимедиа от кодера на сервер с помощью RTMP. Доставка по последней миле подразумевает передачу медиафайлов с сервера на устройство пользователя. Для этой второй части используется Flash-плеер или аналогичный инструмент. По некоторым данным, компания Adobe прекращает поддержку Flash, что означает конец доставки "последней мили".
В ответ на это индустрия приняла протокол Hypertext Transfer Protocol (HTTP), более эффективное решение для потоковой передачи данных.
Разновидности RTMP, такие как RTMPT, в настоящее время используют HTTP для инкапсуляции и передачи мультимедиа.
Как работает RTMP Ingest
Это, вероятно, одно из достоинств RTMP, благодаря которому он существует так долго. Когда мир отошел от просмотра медиа на компьютерах и перешел к просмотру на мобильных устройствах, RTMP столкнулся с проблемой.
Например, RTMP полагался на плеер Adobe Flash для обеспечения бесперебойной работы потокового вещания, но тут возникла небольшая проблема. Мобильные устройства не поддерживали Adobe Flash Player; по сути, RTMP стал бесполезен для пользователей, которые хотели получить те же потоковые сервисы на своих мобильных устройствах.
В ответ Apple разработала протокол HLS для поддержки функции потокового вещания на мобильных устройствах.
Было вполне разумно ожидать, что RTMP устареет. К счастью, он продолжает жить вместе с RTMP ingest, занимая свою нишу в качестве идеального протокола для передачи мультимедиа от кодера к серверу.
RTMP ingest отдает предпочтение дешевым кодировщикам и, как правило, предлагает пользователям потоковую передачу с низкой задержкой.
Она включает в себя три основных компонента:
1. Рукопожатие
Когда клиент хочет подключиться к RTMP-серверу, ему сначала нужно установить рукопожатие. Этот процесс начинается с того, что клиент отправляет серверу запрос "connect", который содержит информацию о клиенте и типе соединения, которое он пытается установить.
Затем сервер отвечает сообщением "connected", которое содержит информацию о сервере и типе установленного соединения.
Наконец, клиент и сервер обмениваются сообщениями, чтобы подтвердить, что они все еще подключены, и согласовать параметры, необходимые для соединения.
2. Соединение
Основная цель соединения RTMP ingest - предоставить средства для потоковой передачи медиаконтента от источника к месту назначения.
Источником медиаданных может быть прямая трансляция с камеры, предварительно записанное видео, аудио или другие медиаданные. Местом назначения обычно является сервер потокового мультимедиа, который распространяет контент среди зрителей.
Соединение RTMP ingest состоит из трех компонентов:
- Кодер преобразует видео- и аудиосигнал в цифровой формат, который можно передавать через Интернет.
- Транспорт: Это среда, по которой кодированный сигнал передается от кодера к серверу; обычно это делается через UDP или TCP.
- Сервер получает закодированный сигнал и делает его доступным для зрителей (обычно упаковывая его в формат типа Flash).
3. Потоковая передача
Когда пользователь передает контент на медиасервер, сервер должен сначала закодировать входящее видео и аудио, прежде чем отправить его всем подключенным клиентам.
Процесс кодирования и переформатирования видео и аудио в стандартный формат файлов называется транскодированием. Он включает в себя преобразование входного сигнала в форму, которая может быть воспроизведена на различных устройствах.
Подробнее о потоковом вещании Существует два типа потокового вещания: в прямом эфире и по требованию. Прямая трансляция - это трансляция в режиме реального времени, а трансляция по требованию - это когда пользователи могут смотреть контент в удобное время.
Прямая трансляция требует постоянного соединения между клиентом и сервером, а трансляция по требованию - нет.
RTMP использует TCP для поддержания постоянного соединения между клиентом и сервером, что позволяет передавать потоки с низкой задержкой. Однако RTMP не очень хорошо подходит для потоковой передачи по требованию.
Альтернативы RTMP для загрузки
SRT и WebRTC - основные претенденты, которые могут сравниться с возможностями RTMP или даже превзойти их. Вот краткий обзор этих двух альтернатив:
Безопасный надежный транспорт (SRT)
SRT восполняет пробелы, с которыми не справился RTMP, например, поддерживает низкую задержку потокового вещания даже при подключении пользователя к относительно ненадежной сети. Это делает его отличным выбором как для прямой трансляции, так и для трансляции по требованию.
Поскольку это открытый исходный код, его возможности безграничны, и можно не беспокоиться о том, что поддержка разработчиков будет прекращена.
Веб-коммуникации в реальном времени (WebRTC)
WebRTC выигрывает благодаря возможности публикации через браузер. Протокол WebRTC HTTP Ingest Protocol (WHIP) также находится в разработке, и для пользователей это означает, что они смогут осуществлять потоковую передачу с помощью только веб-браузера, не утруждая себя кодировщиками, как в случае с RTMP.
Альтернативы RTMP для эвакуации
В списке альтернатив RTMP egress лидируют HTTP Live Streaming (HLS), MPEG-DASH и WebRTC.
Вот краткий обзор альтернативных вариантов:
HLS и MPEG-DASH
Эти две технологии практически одинаковы, только HLS является проприетарной, а MPEG-DASH - с открытым исходным кодом.
Самое лучшее в этих двух устройствах то, что они обеспечивают низкую задержку, оптимальное качество мультимедиа и работают даже при ненадежных сетевых подключениях.
WebRTC также является достойной альтернативой решениям RTMP.
Умирают ли RTMP и Flash?
Короткий ответ: скорее всего, нет. Длинный ответ немного сложнее.
Неуклонный рост популярности HTML5 и распространение способных альтернатив Flash могут создать впечатление, что RTMP и Flash умирают. Но это не так.
Flash уже давно переживает упадок, уступив в последние годы значительную долю рынка HTML5, и его некогда доминирующее положение в мире видео теперь постоянно находится под угрозой.
Тем не менее, он по-прежнему широко представлен в Интернете и используется многими популярными сайтами, включая YouTube и Facebook.
Что касается RTMP, то он по-прежнему широко используется для потоковой передачи аудио- и видеоконтента. Однако его будущее менее определенно, чем будущее Flash.
Компания Adobe объявила о прекращении поддержки RTMP в 2020 году, что может означать конец этого протокола. Тем не менее, существует множество альтернатив, основанных на RTMP, поэтому он, вероятно, будет продолжать использоваться в той или иной форме еще долгие годы.
Так стоит ли вести потоковую передачу с помощью RTMP?
Это зависит от обстоятельств. Посмотрите на некоторые плюсы и минусы использования RTMP.
Плюсы
- Это очень стабильно. По сравнению с другими альтернативами на рынке, при использовании сервиса с поддержкой RTMP крайне маловероятно столкнуться с какими-либо сбоями или простоями.
- Низкая задержка и минимальная буферизация. RTMP уникален в этом отношении, что означает, что пользователи могут смотреть видео в лучшем разрешении, а на загрузку медиафайлов уйдет значительно меньше времени.
- Совместимость. Надежность и прочность RTMPS побудила больше производителей разрабатывать свои продукты для легкой интеграции с RTMP.
Cons
- RTMP требует постоянного соединения между клиентом и сервером, что может быть проблематично при перебоях в сети.
- Поскольку это проприетарное программное обеспечение, у него мало гибкости для опытных пользователей.
ВОПРОСЫ И ОТВЕТЫ
Как использовать Wave.video для потоковой передачи через RTMP?
Если вы хотите передавать потоковое видео по протоколу RTMP, Wave.video - отличный вариант. Вот как его использовать:
- Создайте учетную запись на Wave.video и войдите в нее, если вы еще этого не сделали.
- Выберите видео, которое вы хотите транслировать.
- Перейдите на страницу "Destinations" на Wave.video и нажмите на "Custom RTMP".
- Далее вам нужно найти URL-адрес сервера и ключ потока для контента, который вы хотите транслировать. Для этого перейдите на сайт с потоком, который вы хотите просмотреть.
- Вы можете использовать стороннее приложение или расширение для извлечения URL и ключа, если не знаете, как это сделать.
- Скопируйте URL-адрес сервера и ключ потока.
- Вставьте URL-адрес сервера и ключ потока в Wave.video.
- Создайте или запланируйте свой поток.
- Откройте студию прямого эфира и начните трансляцию.
Вот и все, быстро и просто!
Какие кодировщики поддерживают RTMP?
Существует множество аппаратных и программных средств кодирования, поддерживающих RTMP. Некоторые из них включают:
- Adobe Media Encoder
- OBS Studio
- Элементарный сервер
- TriCaster
- Проводка
- vMix
- TeraDek
- Wowza Streaming Engine
- Ниагарское видео
RTMP против RTSP - что лучше?
RTMP и RTSP - это протоколы для потоковой передачи аудио, видео и данных через Интернет. Они во многом похожи, но некоторые ключевые различия делают их идеальными для разных ситуаций и предпочтений.
Вот краткая информация о ключевых различиях между ними:
- RTMP лучше подходит для прямой трансляции, а RTSP - для трансляции по требованию.
- RTMP имеет меньшую задержку, а RTSP может обеспечить более высокое качество видео.
- Для работы RTMP требуется Flash Media Server, в то время как RTSP может работать с любым медиасервером.
Так какой же протокол лучше? Все зависит от ваших конкретных потребностей.
RTMP - хороший выбор, если вам нужна низкая задержка и вы не против использовать Flash. RTSP может быть идеальным вариантом, если вам нужно высококачественное видео или вы хотите использовать медиасервер без Flash.
Что такое формат сообщений действия (AMF)?
AMF - это двоичный формат для кодирования и передачи данных через Интернет, который часто используется в сочетании с RTMP.
AMF позволяет передавать данные, несовместимые с RTMP, например объекты ActionScript. Он также обеспечивает эффективный обмен данными между Flash-приложениями и серверами.
Что такое URL RTMP и как получить его из Facebook или YouTube?
URL-адрес RTMP - это уникальный идентификатор, используемый для передачи видеоконтента в реальном времени на различные платформы.
Обычно он содержит IP-адрес, доменное имя и номер порта.
Чтобы получить его с YouTube или Facebook, необходимо создать мероприятие с прямой трансляцией на любой из платформ. После этого вы сможете найти URL-адрес RTMP в настройках события.
Заключительные размышления
RTMP, несомненно, оставил свой след в мире. Не собирается ли он уходить? В качестве решения для выхода - возможно, для входа - нет!
Даже если появятся другие, не менее или более способные альтернативы, RTMP останется актуальным для передачи мультимедиа и потокового вещания.