GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer un serveur NGINX RTMP pour le streaming

Votre diffusion en direct plante à chaque fois ? Si tel est le cas, vous devrez trouver un moyen fiable d'héberger votre flux. Mais si vous ne pouvez pas vous permettre des options coûteuses, pas de soucis ! NGINX RTMP sauvera la situation. NGINX RTMP est un module open source fiable, vous savez donc ce que cela signifie :c'est GRATUIT !

Dans ce didacticiel, vous apprendrez à configurer un serveur NGINX RTMP afin de pouvoir configurer un flux en direct fiable avec votre site Web.

Prêt? Continuez à lire et commencez à configurer une diffusion en direct !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants :

  • Un serveur Linux :cette démo utilise Ubuntu 20.04 LTS, mais vous pouvez utiliser n'importe quelle autre distribution Linux avec NGINX.
  • NGINX installé sur le serveur Linux.
  • Un utilisateur non root avec des privilèges sudo.
  • Ressources minimales requises pour exécuter un serveur de diffusion en direct :2 Go de RAM, 2 cœurs de processeur et 20 Go de disque dur.

Ces valeurs ne sont que des suggestions. Les valeurs exactes dépendent de vos besoins réels en matière de trafic. 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 suffit pour tester.

Configuration d'un serveur RTMP

Maintenant que les prérequis sont terminés, vous pouvez maintenant passer à l'installation et à la configuration de votre serveur RTMP. Vous allez d'abord installer un module NGINX pour convertir votre serveur NGINX en serveur RTMP, puis configurer le fichier de configuration NGINX pour activer les flux en direct pour les utilisateurs.

1. Ouvrez votre terminal et lancez le apt update commande pour mettre à jour tous vos packages. Cette commande synchronise votre base de données de packages avec la dernière base de données d'Ubuntu.

sudo apt update -y

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

Le libnginx-mod-rtmp module est un module NGINX qui convertit votre serveur NGINX en un serveur RTMP. Ce module permet à NGINX de communiquer avec Adobe Flash Player afin que vous puissiez diffuser votre vidéo ou audio en direct, et est officiellement pris en charge par son équipe de développement.

sudo apt install libnginx-mod-rtmp -y

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

4. Enfin, remplissez le nginx.conf fichier 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 flux en direct pour vos utilisateurs.

# This block of code tells NGINX to act as an RTMP server. 
rtmp {
		server {
		# Sets the port the server will listen on.
    listen 1935;
				# The size of each chunk of data that will be sent.
				# Flash Player will freeze if the chunk is too small, 
				# which can cause a buffer-underflow condition.
        chunk_size 4096;
				# The IP addresses are allowed to publish content to the server.
				# Allow only the localhost to publish content on NGINX RTMP.
				allow publish 127.0.0.1;
				# Deny publishing for everyone else.
				deny publish all;
				# Defines a named application called "live"
        application live {
				# Tells NGINX to enable live streams for your users.
						live on;
				# This line tells NGINX to disable recording. If this line is not included, 
				# NGINX will keep recording and save your stream forever to your disk.
						record off;
				}
		}
}

Sécuriser le 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. Puisque vous avez configuré votre serveur NGINX RTMP pour écouter sur le port 1935 , vous autorisez ce port via 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 autorise le port 1935 de votre serveur NGINX RTMP être accessible pour toutes les demandes entrantes et sortantes.

sudo ufw allow 1935/tcp

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 toute modification apportée au pare-feu prenne effet.

sudo ufw disable && sudo ufw enable

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

sudo ufw status

Diffusion vidéo en utilisant FFmpeg

Votre serveur NFINX RTMP est maintenant opérationnel, il est donc temps d'utiliser FFmpeg pour créer un exemple de vidéo et le 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 telles que VLC, OMXPlayer, VobSub, etc.

Vous allez tester le streaming vidéo sur votre serveur et vous pouvez utiliser n'importe quelle vidéo de petite taille pour le streaming.

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

La commande ci-dessous installe les éléments suivants :

  • libpcre3 – Une bibliothèque regex utilisée par la boîte à 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

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

 sudo apt install ffmpeg -y 

3. Enfin, exécutez le ffmpeg pour effectuer les opérations suivantes et créer un nouveau flux en direct :

  • Lire l'entrée (re ) du fichier source (i ) à la fréquence d'images d'origine. Assurez-vous de remplacer video.mp4 avec le chemin et le nom de fichier de votre vidéo.
  • Copiez le format vidéo textuellement (c:v copy ) et encoder le codec audio n AAC (c:a aac ).
  • Réglez la fréquence d'échantillonnage audio sur 44 100 Hz (ar 44100 ). Si la fréquence d'échantillonnage de votre vidéo est inférieure à cette valeur (44 100 Hz), FFmpeg effectue une interpolation pour augmenter la fréquence d'échantillonnage.
  • Régler les canaux audio sur un canal (mono) (ac 1 ) et le format vidéo que FFmpeg diffusera (-f flv ).
  • Définissez votre programme en direct RTMP (rtmp://localhost/live/streamname.flv ) que vous avez configuré dans la section « Configuration d'un serveur RTMP » (étape 4). Vous pouvez modifier streamname.flv à 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 le voyez ci-dessous, le ffmpeg la commande imprime le frame par seconde qu'il détecte, le débit binaire , et les ips du flux en direct RTMP nouvellement créé.

Conclusion

Dans ce didacticiel, vous avez appris à configurer votre serveur NGINX RTMP et à activer les flux en direct sur votre serveur en modifiant le fichier de configuration NGINX. Vous avez également abordé la configuration d'un flux vidéo en direct à l'aide de l'outil FFmpeg via votre serveur NGINX RTMP.

Vous venez de réaliser que la mise en place d'un flux en direct ne doit pas vous coûter chaque centime. À ce stade, pourquoi ne pas intégrer votre flux dans votre page Web à l'aide de l'élément HTML5


Linux
  1. Comment configurer un serveur multimédia en streaming à l'aide de Jellyfin sous Linux

  2. Comment configurer les blocs de serveur Nginx dans Ubuntu 18.04 LTS

  3. Comment configurer Apache en tant que proxy frontal pour Node.js

  4. Comment créer un serveur de streaming dans FreeBSD

  5. Comment configurer le serveur NTP dans CentOS ?

Comment configurer Nginx en tant que proxy inverse pour Apache sur Ubuntu 18.04 VPS

Comment configurer HAProxy sur CentOS 8

Comment configurer le cache Nginx sur un serveur LAMP

Comment configurer le cache Nginx sur le serveur LEMP

Comment installer NGINX en tant que proxy inverse pour Apache sur Ubuntu 18.04

Comment configurer Nginx comme équilibreur de charge pour Apache ou Tomcat pour HTTP/HTTPS