Home » Как настроить видеосервер с помощью Nginx RTMP на Ubuntu 24.04
Как настроить видеосервер с помощью Nginx RTMP на Ubuntu 24.04

Как настроить видеосервер с помощью Nginx RTMP на Ubuntu 24.04

В этой статье разберёмся, как быстро и без боли развернуть свой видеосервер на Ubuntu 24.04 с помощью Nginx и модуля RTMP. Если ты когда-нибудь хотел стримить с OBS на свой сервер, делать restream на YouTube/Twitch, организовать внутренний видеохостинг или просто поиграться с live-видео — этот гайд для тебя. Я расскажу, как всё устроено, почему Nginx RTMP — это не только просто, но и гибко, и как избежать типовых граблей. Будет много практики, примеры конфигов, сравнения с альтернативами и даже немного гиковских лайфхаков. Погнали!

Как это работает: немного магии под капотом

Nginx RTMP — это модуль для популярного веб-сервера Nginx, который добавляет поддержку протокола RTMP (Real-Time Messaging Protocol). RTMP — старый, но до сих пор крайне живой стандарт для передачи аудио/видео в реальном времени. Его любят стримеры, видеохостинги и даже некоторые системы видеонаблюдения. Суть проста: клиент (например, OBS Studio) отправляет поток на сервер, а сервер уже раздаёт его дальше — зрителям, другим сервисам, или пишет в файл.

  • Входящий поток: обычно это RTMP, иногда HLS или даже WebRTC (но это уже отдельная песня).
  • Обработка: Nginx RTMP может ретранслировать, записывать, делать restream, защищать доступ.
  • Выход: зрители могут смотреть поток через RTMP, HLS (HTTP Live Streaming), или DASH.

Всё это работает на обычном сервере — хоть на VPS, хоть на выделенном. Кстати, если нужен сервер под такие задачи — VPS или dedicated — отличный вариант.

Почему Nginx RTMP? Сравнение с альтернативами

Решение Плюсы Минусы Когда использовать
Nginx RTMP
  • Просто ставится
  • Минимум зависимостей
  • Гибкая настройка
  • Работает на любом железе
  • Открытый исходный код
  • Нет поддержки WebRTC
  • Не самый быстрый HLS
  • Редко обновляется
Стриминг, restream, запись, тесты, DIY-видеохостинг
Media Server (Wowza, Nimble, Ant Media)
  • Много фич (WebRTC, transcoding, DRM)
  • Управление через веб-интерфейс
  • Поддержка масштабирования
  • Платно (Wowza, Ant Media)
  • Сложнее в настройке
  • Требует больше ресурсов
Промышленные проекты, большие нагрузки, сложные сценарии
FFmpeg (как сервер)
  • Гибкость, любые форматы
  • Можно делать transcoding на лету
  • Неудобно для постоянного стриминга
  • Нет управления потоками
Трансляция одного потока, автоматизация, обработка видео

Nginx RTMP — идеальный выбор для тех, кто хочет быстро и без лишних заморочек поднять свой видеосервер, не заморачиваясь лицензиями и сложной настройкой.

Быстрая установка Nginx RTMP на Ubuntu 24.04

Ubuntu 24.04 — свежая, стабильная, и отлично подходит для серверных задач. Но в стандартных репозиториях Nginx RTMP обычно нет, поэтому ставим из исходников или используем готовые сборки.

Вариант 1: Сборка из исходников (рекомендую для максимальной гибкости)


sudo apt update
sudo apt install -y build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev git
cd /usr/local/src
sudo git clone https://github.com/arut/nginx-rtmp-module.git
sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz
sudo tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
sudo ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
sudo make
sudo make install

После этого Nginx с RTMP будет лежать в /usr/local/nginx/. Для удобства можно добавить его в systemd или запускать вручную.

Вариант 2: Готовые пакеты (если не хочется собирать)

Есть сторонние PPA, например teward/nginx-rtmp, но они не всегда поддерживают самые свежие версии Ubuntu. Проверяй актуальность!

Базовая настройка: минимальный рабочий конфиг

Открываем /usr/local/nginx/conf/nginx.conf (или /etc/nginx/nginx.conf — если ставил из пакета) и добавляем RTMP-блок:


rtmp {
server {
listen 1935;
chunk_size 4096;

application live {
live on;
record off;
}
}
}

Это минималка: сервер слушает порт 1935 (стандартный RTMP), принимает потоки в приложение live. Можно стримить с OBS или ffmpeg на rtmp://your-server-ip/live/stream.

Добавляем HLS (чтобы смотреть через браузер)

RTMP хорош, но современные браузеры его не поддерживают. Для этого нужен HLS (Apple HTTP Live Streaming). Добавляем в nginx.conf:


application live {
live on;
record off;
hls on;
hls_path /tmp/hls;
hls_fragment 3;
hls_playlist_length 60;
}

И в http-блоке (чтобы раздавать HLS через HTTP):


http {
...
server {
listen 8080;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
}

Теперь можно смотреть поток через http://your-server-ip:8080/hls/stream.m3u8 в VLC, плеерах типа Video.js или даже прямо в браузере.

Практические советы и кейсы

  • Restream на несколько платформ: Добавь в application секцию push:

    push rtmp://a.rtmp.youtube.com/live2/YOUR_KEY;
    push rtmp://live.twitch.tv/app/YOUR_KEY;

    Теперь твой сервер будет одновременно принимать поток и ретранслировать его на YouTube/Twitch.
  • Запись стримов: Включи record all; и укажи record_path /var/streams; — все трансляции будут сохраняться на диск.
  • Ограничение доступа: Используй on_publish и on_play для авторизации через скрипты (например, на Python или bash).
  • Автоматизация: Скрипты для старта/остановки стримов, мониторинг через nginx-rtmp-stat, интеграция с Telegram-ботами для уведомлений.

Типовые ошибки и как их решать

Ошибка Причина Решение
OBS не может подключиться Порт 1935 закрыт, неправильный URL, firewall Открой порт: sudo ufw allow 1935/tcp, проверь URL, логи Nginx
HLS не работает Нет доступа к /tmp/hls, не настроен http-блок Проверь права на папку, настрой http-сервер, смотри логи
Поток лагает Недостаточно ресурсов, слабый сервер, плохой интернет Проверь нагрузку: htop, iftop, попробуй уменьшить битрейт

Альтернативные решения и утилиты

  • SRS (Simple Realtime Server) — современный RTMP/HLS/WebRTC сервер, больше фич, но чуть сложнее в настройке.
  • rtsp-simple-server — если нужен RTSP, HLS, WebRTC в одном флаконе.
  • FFmpeg — для transcoding, записи, автоматизации.
  • OBS Studio — лучший бесплатный софт для стриминга.

Интересные факты и нестандартные сценарии

  • Можно использовать Nginx RTMP для видеонаблюдения: IP-камера шлёт RTMP на сервер, а ты смотришь через HLS где угодно.
  • Автоматизация: скрипты на bash/python для старта/остановки стримов, автоархивация записей, интеграция с Telegram/Slack.
  • Внутренний корпоративный YouTube: сотрудники стримят презентации, а остальные смотрят через браузер.
  • Мультистриминг: один поток — десятки платформ (YouTube, VK, Twitch, Trovo и т.д.) через push.
  • Тестирование видеокодеков: можно быстро запускать разные варианты потоков для сравнения качества/нагрузки.

Автоматизация и новые возможности

Nginx RTMP отлично дружит с автоматизацией. Можно:

  • Писать скрипты для управления потоками (например, через on_publish и on_play события).
  • Интегрировать с CI/CD — например, автоматический запуск стримов после деплоя.
  • Мониторить состояние потоков через HTTP API (stat.xsl), строить графики, отправлять алерты.
  • Использовать в Docker-контейнерах для быстрого масштабирования.

Это открывает кучу сценариев для DevOps, автоматизации видеотрансляций, интеграции с внешними сервисами.

Статистика и сравнение производительности

  • Nginx RTMP спокойно держит десятки одновременных потоков на VPS с 2 ГБ RAM и 2 vCPU.
  • HLS-потоки требуют больше диска и CPU, чем чистый RTMP.
  • Для 100+ зрителей лучше использовать CDN или балансировщик, либо рассмотреть SRS.
  • Wowza и Ant Media дают больше фич, но требуют больше ресурсов и денег.

Выводы и рекомендации

Nginx RTMP — это быстрый, бесплатный и гибкий способ развернуть свой видеосервер на Ubuntu 24.04. Он отлично подходит для стриминга, restream, записи, тестов и даже небольших видеохостингов. Если нужно больше фич (WebRTC, transcoding, масштабирование) — смотри в сторону SRS или коммерческих решений. Но для большинства задач Nginx RTMP — идеальный старт: просто, надёжно, понятно.

  • Используй Nginx RTMP для личных и корпоративных стримов, restream, записи трансляций.
  • Не забывай про безопасность: ограничивай доступ, обновляй сервер, мониторь логи.
  • Для больших нагрузок — масштабируй через Docker или используй CDN.
  • Если нужен сервер под такие задачи — VPS или dedicated — отличный выбор.

Официальная документация и исходники: https://github.com/arut/nginx-rtmp-module

Экспериментируй, автоматизируй, делись опытом — и пусть твои стримы всегда будут в онлайне!


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

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked