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

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

Функции

  • Производите высококачественное видео в прямом эфире без буферизации
  • Простота установки и настройки.
  • Совместимость с большинством программ и видеосервисов прямого эфира.

Установка веб-сервера Nginx

Перед началом работы на вашем сервере должен быть установлен веб-сервер Nginx. Если он не установлен, вы можете установить его с помощью следующей команды.

apt install nginx -y

После установки пакета Nginx запустите службу Nginx и включите ее запуск при перезагрузке системы.

systemctl start nginxsystemctl enable nginx

Вы можете проверить состояние службы Nginx следующей командой.

systemctl status nginx

Вы получите следующее сообщение.

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-01-09 14:54:55 UTC; 28s ago
       Docs: man:nginx(8)
    Process: 43294 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
   Main PID: 43005 (nginx)
      Tasks: 3 (limit: 4575)
     Memory: 8.5M
        CPU: 35ms
     CGroup: /system.slice/nginx.service
             ??43005 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??43295 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??43296 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
Jan 09 14:54:55 vultr systemd[1]: Starting A high performance web server and a reverse proxy server...
Jan 09 14:54:55 vultr systemd[1]: Started A high performance web server and a reverse proxy server.
Jan 09 14:55:04 vultr systemd[1]: Reloading A high performance web server and a reverse proxy server...
Jan 09 14:55:04 vultr systemd[1]: Reloaded A high performance web server and a reverse proxy server.

Установка и настройка

По умолчанию пакет Nginx-RTMP включен в репозиторий Ubuntu по умолчанию. Вы можете установить его следующей командой.

apt install libnginx-mod-rtmp -y

После установки пакета Nginx-RTMP отредактируйте основной конфигурационный файл Nginx и определите ваш поток.

nano /etc/nginx/nginx.conf

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

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        allow publish all; 
        application live {
            live on;
            record off;
        }
    }
}

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

nginx -t

Вы должны увидеть следующий результат.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Наконец, перезапустите службу Nginx, чтобы применить изменения.

systemctl restart nginx

На данный момент Nginx-RTMP установлен и слушает порт 1935. Вы можете проверить это следующей командой.

ss -antpl | grep 1935

Вы должны увидеть следующий результат.

LISTEN 0 511 0.0.0.0:1935 0.0.0.0:* users:(("nginx",pid=43388,fd=8),("nginx",pid=43387,fd=8),("nginx",pid=43386,fd=8))

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

Следующим шагом вам нужно загрузить пример видео с YouTube и отправить его на ваш RTMP-сервер с помощью FFmpeg.

Сначала установите пакет youtube-dl ad FFmpeg с помощью следующей команды.

apt install python3-pip ffmpeg -ypip install youtube-dl

Следующая команда: загрузите любое видео с YouTube с помощью инструмента командной строки youtube-dl.

youtube-dl https://www.youtube.com/watch?v=oNEwEQ0uU1Y
Когда видео загружено в вашу систему, вы можете отправить его на RTMP-сервер с помощью команды FFmpeg.
ffmpeg -re -i "How to Install Ubuntu 22.04 LTS-oNEwEQ0uU1Y.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://your-server-ip/live/stream &

На этом этапе ваше загруженное видео отправляется на rtmp://your-server-ip/live/stream

Передача видео на VLC Player

В этом разделе мы покажем вам, как передавать видео с RTMP-сервера на плеер VLC.

Сначала войдите в систему рабочего стола и откройте плеер VLC. Затем нажмите на Media => Open Network Stream. Вы должны увидеть следующий экран.

Определите URL вашего RTMP сервера и нажмите на кнопку Play. Если все работает, вы должны увидеть видео на следующем экране.

Настройка статистики

На данном этапе ваш RTMP-сервер установлен и работает. Теперь вам нужно настроить страницу статистики RTMP для мониторинга потокового вещания.

Настройка

Сначала создайте каталог для сохранения файла статистики RTMP с помощью следующей команды.

mkdir /var/www/html/rtmp

Затем скопируйте файл RTMP stat в созданный каталог.

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

Далее отредактируйте файл конфигурации виртуального хоста Nginx по умолчанию.

nano /etc/nginx/sites-available/default

Удалите все строки по умолчанию и добавьте следующее:

server {
    listen 8080;
    server_name _;
    # 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;
    }
}

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

systemctl restart nginx

Проверка

Сейчас откройте веб-браузер и зайдите на страницу статистики RTMP, используя URL http://your-server-ip:8080/stat. Вы должны увидеть статистику RTMP на следующем экране.

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

Заключение

В этой заметке рассказывается о том, как настроить сервер потокового видео с помощью Nginx-RTMP на Ubuntu 22.04. Мы также протестировали RTMP-сервер через плеер VLC. Теперь вы можете передавать любое видео на RTMP-сервер и получать доступ к нему с помощью любого поддерживаемого медиаплеера. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.howtoforge.com

Похожие статьи

Комментарии (1)

  • George Zautashvili
    #

    Спасибо за статью. Согласно инструкции вывел статистику в браузере.
    Еще хотел уточнить, как вывести hls, dash стрим на сайте, в веб плеере, если сервер nginx установлен в локальной сети с паблик ip, а сайт находится у хост провайдера