Как создать rtmp сервер
Перейти к содержимому

Как создать rtmp сервер

  • автор:

Setup restream with NGINX

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

rtmp
server
listen 1935;
chunk_size 4096;
application studio107
live on;
>
application mirror
live on;
>
application live
live on;
record off;
>
# TODO: other applications: restream, repack
# Dynamic Youtube
application a-youtube
live on;
exec_push ffmpeg \
-i rtmp://localhost/$app/$name \
-c copy \
-f flv rtmp://a.rtmp.youtube.com/live2/$name;
>
application x-youtube
live on;
exec_push ffmpeg \
-i rtmp://localhost/$app/$name \
-c copy \
-f flv rtmp://x.rtmp.youtube.com/live2/$name;
>
>
>
  1. После создания нового сервера установить nginx и пакет для rtmp
# from https://askubuntu.com/questions/1031953/nginx-rtmp-module-on-ubuntu-18-04#1034600 sudo apt update sudo apt install nginx-core nginx-common libnginx-mod-rtmp sudo service nginx restart
  1. Добавить в конец /etc/nginx/nginx.conf :
include /etc/nginx/rtmp.conf;
  1. Создать файл /etc/nginx/rtmp.conf
sudo vim /etc/nginx/rtmp.conf

с содержимым из rtmp.conf (ниже на странице)

# update snap (optional) sudo snap install core; sudo snap refresh core # install certbot sudo snap install --beta --classic certbot sudo snap set certbot trust-plugin-with-root=ok # issue certs sudo certbot --nginx

Как настроить статистику по стримам на /stat

  1. Настроить папку в сайте default
  2. Настроить rtmp_stylesheet директиву
  3. Test at /stat location
  4. Скачать stat.xsl из репозитория: https://raw.githubusercontent.com/arut/nginx-rtmp-module/master/stat.xsl
  5. Положить в корень сайта, например:
# sites/default root /var/www/static; # RTMP location /stat < rtmp_stat all; rtmp_stat_stylesheet stat.xsl; > location /stat.xsl < root /var/www/static; >

Настройка сервера видео-стриминга на Nginx-RTMP

Существует множество вариантов использования потокового видео. К примеру, популярные провайдеры сервисов типа Twitch часто применяются для обработки потоковой передачи и управления сообществом, а свободное программное обеспечение, такое как OBS Studio , широко используется для объединения наложений видео из нескольких источников потоков в режиме реального времени. Конечно, эти платформы очень мощные, однако в некоторых случаях у вас может возникнуть необходимость стримить независимо от других провайдеров.

В этом туториале вы узнаете, как настроить веб-сервер Nginx для размещения независимого видеопотока RTMP, который можно привязать к разным приложениям и просматривать его в них. RTMP ( Real-Time Messaging Protocol ) определяет основы большинства потоковых видео в сети. Также мы разберем, как размещать протоколы HLS и DASH, которые работают по той же технологии, но поддерживают более современные платформы.

Требования

Для выполнения этого мануала потребуется:

  • Сервер (у нас Ubuntu) и пользователь sudo. Как настроить пользователя с этими привилегиями, можете узнать в этом мануале.
  • Установленый Nginx (мы настроили свой согласно этому мануалу по установке Nginx в Ubuntu).

Мы будем использовать условный домен your_domain в URL-адресах и хостах. Замените его своим доменом или IP-адресом.

1: Установка и настройка Nginx-RTMP

Большинство современных потоковых инструментов поддерживают протокол RTMP, который определяет основные параметры сетевого видеопотока. Веб-сервер Nginx включает в себя модуль, который позволяет обеспечить поток RTMP с минимальной конфигурацией с выделенного URL-адреса (аналогично он по умолчанию предоставляет HTTP-доступ к веб-страницам). Модуля Nginx RTMP нет в Nginx, но в Ubuntu и большинстве других дистрибутивов Linux его можно установить как дополнительный пакет.

Чтобы обновить списки пакетов и установить модуль Nginx, выполните следующие команды как не-root пользователь:

sudo apt update
sudo apt install libnginx-mod-rtmp

Установка модуля не запустит стриминг автоматически. Чтобы запустить его, нам нужно будет добавить в файл Nginx блок конфигурации, который определяет, где и как будет доступен наш стрим.

С помощью nano или любого другого текстового редактора откройте конфигурационный файл Nginx /etc/nginx/nginx.conf:

sudo nano /etc/nginx/nginx.conf

и добавьте следующий блок в конец файла:

. . . rtmp  server  listen 1935; chunk_size 4096; allow publish 127.0.0.1; deny publish all; application live  live on; record off; > > >
  • listen 1935 значит, что RTMP будет прослушивать соединения на порту 1935 (это стандарт).
  • chunk_size 4096 означает, что RTMP будет отправлять данные блоками по 4 КБ (также стандарт).
  • Благодаря строкам allow publish 127.0.0.1 и deny publish all сервер разрешает публиковать видео только на том же сервере, чтобы другие пользователи не запускали тут свои стримы.
  • application live определяет application block, который будет доступен по URL-адресу /live.
  • live on включает режим live, чтобы несколько пользователей могли одновременно подключаться к потоку (базовое условие для видеопотока).
  • Record off отключает функцию записи Nginx-RTMP, поэтому по умолчанию все потоки не сохраняются отдельно на диск.

Сохраните и закройте файл. В nano для этого нажмите CTRL+X, затем Y и ENTER.

Это начало конфигурации RTMP. По умолчанию он прослушивает порт 1935, значит, теперь нам нужно открыть этот порт в брандмауэре. Если на сервере настроен ufw, выполните следующую команду:

sudo ufw allow 1935/tcp

Затем можно перезагрузить Nginx:

sudo systemctl reload nginx.service

Теперь RTMP-сервер работает. В следующем разделе мы рассмотрим потоковую передачу видео из локальных и удаленных источников на RTMP-сервер.

2: Отправка видео на сервер RTMP

Есть несколько способов отправить видео на RTMP-сервер. Один из вариантов — воспроизведение видеофайла непосредственно на сервере с помощью популярной аудио-видео утилиты командной строки ffmpeg. Если на сервере еще нет видеофайла, можно загрузить его с помощью инструмента для захвата видео с потоковых платформ (например YouTube) — youtube-dl. Для работы youtube-dl на сервере понадобится последняя версия Python.

Сначала установите Python и менеджер пакетов pip:

sudo apt install python3-pip

Затем с помощью pip установите youtube-dl:

sudo pip install youtube-dl

Теперь с помощью youtube-dl вы можете загружать видео с YouTube.

youtube-dl https://www.youtube.com/watch?v=iom_nhYQIYk -f mp4

Примечание: Иногда в работе возникает ошибка: ERROR: unable to download video data: HTTP Error 403: Forbidden. Это такой баг взаимодействия с YouTube через эту библиотеку. В этом случае вам нужно проверить правильность URL-адреса. Если URL правильный, снова запустите команду.

Вывод покажет, что youtube-dl объединяет видео- и аудиопотоки, которые он загружает в один файл:

[youtube] iom_nhYQIYk: Downloading webpage [download] Destination: Introducing App Platform by DigitalOcean-iom_nhYQIYk.mp4 [download] 100% of 7.90MiB in 01:39

Теперь в текущем каталоге есть необходимый файл. Установите ffmpeg для передачи стримов:

sudo apt install ffmpeg

Давайте с помощью ffmpeg отправим файл на RTMP-сервер:

ffmpeg -re -i «Introducing App Platform by DigitalOcean-iom_nhYQIYk.mp4» -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://localhost/live/stream

Команда ffmpeg выполнит действия для подготовки видео к потоковому формату. Это не мануал по ffmpeg, поэтому мы не будем уделять ему много времени и разберем только несколько базовых параметров:

  • -re значит, что ввод будет считываться с исходной частотой кадров.
  • -i “Introducing App Platform by DigitalOcean-iom_nhYQIYk.mp4” указывает путь к входному файлу.
  • -c:v имеет значение copy, а это значит, что при работе копируется нативный формат видео, полученного с YouTube.
  • -c:a содержит параметры aac -ar 44100 -ac 1, чтобы пересэмплировать аудио в поддерживаемый RTMP формат. aac — широко поддерживаемый аудиокодек, 44 100 Гц — распространенная частота, -ac 1 указывает первую для совместимости версию спецификации AAC.
  • -f flv упаковывает видео в контейнер формата flv для максимальной совместимости с RTMP.

Видео отправляется на rtmp://localhost/live/stream, потому что мы определили блок конфигурации live, а stream — это произвольно выбранный URL-адрес для этого видео.

Примечание: Ознакомьтесь с опциями ffmpeg в ffmprovisr , это поддерживаемый сообществом каталог примеров команд для ffmpeg. Также вы можете обратиться к официальным материалам .

ffmpeg выводит тайм-коды, пока транслируется видео:

frame= 127 fps= 25 q=-1.0 size= 405kB time=00:00:05.00 bitrate= 662.2kbits/s speed=frame= 140 fps= 25 q=-1.0 size= 628kB time=00:00:05.52 bitrate= 931.0kbits/s speed=frame= 153 fps= 25 q=-1.0 size= 866kB time=00:00:06.04 bitrate=1173.1kbits/s speed=

Это стандартный вывод ffmpeg. Эти данные были бы полезны при конвертировании видео в другой формат, потому что они позволяют понять, насколько эффективно ресемплируется видео. Но в данном случае можно просто убедиться, что видео воспроизводится стабильно. В данном случае получим точное значение fps=25.

Пока ffmpeg работает, можно подключиться к потоку RTMP с помощью видеоплеера. Посмотреть стрим можно по адресу rtmp://your_domain/live/stream в медиаплеере (если у вас есть локальная установка VLC, mpv или другой медиаплеер). Поток завершится, когда ffmpeg завершит воспроизведение видео. Если хотите зациклить видео, можно добавить опцию -stream_loop -1 в начало команды ffmpeg.

Примечание. Стримить можно и напрямую, например в Facebook Live с помощью ffmpeg без Nginx-RTMP. Для этого нужно заменить rtmp://localhost/live/stream в команде ffmpeg на rtmps://live-api-s. .facebook.com:443/rtmp/your-facebook-stream-key. YouTube использует URL-адреса типа rtmp://a.rtmp.youtube.com/live2. Другие провайдеры потокового вещания, которые могут потреблять потоки RTMP, должны вести себя аналогично.

Теперь, когда вы научились запускать видеострим из командной строки, давайте разберем, как транслировать видео из динамических источников с помощью OBS на рабочем столе.

3: Стриминг видео на сервер через OBS (опционально)

Потоковая передача через ffmpeg хорошо работает, если у вас есть готовое к воспроизведению видео, но прямая трансляция может быть динамичнее. Самым популярным программным обеспечением для прямых трансляций является OBS (Open Broadcaster Software) — свободное, открытое и очень мощное.

OBS — это настольное приложение, которое будет подключаться к серверу с локального компьютера.

После установки OBS требует настройки: вам нужно выбрать окна рабочего стола и источники звука, которые будут добавлены в поток, а затем добавить учетные данные для службы потоковой передачи. В этом туториале мы не будем рассматривать конфигурацию потоковой передачи, поскольку она зависит от многих факторов, а получить рабочую демонстрацию можно и со стандартными настройками (можно просто стримить свой рабочий стол, например). Чтобы установить учетные данные, откройте меню настроек OBS, перейдите к параметру Stream и введите следующие параметры:

Streaming Service: Custom Server: rtmp://your_domain/live Play Path/Stream Key: obs_stream

obs_stream — произвольно выбранный путь, в этом случае видео будет доступно по адресу rtmp://your_domain/live/obs_stream. Включать аутентификацию не нужно, но нужно добавить дополнительную запись в белый список IP-адресов, который мы настраивали вначале.

На сервере откройте основной файл конфигурации Nginx (/etc/nginx/nginx.conf) и добавьте запись allow publish для локального IP-адреса. Если вы не знаете свой локальный IP-адрес, можете перейти на сайт What’s my IP , который подскажет, откуда вы зашли на сервер.

sudo nano /etc/nginx/nginx.conf

. . . allow publish 127.0.0.1; allow publish your_local_ip_address; deny publish all; . . .

Сохраните и закройте файл, затем перезагрузите Nginx:

sudo systemctl reload nginx.service

Теперь можно закрыть меню настроек OBS и нажать Start Streaming в главном интерфейсе! Попробуйте посмотреть стрим в медиаплеере по адресу rtmp://your_domain/live/obs_stream.

Итак, мы разобрали основы работы с потоковым видео в действии. Далее мы добавим другие функции на сервер, чтобы подготовить его к продакшену еще лучше.

4: Настройка мониторинга (опционально)

Давайте теперь включим страницу статистики RTMP. Nginx позволяет добавлять конфигурации для каждого сайта в отдельные файлы в подкаталоге sites-available/, потому нам не придется добавлять новые конфигурации в основной файл nginx.conf. Создадим файл под названием rtmp:

sudo nano /etc/nginx/sites-available/rtmp

Добавьте следующее содержимое:

server  listen 8080; server_name localhost; # rtmp stat location /stat  rtmp_stat all; rtmp_stat_stylesheet stat.xsl; > location /stat.xsl  root /var/www/html/rtmp; > # rtmp control location /control  rtmp_control all; > >

Сохраните и закройте файл. Файл stat.xsl из этого блока конфигурации используется для вывода страницы статистики RTMP в браузере. Его предоставляет ранее установленная библиотека libnginx-mod-rtmp, но по умолчанию он заархивирован. Поэтому нужно его разархивировать и поместить в каталог /var/www/html/rtmp. Обратите внимание, найти дополнительную информацию о любом из этих параметров можно в материалах Nginx-RTMP .

Создайте каталог /var/www/html/rtmp, а затем распакуйте файл stat.xsl.gz с помощью следующих команд:

sudo mkdir /var/www/html/rtmp

sudo cp /usr/share/doc/libnginx-mod-rtmp/examples/stat.xsl /var/www/html/rtmp/stat.xsl

Чтобы получить доступ к странице статистики, нужно открыть другой порт в брандмауэре. Директива listen настроена на порт 8080, поэтому нам нужно добавить правило для доступа к Nginx через этот порт. Скорее всего, вы не захотите, чтобы кто-то другой мог получить доступ к странице статистики, поэтому лучше разрешить ее только для вашего IP. Выполните следующую команду:

sudo ufw allow from your_ip_address to any port http-alt

Далее нужно активировать эту конфигурацию. В Nginx для этого принято создавать симлинки (как ярлыки) из sites-available/ в sites-enabled/. Создадим такой симлинк:

sudo ln -s /etc/nginx/sites-available/rtmp /etc/nginx/sites-enabled/rtmp

Нужно перезагрузить Nginx, чтобы обработать изменения:

sudo systemctl reload nginx.service

Для просмотра страницы статистики RTMP в браузере перейдите по адресу http://your_domain:8080/stat. Посетите страницу статистики во время потоковой передачи видео и проследите за статистикой трансляции.

Итак, мы разобрали, как контролировать видеопоток и передавать его сторонним провайдерам. В последнем разделе вы узнаете, как запустить его непосредственно в браузере без сторонних платформ потокового вещания или отдельных приложений медиаплеера.

5: Создание современных потоков для браузера (опционально)

Мы также можем добавить поддержку новых потоковых протоколов. Есть два протокола для создания видеопотоков на основе HTTP: HLS от Apple и DASH от MPEG. У каждого есть свои преимущества и недостатки, потому рекомендуем включить поддержку обоих.

Модуль Nginx-RTMP поддерживает оба стандарта. Чтобы добавить поддержку HLS и DASH на сервер, необходимо изменить rtmp block в файле nginx.conf. Откройте файл /etc/nginx/nginx.conf и добавьте такие директивы:

sudo nano /etc/nginx/nginx.conf

. . . rtmp  server . . . application live  live on; record off; hls on; hls_path /var/www/html/stream/hls; hls_fragment 3; hls_playlist_length 60; dash on; dash_path /var/www/html/stream/dash; > > > . . .

Сохраните и закройте файл. Затем добавьте в конец sites-available/rtmp следующее:

sudo nano /etc/nginx/sites-available/rtmp

. . . server  listen 8088; location /  add_header Access-Control-Allow-Origin *; root /var/www/html/stream; > > types  application/dash+xml mpd; >

Примечание. Заголовок Access-Control-Allow-Origin * включает CORS ( Cross-Origin Resource Sharing ), который по умолчанию отключен. Это сообщает браузерам, которые получают доступ к данным с сервера, что сервер может загружать ресурсы с других портов или доменов. CORS необходим для максимальной совместимости с клиентами HLS и DASH , а также для общего переключения конфигурации во многих других веб-развертываниях.

Сохраните и закройте файл. Обратите внимание, что в этом мануале мы используем порт 8088, чтобы избежать конфликтов с запущенными на порту 80 или 443 службами. Откроем этот порт в брандмауэре:

sudo ufw allow 8088/tcp

Чтобы Nginx мог генерировать необходимые файлы для HLS и DASH, создайте каталог stream в root, как указано в нашей конфигурации:

sudo mkdir /var/www/html/stream

sudo systemctl reload nginx

Теперь поток HLS доступен по адресу http://your_domain:8088/hls/stream.m3u8 , а поток DASH — по адресу http://your_domain:8088/dash/stream.mpd. Эти конечные точки будут генерировать все необходимые метаданные поверх видеопотока RTMP для поддержки современных API.

Подводим итоги

Все параметры конфигурации в этом туториале есть на странице Nginx RTMP Wiki . Модули Nginx обычно имеют общий синтаксис и предоставляют большой набор параметров конфигурации, чтобы изменить настройки. Рекомендуем ознакомиться с их материалами.

Почти все стриминговые видео в сети реализованы на основе RTMP, HLS и DASH и используют подход, который представлен в этом туториале. Вы можете настроить стриминг через другие сервисы или предоставлять его любым другим способом.

Полное руководство по RTMP: что это такое и когда его использовать?

Complete Guide To 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 упустил для повышения своей безопасности.

Попробуйте прямую трансляцию Wave.video

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

Разновидности RTMP

Варианты RTMP включают следующее:

  • Real-Time Messaging Protocol Server(RTMPS) — похож на RTMP, только имеет шифрование, т.е. включен уровень защищенных сокетов (SSL) и Transport Layer Security (TLS), и поддерживает все проигрыватели с включенным Flash-плеером. Он используется в сценариях, где крайне важно предотвратить фальсификацию или несанкционированный доступ к данным при их передаче.
  • Encrypted Real-Time Messaging Protocol(RTMPE) — это очень универсальный потоковый протокол, который использует для передачи данных как протокол управления транспортом (TCP), так и протокол пользовательских дейтаграмм (UDP). RTMPE также шифрует все передаваемые данные с помощью фирменного шифрования Adobe, чтобы избежать несанкционированного доступа и несанкционированного вмешательства.
  • Real-Time Messaging Protocol Tunnel(RTMPT) — RTMPT использует механизм туннелирования для обхода брандмауэров , которые обычно блокируют весь трафик RTMP. На практике RTMPT требует, чтобы клиент отправил модифицированный HTTP-запрос на сервер, который отвечает почти такой же HTTP-передачей. Клиент и сервер используют идентификатор сессии; как только соединение установлено, между ними может начаться передача данных.
  • Real-Time Media Flow Protocol(RTMFP) — RTMFP — это усовершенствованная версия RTMP, в которой используется другой формат кодирования UDP для достижения высокопроизводительной потоковой передачи мультимедиа .

История потоковой передачи данных RTMP

Real-Time Messaging Protocol (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 является предоставление средств для потоковой передачи медиаконтента от источника к месту назначения.

Источником медиа может быть прямая трансляция с камеры, предварительно записанное видео, аудио или другое медиа. Местом назначения обычно является сервер потокового мультимедиа, который распространяет контент среди зрителей.

Соединение 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 egress лидируют HTTP Live Streaming (HLS), MPEG-DASH и WebRTC.

Вот краткий обзор альтернатив:

HLS и MPEG-DASH

Эти две технологии практически одинаковы, только HLS является проприетарной, а MPEG-DASH — с открытым исходным кодом.

Самое лучшее в этих двух устройствах то, что они разработаны для обеспечения низкой задержки, оптимального качества мультимедиа и даже для работы с ненадежными сетевыми соединениями.

WebRTC также является достойной альтернативой решениям RTMP egress .

Умирают ли 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 — отличный вариант. Вот как его использовать:

  1. Создайте учетную запись на Wave.video и войдите в систему, если вы этого еще не сделали.
  2. Выберите видео, которое вы хотите транслировать.
  3. Перейдите на страницу «Destinations» на Wave.video и нажмите на «Custom RTMP». RTMP Wave.video
  4. Далее необходимо найти URL-адрес сервера и ключ потока для содержимого, которое вы пытаетесь транслировать. Для этого перейдите на веб-сайт с потоком, который вы хотите просмотреть.
  5. Вы можете использовать стороннее приложение или расширение для извлечения URL и ключа, если не знаете, как это сделать.
  6. Скопируйте URL-адрес сервера и ключ потока.
  7. Вставьте URL-адрес сервера и ключ потока в Wave.video. RTMP name, key, url
  8. Создайте или запланируйте свой поток.
  9. Откройте студию прямого эфира и начните трансляцию.

Вот и все, быстро и просто!

Какие кодировщики поддерживают RTMP?

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

  • Adobe Media Encoder
  • Студия OBS
  • Элементарный сервер
  • 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 будет оставаться актуальным для передачи мультимедиа и потокового вещания.

Присоединяйтесь к нашей рассылке — это бесплатно!

Мы публикуем только хорошее

Связанные

How to Test Webcam on Windows and macOS

Как протестировать веб-камеру на Windows и macOS

How to Go Live on Instagram on Your Computer

Как вести прямую трансляцию в Instagram на компьютере

Познакомьтесь с прямым потоковым вещанием Wave.video

How to Go Live on TikTok the Complete Guide

Как вести прямую трансляцию на TikTok: полное руководство

Мы будем держать вас в курсе событий!

Присоединяйтесь к 5 000 маркетологов, которые читают наши статьи первыми

Инструкция как создать свой собственный сервер для зрителей с RTMP или SRT потоком и плеером на своем сайте?

Давно мечтали о своем собственном сервере онлайн трансляций и своем собственном плеере на своем собственном сайте, куда приходят ваши зрители и спокойно смотрят ваш стрим?

Давно мечтали о своем собственном сервере онлайн трансляций и своем собственном плеере на своем собственном сайте, куда приходят ваши зрители и спокойно смотрят ваш стрим?
Пора уже начинать делать его.
В видосе пошаговая инструкция как с нуля сделать стрим по RTMP или SRT на свой собственный сайт – от момента генерации контента до момента физического просмотра зрителем через ваш плеер на вашем сайте.
Изучайте, смотрите, творите, создавайте свои сервера для ваших проектов!

КОМАНДЫ ДЛЯ НАКАТЫВАНИЯ СЕРВЕРА

Имя пользователя по умолчанию – ubuntu

Копируйте команды по одной, вставляйте кликнув ПРАВОЙ кнопкой мыши в консоль Putty.
После каждой команды жмакаем ENTER.

echo “deb http://nimblestreamer.com/ubuntu bionic/” | sudo tee -a /etc/apt/sources.list

sudo apt-get update

sudo apt-get install nimble

sudo apt-get install nimble-srt

ВАШ ЛОГИН В ПАНЕЛИ НИМБЛА

ВАШ ПАРОЛЬ В ПАНЕЛИ НИМБЛА (будет не видно как он пишется, но он пишется, потом ENTER жмакайте)

sudo service nimble restart

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *