Comment configurer un serveur NGINX RTMP pour le streaming

Votre diffusion en direct plante-t-elle à chaque fois ? Si c’est le cas, vous devrez trouver un moyen fiable d’héberger votre diffusion. Mais si vous ne pouvez pas vous permettre des options coûteuses, ne vous inquiétez pas ! NGINX RTMP viendra à votre secours. NGINX RTMP est un module open-source fiable, donc vous savez ce que cela signifie — c’est GRATUIT !

Dans ce tutoriel, vous apprendrez comment configurer un serveur NGINX RTMP afin de pouvoir mettre en place une diffusion en direct fiable avec votre site web.

Prêt ? Lisez la suite et commencez à configurer une diffusion en direct !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir ce qui suit :

  • A Linux server – This demo uses Ubuntu 20.04 LTS, but you can use any other Linux distribution with NGINX.
  • NGINX installé sur le serveur Linux.
  • A non-root user with sudo privileges.
  • Ressources minimales requises pour exécuter un serveur de diffusion en direct – 2 Go de RAM, 2 cœurs CPU et 20 Go de HDD.

Ces valeurs ne sont que des suggestions. Les valeurs exactes dépendent de vos besoins de trafic réels. Plus vous avez de trafic, plus vous aurez besoin de serveurs puissants pour héberger et diffuser votre vidéo en direct. Dans un environnement de développement, un serveur NGINX RTMP avec 2 CPU et 2 Go de RAM est suffisant pour tester.

Configuration d’un Serveur RTMP

Maintenant que les prérequis sont terminés, vous pouvez passer à l’installation et à la configuration de votre serveur RTMP. Vous commencerez par installer un module NGINX pour convertir votre serveur NGINX en serveur RTMP, puis vous configurerez le fichier de configuration NGINX pour activer les diffusions en direct pour les utilisateurs.

1. Ouvrez votre terminal et exécutez la commande apt update pour mettre à jour tous vos paquets. Cette commande synchronise votre base de données de paquets avec la dernière base de données d’Ubuntu.

sudo apt update -y
Updating all your packages

2. Ensuite, exécutez la commande suivante pour installer un serveur RTMP sur votre serveur Linux.

Le module libnginx-mod-rtmp est un module NGINX qui convertit votre serveur NGINX en serveur RTMP. Ce module permet à NGINX de communiquer avec Adobe Flash Player pour diffuser vos vidéos ou audios en direct et est officiellement pris en charge par son équipe de développement.

sudo apt install libnginx-mod-rtmp -y
installing an RTMP server

3. Ouvrez le fichier /etc/nginx/nginx.conf dans votre éditeur préféré pour configurer votre programme en direct RTMP. Le fichier nginx.conf est un fichier de configuration NGINX qui contient plusieurs directives ou blocs pour définir le comportement du service NGINX.

4. Enfin, remplissez le fichier nginx.conf avec le code suivant, enregistrez les modifications et quittez l’éditeur.

Le code ci-dessous indique à NGINX d’agir en tant que serveur RTMP et active les diffusions en direct pour vos utilisateurs.

# Ce bloc de code indique à NGINX d'agir en tant que serveur RTMP. 
rtmp {
		server {
		# Définit le port sur lequel le serveur écoutera.
    listen 1935;
				# La taille de chaque morceau de données qui sera envoyé.
				# Le lecteur Flash se figera si le morceau est trop petit, 
				# ce qui peut provoquer une condition de sous-débit tampon.
        chunk_size 4096;
				# Les adresses IP autorisées à publier du contenu sur le serveur.
				# Autorise uniquement localhost à publier du contenu sur NGINX RTMP.
				allow publish 127.0.0.1;
				# Refuse la publication pour tout le monde d'autre.
				deny publish all;
				# Définit une application nommée "live"
        application live {
				# Indique à NGINX d'activer les flux en direct pour vos utilisateurs.
						live on;
				# Cette ligne indique à NGINX de désactiver l'enregistrement. Si cette ligne n'est pas incluse, 
				# NGINX continuera d'enregistrer et sauvegardera votre flux indéfiniment sur votre disque.
						record off;
				}
		}
}

Sécurisation du réseau en configurant un pare-feu

Vous avez déjà configuré votre serveur NGINX RTMP, mais vous devrez sécuriser votre réseau et contrôler le flux de trafic. Comment ? En configurant un pare-feu, Uncomplicated Firewall (UFW), qui est le pare-feu par défaut dans Ubuntu.

Si vous placez votre serveur NGINX RTMP derrière un pare-feu, vous devrez autoriser l’ouverture du port du serveur NGINX RTMP. Étant donné que vous avez configuré votre serveur NGINX RTMP pour écouter sur le port 1935, vous autoriserez ce port à travers votre pare-feu.

1. Exécutez la commande suivante pour ajouter une règle de pare-feu qui ouvre le port 1935 sur votre pare-feu. Cette règle de pare-feu permet à votre port de serveur NGINX RTMP 1935 d’être accessible pour toutes les requêtes entrantes et sortantes.

sudo ufw allow 1935/tcp
Opening Port 1935 on your firewall

2. Ensuite, exécutez la commande suivante pour désactiver et réactiver votre pare-feu. Cette commande redémarre essentiellement le pare-feu pour que les modifications sur le pare-feu prennent effet.

sudo ufw disable && sudo ufw enable

3. Enfin, exécutez la commande ci-dessous pour vérifier le statut de votre pare-feu et vérifiez si le port 1935 est accessible depuis toutes les adresses IP (Partout).

sudo ufw status
Checking if Port 1935 is Accessible from Anywhere

Diffusion vidéo en utilisant FFmpeg

Votre serveur NFINX RTMP est maintenant opérationnel, il est donc temps d’utiliser FFmpeg pour créer une vidéo d’exemple et la diffuser via votre serveur NGINX RTMP. FFmpeg est une solution complète pour enregistrer, convertir et diffuser de l’audio et de la vidéo dans de nombreuses applications différentes comme VLC, OMXPlayer, VobSub, etc.

Vous testerez la diffusion vidéo sur votre serveur, et vous pouvez utiliser n’importe quelle vidéo de petite taille pour la diffusion.

1. Exécutez la commande apt install ci-dessous pour installer les dépendances requises pour que FFmpeg fonctionne correctement.

La commande ci-dessous installe ce qui suit :

  • libpcre3 – Une bibliothèque regex utilisée par la trousse à outils ffmpeg pour aider à analyser et compiler des expressions régulières.
  • libpcre3-dev – Ce paquet contient les en-têtes de développement du paquet libpcre3.
  • libssl-dev – La bibliothèque cryptographique OpenSSL utilisée pour créer des connexions SSL/TLS dans votre serveur RTMP.
  • zlib1g-dev : La bibliothèque zlib est une bibliothèque de compression et de décompression qui accélère le transfert de fichiers audio et vidéo sur Internet.
sudo apt install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev
Installing Required Dependencies

2. Ensuite, exécutez la commande suivante pour installer ffmpeg sur votre serveur.

 sudo apt install ffmpeg -y 
Installing FFmpeg

3. Enfin, exécutez la commande ffmpeg pour effectuer les actions suivantes et créer un nouveau flux en direct :

  • Lire l’entrée (re) du fichier source (i) au framerate original. Assurez-vous de remplacer video.mp4 par le chemin et le nom de fichier de votre vidéo.
  • Copier le format vidéo à l’identique (c:v copy), et encoder l’audio avec le codec AAC (c:a aac).
  • Définir le taux d’échantillonnage audio à 44100 Hz (ar 44100). Si le taux d’échantillonnage de votre vidéo est inférieur à cette valeur (44100 Hz), FFmpeg effectue une interpolation pour augmenter le taux d’échantillonnage.
  • Réglez les canaux audio sur un seul canal (mono) (ac 1), et le format vidéo que FFmpeg diffusera (-f flv).
  • Définissez votre programme live RTMP (rtmp://localhost/live/streamname.flv) que vous avez configuré dans la section « Configuration d’un serveur RTMP » (étape quatre). Vous pouvez changer streamname.flv par n’importe quel nom que vous préférez.
ffmpeg -re -i "video.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://139.180.203.6:1935/live/streamname.flv 

Comme vous pouvez le voir ci-dessous, la commande ffmpeg affiche le nombre d’images par seconde qu’il détecte, le débit binaire, et le fps du flux live RTMP nouvellement créé.

Viewing the RTMP Live Stream Data

Conclusion

Dans ce tutoriel, vous avez appris à configurer votre serveur RTMP NGINX et à activer les flux live sur votre serveur en modifiant le fichier de configuration NGINX. Vous avez également abordé la mise en place d’un flux live vidéo en utilisant l’outil FFmpeg via votre serveur RTMP NGINX.

Vous venez de réaliser que mettre en place un flux live ne doit pas vous coûter un centime. À ce stade, pourquoi ne pas intégrer votre flux dans votre page web en utilisant l’élément HTML5 <video>? Ou configurer un studio OBS pour votre flux RTMP?

Source:
https://adamtheautomator.com/nginx-rtmp/