hostprofi.ru
Подобрать хостинг
Термин·буква N

Nginx-RTMP

краткое определение

Nginx-RTMP — модуль для nginx, превращающий сервер в медиа-стриминг платформу. Принимает видеопоток от стримера по протоколу RTMP и раздаёт его зрителям через RTMP, HLS или DASH. Используется для self-hosted трансляций без YouTube/Twitch.

Nginx-RTMP Module (nginx-rtmp-module) — open-source расширение для веб-сервера nginx, реализующее поддержку протоколов RTMP (Real-Time Messaging Protocol) и HLS (HTTP Live Streaming) для видеотрансляций в реальном времени. Позволяет развернуть собственный стриминг-сервер на VPS без зависимости от YouTube, Twitch или других платформ. Стример подключается к серверу по RTMP из OBS Studio или FFmpeg, а зрители получают поток через HLS в браузере или через RTMP в медиаплеере.

Как работает

Протоколы стриминга:

RTMP (Real-Time Messaging Protocol)
Разработан Macromedia (ныне Adobe) в 2002 году. Бинарный протокол поверх TCP, порт 1935. Минимальная задержка (2–5 секунд). Используется для приёма потока от стримера (ingest). Браузеры не поддерживают RTMP напрямую с момента отказа от Flash (2020).
HLS (HTTP Live Streaming)
Разработан Apple в 2009 году (RFC 8216). Нарезает видеопоток на фрагменты (сегменты) по 2–10 секунд и раздаёт через обычный HTTP. Задержка 10–30 секунд (в зависимости от длины сегментов). Поддерживается всеми браузерами, iOS и Android нативно.
DASH (Dynamic Adaptive Streaming over HTTP)
Стандарт ISO (2011). Аналог HLS, поддерживает адаптивный битрейт. Менее распространён в self-hosted решениях.

Nginx-rtmp-module превращает RTMP-поток в HLS автоматически: принимает RTMP от стримера, нарезает на .ts-сегменты, генерирует m3u8-плейлист. Nginx раздаёт .ts файлы по HTTP — браузер с video.js или hls.js воспроизводит трансляцию без Flash.

Конфигурация в nginx.conf добавляет блок rtmp { } с директивой application live и вложенными hls on, hls_path /var/hls. После установки стример указывает в OBS адрес сервера (rtmp://IP/live) и stream key.

Дополнительные возможности: запись трансляции в файл (record all), ретрансляция на YouTube/Twitch одновременно с собственным сервером (push rtmp://), аутентификация потока через on_publish callback.

История

RTMP создан Macromedia (Adobe) в 2002 году для Flash Player. Открыт Adobe в 2012 году. Nginx-rtmp-module разработал Роман Арутюнян (GitHub: arut) в 2012 году. Проект активно используется, хотя официально не обновляется с 2015 года — базовая функциональность стабильна. Альтернативы: SRS (Simple RTMP Server, 2013, активно развивается), MediaMTX (2020, Go, поддерживает RTSP/WebRTC/RTMP), nginx с RTMP через livepeer-protocol. Flash EOL (декабрь 2020) переключил доставку видео на HLS; RTMP сохранился как протокол ingestion стримеров.

На что обращать внимание

Для стриминга нужна высокая пропускная способность канала: HD-трансляция (1080p 30fps, bitrate 4–6 Мбит/с) на 100 зрителей — 400–600 Мбит/с исходящего трафика. Планируйте сервер исходя из ожидаемого числа зрителей. Для большой аудитории размещайте HLS-сегменты за CDN — nginx генерирует файлы, CDN раздаёт их географически распределённо. Задержка HLS (10–30 секунд) приемлема для записи лекций и вебинаров, но неприемлема для интерактивных стримов — используйте WebRTC или LL-HLS (Low Latency HLS, задержка 2–5 сек).

RTMP-модуль Nginx

nginx-rtmp-module (Arut, 2011) — модуль для live-стриминга поверх Nginx. Принимает RTMP-потоки (порт 1935/TCP), транскодирует через FFmpeg, раздаёт HLS/DASH. Сборка: --add-module=nginx-rtmp-module. Конфиг: блок rtmp { server { application live {} } }.

Конвертация RTMP → HLS

Конфиг application live: exec ffmpeg -i rtmp://localhost/live/$name -c:v libx264 -c:a aac -f flv rtmp://localhost/hls/$name. HLS application: hls on; hls_path /var/www/hls; hls_fragment 3s. Nginx раздаёт .m3u8 + .ts файлы как обычную статику.

Производительность и альтернативы

nginx-rtmp-module: 1 vCPU обрабатывает ~10 потоков 720p. Transcoding — CPU-intensive: 1 поток 1080p ≈ 4 ядра H.264. Альтернативы: MediaMTX (ранее rtsp-simple-server) — поддерживает RTMP/RTSP/HLS/WebRTC без Nginx. SRS (Simple RTMP Server) — больше возможностей для корпоративных стримингов. CDN для видео нужен при аудитории от 100+ зрителей.

Nginx RTMP принимает стримы от OBS на VPS. SSL для RTMPS (порт 443). CDN для видео раздаёт HLS. Мониторинг через stat-модуль Nginx RTMP. Балансировщик для нескольких Origin-серверов при высокой нагрузке.

Другие термины