Ваша прямая трансляция постоянно вылетает? Если да, вам нужно найти надежный способ размещения вашей трансляции. Но если у вас нет возможности позволить себе дорогие варианты, не беспокойтесь! NGINX RTMP придет на выручку. NGINX RTMP – надежный модуль с открытым исходным кодом, так что вы знаете, что это значит — это бесплатно!
В этом руководстве вы узнаете, как настроить сервер NGINX RTMP, чтобы создать надежную прямую трансляцию на вашем веб-сайте.
Готовы? Читайте дальше и начнем настройку прямой трансляции!
Предварительные требования
Этот учебник будет практическим демонстрационным материалом. Если вы хотите следовать за мной, убедитесь, что у вас есть следующее:
- A Linux server – This demo uses Ubuntu 20.04 LTS, but you can use any other Linux distribution with NGINX.
- NGINX установлен на сервере Linux.
- A non-root user with sudo privileges.
- Минимальные ресурсы для запуска сервера прямой трансляции – 2 ГБ ОЗУ, 2 ядра CPU и 20 ГБ HDD.
Эти значения предложены только в качестве рекомендаций. Точные значения зависят от ваших реальных потребностей в трафике. Чем больше у вас трафика, тем мощнее серверы вам понадобятся для размещения и передачи прямого видео. В разработочной среде сервер NGINX RTMP с 2 ядрами и 2 ГБ ОЗУ достаточен для тестирования.
Настройка сервера RTMP
Теперь, когда предварительные требования учтены, вы можете перейти к установке и настройке вашего сервера RTMP. Сначала установите модуль NGINX, чтобы превратить ваш сервер NGINX в сервер RTMP, затем настройте файл конфигурации NGINX для включения прямых трансляций для пользователей.
1. Откройте терминал и выполните команду apt update
, чтобы обновить все ваши пакеты. Эта команда синхронизирует вашу базу данных пакетов с последней базой данных от Ubuntu.

2. Затем выполните следующую команду, чтобы установить сервер RTMP на вашем сервере Linux.
Модуль libnginx-mod-rtmp
– это модуль NGINX, превращающий ваш сервер NGINX в сервер RTMP. Этот модуль позволяет NGINX взаимодействовать с проигрывателем Adobe Flash, чтобы вы могли транслировать свои видео или аудио в режиме реального времени, и официально поддерживается командой разработчиков.

3. Откройте файл /etc/nginx/nginx.conf в вашем любимом редакторе, чтобы настроить вашу программу RTMP в режиме реального времени. Файл nginx.conf – это файл конфигурации NGINX, содержащий несколько директив или блоков для определения поведения службы NGINX.
4. Наконец, заполните файл nginx.conf следующим кодом, сохраните изменения и закройте редактор.
Приведенный ниже код указывает NGINX действовать как сервер RTMP и включает прямые трансляции для ваших пользователей.
Обеспечение безопасности сети установкой брандмауэра
Вы уже настроили свой сервер NGINX RTMP, но вам нужно обеспечить безопасность вашей сети и контролировать поток трафика. Как? Установкой брандмауэра, Uncomplicated Firewall (UFW), который является стандартным брандмауэром в Ubuntu.
Если вы поместили ваш сервер NGINX RTMP за брандмауэр, вам нужно разрешить открытие порта сервера NGINX RTMP. Поскольку вы сконфигурировали ваш сервер NGINX RTMP на прослушивание порта 1935
, вы разрешите этот порт через ваш брандмауэр.
1. Выполните следующую команду, чтобы добавить правило брандмауэра, открывающее порт 1935
на вашем брандмауэре. Это правило брандмауэра позволяет вашему порту сервера NGINX RTMP 1935
быть доступным для всех входящих и исходящих запросов.

2. Затем выполните следующую команду, чтобы отключить и снова включить ваш брандмауэр. Эта команда в основном перезапускает брандмауэр для любых изменений, чтобы они вступили в силу.
3. Наконец, выполните команду ниже, чтобы проверить состояние вашего брандмауэра и убедиться, что порт 1935
доступен для всех IP-адресов (Везде).

Потоковое видео с использованием FFmpeg
Ваш сервер NFINX RTMP теперь запущен, так что пришло время использовать FFmpeg, чтобы создать пример видео и транслировать его через ваш сервер NGINX RTMP. FFmpeg – это полное решение для записи, преобразования и потоковой передачи аудио и видео во многих различных приложениях, таких как VLC, OMXPlayer, VobSub и так далее.
Вы будете тестировать потоковое видео на вашем сервере, и вы можете использовать любое видео малого размера для потоковой передачи.
1. Выполните команду apt install
ниже, чтобы установить необходимые зависимости для правильной работы FFmpeg.
Ниже приведена команда, которая устанавливает следующее:
libpcre3
– библиотека регулярных выражений, используемая в наборе инструментов ffmpeg для разбора и компиляции регулярных выражений.libpcre3-dev
– Этот пакет содержит заголовочные файлы для разработки пакета libpcre3.libssl-dev
– Криптографическая библиотека OpenSSL, используемая для создания SSL/TLS-соединений в вашем сервере RTMP.zlib1g-dev
: Библиотека zlib – библиотека сжатия и распаковки, которая ускоряет передачу аудио- и видеофайлов по Интернету.

2. Затем выполните следующую команду для установки ffmpeg
на вашем сервере.

3. Наконец, выполните команду ffmpeg
, чтобы выполнить следующее и создать новый прямой эфир:
- Чтение входа (
re
) из исходного файла (i
) с оригинальной частотой кадров. Обязательно заменитеvideo.mp4
на путь и имя вашего видеофайла. - Копирование формата видео буквально (
c:v copy
) и кодирование аудио с кодеком AAC (c:a aac
). - Установите частоту дискретизации аудио на 44100 Гц (
ar 44100
). Если частота дискретизации вашего видео меньше этого значения (44100 Гц), FFmpeg выполняет интерполяцию, чтобы увеличить частоту дискретизации. - Установите аудиоканалы на один канал (моно) (
ac 1
), и формат видео, который будет передавать FFmpeg (-f flv
). - Укажите вашу программу для прямой трансляции RTMP (
rtmp://localhost/live/streamname.flv
), которую вы настроили в разделе “Настройка сервера RTMP” (шаг четыре). Вы можете изменитьstreamname.flv
на любое имя, которое вам нравится.
Как видите ниже, команда ffmpeg
выводит количество кадров в секунду, обнаруженных им, битрейт и частоту кадров нового потока прямой трансляции RTMP.

Заключение
В этом руководстве вы узнали, как настроить сервер RTMP NGINX и включить прямые трансляции на вашем сервере, изменяя файл конфигурации NGINX. Вы также кратко ознакомились с настройкой прямой трансляции видео с помощью инструмента FFmpeg через ваш сервер RTMP NGINX.
Вы только что поняли, что настройка прямой трансляции не обязательно должна обойтись вам каждым пенни. На этом этапе, почему бы не встроить ваш поток на вашу веб-страницу, используя элемент HTML5 <video>? Или настроить OBS Studio для вашего потока RTMP?