RTMP est un protocole de messagerie en temps réel développé par Macromedia qui peut être utilisé pour diffuser de l'audio, de la vidéo et des données sur Internet. Nginx RTMP est un streamer multimédia basé sur Nginx qui comprend de nombreuses fonctionnalités, notamment la prise en charge H264/AAC, le transcodage en ligne avec FFmpeg, la prise en charge du rappel HTTP et un module de contrôle HTTP pour l'enregistrement audio/vidéo.
Dans ce tutoriel, nous allons vous montrer comment compiler Nginx avec le module RTMP et créer un flux en direct RTMP sur CentOS 8.
Prérequis
- Un nouveau VPS CentOS 8 sur la plate-forme cloud Atlantic.Net
- Un mot de passe root configuré sur votre serveur
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant CentOS 8 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur CentOS 8, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
yum update -y
Étape 2 - Installer les dépendances requises
Avant de commencer, vous devrez installer les dépendances nécessaires pour compiler Nginx avec le support RTMP. Tout d'abord, installez le package du groupe Development Tool avec la commande suivante :
yum groupinstall 'Development Tools' -y
Ensuite, installez le référentiel EPEL avec la commande suivante :
yum install epel-release -y
Une fois installé, installez les autres dépendances requises à l'aide de la commande suivante :
yum install wget git unzip perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel pcre-devel GeoIP GeoIP-devel -y
Une fois tous les packages installés, vous pouvez procéder à la compilation de Nginx.
Étape 3 – Télécharger les composants requis
Tout d'abord, vous devrez télécharger les composants requis pour compiler Nginx avec le support RTMP.
Tout d'abord, téléchargez la dernière version stable de Nginx avec la commande suivante :
wget http://nginx.org/download/nginx-1.18.0.tar.gz
Une fois téléchargé, extrayez-le à l'aide de la commande suivante :
tar -xvzf nginx-1.18.0.tar.gz
Ensuite, téléchargez PCRE et Zlib avec la commande suivante :
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.zip wget https://www.zlib.net/zlib-1.2.11.tar.gz
Une fois téléchargés, extrayez-les avec la commande suivante :
unzip pcre-8.42.zip tar -xvzf zlib-1.2.11.tar.gz
Une fois les deux extraits, téléchargez OpenSSL avec la commande suivante :
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
Ensuite, extrayez le package téléchargé avec la commande suivante :
tar -xzvf openssl-1.1.0h.tar.gz
Ensuite, téléchargez la dernière version du module Nginx RTMP à partir du référentiel Git à l'aide de la commande suivante :
git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git
Une fois tous les composants téléchargés, vous pouvez passer à l'étape suivante.
Étape 4 - Installer Nginx avec prise en charge RTMP
Tout d'abord, changez le répertoire en Nginx avec la commande suivante :
cd nginx-1.18.0/
Ensuite, configurez Nginx avec le support RTMP à l'aide de la commande suivante :
./configure --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib64/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --user=nginx \ --group=nginx \ --build=CentOS \ --builddir=nginx-1.18.0 \ --with-select_module \ --with-poll_module \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module=dynamic \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --http-log-path=/var/log/nginx/access.log \ --http-client-body-temp-path=/var/cache/nginx/client_temp \ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ --with-mail=dynamic \ --with-mail_ssl_module \ --with-stream=dynamic \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module=dynamic \ --with-stream_ssl_preread_module \ --with-compat \ --with-pcre=../pcre-8.42 \ --with-pcre-jit \ --with-zlib=../zlib-1.2.11 \ --with-openssl=../openssl-1.1.0h \ --with-openssl-opt=no-nextprotoneg \ --add-module=../nginx-rtmp-module \ --with-debug
Une fois le processus de configuration terminé, vous devriez obtenir le résultat suivant :
Configuration summary + using threads + using PCRE library: ../pcre-8.42 + using OpenSSL library: ../openssl-1.1.0h + using zlib library: ../zlib-1.2.11 nginx path prefix: "/etc/nginx" nginx binary file: "/usr/sbin/nginx" nginx modules path: "/usr/lib64/nginx/modules" nginx configuration prefix: "/etc/nginx" nginx configuration file: "/etc/nginx/nginx.conf" nginx pid file: "/var/run/nginx.pid" nginx error log file: "/var/log/nginx/error.log" nginx http access log file: "/var/log/nginx/access.log" nginx http client request body temporary files: "/var/cache/nginx/client_temp" nginx http proxy temporary files: "/var/cache/nginx/proxy_temp" nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp" nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp" nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"
Ensuite, installez Nginx avec la commande suivante :
make make install
Après avoir installé Nginx, vérifiez la version installée de Nginx avec la commande suivante :
nginx -V
Vous devriez obtenir le résultat suivant :
nginx version: nginx/1.18.0 (CentOS) built by gcc 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC) built with OpenSSL 1.1.0h 27 Mar 2018 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules- path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log- path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock -- user=nginx --group=nginx --build=CentOS --builddir=nginx-1.14.0 --with-select_module --with- poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with- http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with- http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module -- with-http_dav_module --with-http_flv_module --with-http_mp4_module --with- http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with- http_random_index_module --with-http_secure_link_module --with-http_degradation_module -- with-http_slice_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log - -http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp- path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http- uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-mail=dynamic --with-mail_ssl_module --with-stream=dynamic --with-stream_ssl_module -- with-stream_realip_module --with-stream_geoip_module=dynamic --with- stream_ssl_preread_module --with-compat --with-pcre=../pcre-8.42 --with-pcre-jit --with- zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.0h --with-openssl-opt=no-nextprotoneg --add- module=../nginx-rtmp-module --with-debug
Étape 5 - Créer un fichier de service Systemd pour Nginx
Ensuite, vous devrez créer un fichier de service Nginx pour gérer le service Nginx. Vous pouvez le créer avec la commande suivante :
nano /lib/systemd/system/nginx.service
Ajoutez les lignes suivantes :
[Unit] Description=nginx - high performance web server Documentation=https://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target
Enregistrez et fermez le fichier lorsque vous avez terminé, puis rechargez le démon systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, démarrez Nginx et activez-le au redémarrage du système avec la commande suivante :
systemctl start nginx systemctl enable nginx
Étape 6 - Configurer Nginx pour utiliser RTMP
First, create a backup copy of the Nginx main configuration file with the following command: mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
Créez ensuite un nouveau fichier de configuration Nginx à l'aide de la commande suivante :
nano /etc/nginx/nginx.conf
Ajoutez les lignes suivantes :
worker_processes auto; events { worker_connections 1024; } # RTMP configuration rtmp { server { listen 1935; # Listen on standard RTMP port chunk_size 4000; # Define the Application application show { live on; # Turn on HLS hls on; hls_path /mnt/hls/; hls_fragment 3; hls_playlist_length 60; # disable consuming the stream from nginx as rtmp deny play all; } } } http { sendfile off; tcp_nopush on; aio on; directio 512; default_type application/octet-stream; server { listen 8080; location / { # Disable cache add_header 'Cache-Control' 'no-cache'; # CORS setup add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Expose-Headers' 'Content-Length'; # allow CORS preflight requests if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain charset=UTF-8'; add_header 'Content-Length' 0; return 204; } types { application/dash+xml mpd; application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /mnt/; } } }
Enregistrez et fermez le fichier, puis créez un nouveau répertoire pour la configuration HLS et attribuez-lui le propriétaire :
mkdir -p /mnt/hls chown -R nginx:nginx /mnt/hls
Enregistrez et fermez le fichier lorsque vous avez terminé.
Étape 7 - Créer un flux en direct RTMP
Ensuite, vous devrez créer une vidéo de flux RTMP et créer un nouveau flux RTMP en direct. Vous pouvez le faire en modifiant le fichier de configuration principal de Nginx :
nano /etc/nginx/nginx.conf
Recherchez les lignes suivantes :
hls_playlist_length 60; # disable consuming the stream from nginx as rtmp deny play all; }
Ajoutez les lignes suivantes exactement en dessous de la ligne ci-dessus :
application vod { play /mnt/mp4s; } # RTMP stream using OBS application stream { live on; }
Enregistrez et fermez le fichier, puis redémarrez le service Nginx avec la commande suivante :
systemctl restart nginx
Ensuite, créez un répertoire pour stocker la vidéo MP4 :
mkdir -p /mnt/mp4s
Ensuite, téléchargez l'exemple de vidéo à l'aide de la commande suivante :
cd /mnt/mp4s wget https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4 -O myfile.mp4
Ensuite, attribuez la propriété appropriée au répertoire /mnt/mp4s :
chown -R nginx:nginx /mnt/mp4s
Étape 8 - Installez FFmpeg et démarrez le serveur de streaming
Tout d'abord, vous devrez installer FFmpeg sur votre serveur. Par défaut, il n'est pas installé dans le référentiel par défaut CentOS 8, vous devrez donc activer le référentiel Powertool dans votre système. Vous pouvez l'activer avec la commande suivante :
yum install epel-release dnf-utils yum-config-manager --set-enabled PowerTools yum-config-manager --add-repo=https://negativo17.org/repos/epel-multimedia.repo
Ensuite, installez le FFmpeg avec la commande suivante :
yum install ffmpeg -y
Une fois le FFmpeg installé, démarrez le serveur de streaming avec la commande suivante :
ffmpeg -re -i /mnt/mp4s/myfile.mp4 -vcodec libx264 -vprofile baseline -g 30 -acodec aac -strict -2 - f flv rtmp://your-server-ip:1935/show/vod
Étape 9 – Tester le streaming RTMP
Ensuite, vous devrez tester le flux RTMP vod avec le lecteur multimédia VLC.
Une fois le système client, ouvrez le lecteur multimédia VLS, allez dans VLC Media => Open Network Stream . Vous devriez voir l'écran suivant :
Indiquez l'URL de votre serveur de streaming RTMP et cliquez sur Lire bouton.
Une fois que vous êtes connecté avec succès, vous devriez voir votre vidéo MP4 dans l'écran suivant :
Conclusion
Dans le didacticiel ci-dessus, vous avez appris à installer Nginx avec le support RTMP. Vous avez également appris à configurer Nginx pour diffuser des vidéos MP4 et les lire avec le lecteur multimédia VLC à partir du système distant. Essayez d'installer Nginx avec le support RTMP sur l'hébergement VPS d'Atlantic.Net dès aujourd'hui !
En savoir plus sur nos services d'hébergement VPS et nos serveurs privés virtuels.