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

Сервер для стриминга (RTMP)

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

Сервер для стриминга (RTMP) — сервер для приёма, трансляции и перераспределения видеопотоков по протоколу RTMP (Real-Time Messaging Protocol). Принимает поток от OBS или другого энкодера, конвертирует в HLS/DASH для доставки в браузеры и пересылает на CDN или платформы (YouTube, Twitch).

RTMP (Real-Time Messaging Protocol) — протокол на основе TCP, разработанный Macromedia (Adobe) для низкозадержечного стриминга видео и аудио. Сервер для RTMP-стриминга принимает поток от энкодера (OBS, FFmpeg), обрабатывает его и раздаёт зрителям — напрямую или через конвертацию в более совместимые форматы HLS/DASH.

Архитектура RTMP-стриминга

  1. Инgest. Стример в OBS Studio настраивает RTMP URL своего сервера (rtmp://server.example.com/live) и стриим-ключ. OBS кодирует видео в H.264/H.265 и аудио в AAC, отправляет по TCP порту 1935.
  2. Обработка. nginx с модулем nginx-rtmp-module (или SRS, MediaMTX) принимает поток и может: записать в файл, переслать на другой RTMP-сервер (relay), конвертировать в HLS/DASH для браузеров.
  3. Раздача зрителям. HLS (HTTP Live Streaming) — нарезка на .ts-сегменты по 2-10 секунд + .m3u8-плейлист. Работает в любом браузере через video-тег или HLS.js.

nginx-rtmp — базовая конфигурация

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            # Конвертируем в HLS:
            hls on;
            hls_path /var/www/hls;
            hls_fragment 3s;
            hls_playlist_length 60s;
        }
    }
}

# В блоке http — раздаём HLS:
server {
    listen 8080;
    location /hls {
        types { application/vnd.apple.mpegurl m3u8; }
        root /var/www;
        add_header Cache-Control no-cache;
    }
}

История

RTMP разработан Macromedia в начале 2000-х для стриминга видео в Flash Player. После покупки Macromedia в 2005 году Adobe частично открыла спецификацию RTMP (RTMPE, RTMPS оставались проприетарными). С закатом Flash в 2020 году RTMP утратил роль протокола воспроизведения, но остался стандартом ингеста: все крупные платформы (YouTube Live, Twitch, Facebook Live) принимают потоки именно по RTMP. OBS Studio (2012) и его форк Streamlabs OBS сделали RTMP-стриминг массовым.

RTMP vs HLS vs WebRTC

ПротоколЗадержкаСовместимостьПрименение
RTMP (инgest)1-3 секЭнкодеры (OBS, vMix)Передача потока на сервер
HLS5-30 секВсе браузеры, мобильныеРаздача зрителям
DASH5-30 секБольшинство браузеровАдаптивный стриминг
WebRTC<1 секБраузеры с поддержкой WebRTCВидеозвонки, интерактивные стримы

Сервер для стриминга: масштабирование и CDN

При большом числе зрителей (100+) основная нагрузка — исходящий трафик и CPU для параллельной раздачи HLS-сегментов. Решение: CDN для статических сегментов. nginx-rtmp пишет .ts и .m3u8 файлы в /var/www/hls/, CDN подхватывает их по HTTP. Cloudflare или StackPath кэшируют сегменты и раздают глобально — нагрузка на origin минимальна.

SRS (Simple Realtime Server) — современная альтернатива nginx-rtmp. Поддерживает WebRTC (< 1 сек задержка), HLS, RTMP в одном процессе. Go-программа с низкой latency. MediaMTX (ранее rtsp-simple-server) — для RTSP/WebRTC/RTMP/HLS. Задержка HLS: для live-стримов используй низкое число сегментов и маленький фрагмент (hls_fragment 1s), для VOD — большие (hls_fragment 10s). Low-Latency HLS (LL-HLS, Apple) снижает задержку HLS до 1-3 секунд.

Требования к серверу

Стриминг одного потока в 1080p 60fps (~8 Мбит/с) требует минимум 10 Мбит/с канала. Для 100 одновременных зрителей HLS — 800 Мбит/с исходящего или CDN для раздачи сегментов. Процессорная нагрузка nginx-rtmp на входящий поток минимальна (< 5% одного ядра). Основная нагрузка — конвертация (транскодинг) через FFmpeg при наличии достаточного CPU, если требуется несколько качеств (360p/720p/1080p).

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