Протокол обмена сообщениями в реальном времени (RTMP) — это протокол, предназначенный для передачи данных в реальном времени и широко используемый в потоковых сервисах. В этой статье рассказывается, как создать RTMP-сервер на базе Nginx в CentOS 7 и использовать модуль nginx-http-flv-module для реализации службы потокового мультимедиа HTTP-FLV.
Сначала нам нужно установить Nginx. Установите Nginx на CentOS 7, используя следующую команду:
sudo yum install epel-release
sudo yum install nginx
После завершения установки запустите службу Nginx и настройте ее автоматический запуск при загрузке:
sudo systemctl start nginx
sudo systemctl enable nginx
Для поддержки модуля RTMP нам необходимо установить несколько зависимых библиотек:
sudo yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
cd ~
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
# скачать nginx-rtmp-module
git clone https://github.com/arut/nginx-rtmp-module.git
# компилировать Установить
./configure --add-module=./nginx-rtmp-module
make
sudo make install
Редактировать файл конфигурации Nginx /usr/local/nginx/conf/nginx.conf
:
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
# добавить в HLS поддерживать
hls on;
hls_path /usr/local/nginx/html/hls;
hls_fragment 3;
hls_playlist_length 60;
}
}
}
http {
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
# добавить в HTTP-FLV модуль Конфигурация
location /live {
flv;
root /usr/local/nginx/html;
}
}
}
В конфигурации выше,Определяем RTMP-сервер,Прослушивание порта 1935. в,application live
Используется для обработки прямых трансляций, и мы включили поддержку HLS. Служба HTTP прослушивает порт 80, и добавляется конфигурация модуля HTTP-FLV для обработки потоков HTTP в формате FLV.
Запустите службу Nginx:
sudo /usr/local/nginx/sbin/nginx
Используйте инструменты, поддерживающие потоковую передачу RTMP (например, OBS). Studio) для push-тестирования. Установите адрес для отправки rtmp://your-server-ip:1935/live/stream
。
Для доступа используйте браузер или инструмент, поддерживающий воспроизведение FLV. http://your-server-ip/live/stream.flv
Выполните тест воспроизведения.
На этом этапе вы успешно настроили среду службы потокового мультимедиа с помощью Nginx + RTMP + nginx-http-flv-module.
Вы можете аутентифицировать прямые трансляции через модуль аутентификации Nginx, чтобы предотвратить несанкционированный доступ.
location /live {
flv;
root /usr/local/nginx/html;
# Аутентификация Конфигурация secure_link $arg_hash,$arg_expires;
secure_link_md5 "$secure_link_expires$uri secret";
if ($secure_link = "") {
return 403;
}
}
Если вам нужно использовать HTTPS, вы можете настроить его через модуль SSL Nginx.
server {
listen 443 ssl;
server_name your-domain;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
location / {
root html;
index index.html index.htm;
}
location /live {
flv;
root /usr/local/nginx/html;
}
}
Пожалуйста, обратите внимание на настройку брандмауэра сервера, открытие только необходимых портов и ограничение источников доступа для повышения безопасности сервера.
Из этой статьи вы научились настраивать службу потокового мультимедиа Nginx + RTMP + nginx-http-flv-module в CentOS 7. Этот метод построения можно использовать в прямых трансляциях, видеоконференциях и других сценариях. Он также поддерживает HTTP-FLV для удобного воспроизведения в браузере. В реальных приложениях можно выполнить больше конфигураций в соответствии с потребностями конкретного бизнеса.