Dans ce tutoriel vous allez apprendre à mettre en place un serveur de streaming RTMP.
Tout récemment j’avais pour mission de mettre en place un serveur de streaming personnalisé pour un de mes clients .
C’est quoi le RTMP ?
RTMP signifie Real-Time Messaging Protocol et est une manière courante et standardisée que de nombreux services (tels que YouTube, Twitch, etc.) utilisent, ou au moins proposent, pour diffuser des vidéos en ligne.
Un serveur de streaming RTMP un est serveur media qui permet de diffuser des contenues vidéos ou audios en live sur internet.
Avant je n’avais jamais fais un truc pareil et j’avoue que cette mission a été un vrai challenge pour moi.
Pourquoi un serveur de streaming personnalisé ?
Il faut noter qu’il existe déjà plusieurs plateformes (Facebook, YouTube, Persiscope etc.) et applications qui permettent de faire faire de la diffusion en live sur internet.
Avec ces solutions souvent, non seulement elles sont pas gratuite, on se retrouve aussi pénaliser par beaucoup d’autres contraintes (comme le temps de diffusion, la nature du contenu etc…) , du coup avoir son propre serveur n’est pas mal.
Pré-requis
– Pour mettre en place un serveur de streaming RTMP, dans tutoriel nous allons utiliser un serveur ubuntu 18.04 LTS
– Serveur Nginx
Pour la mise en place du serveur de streaming RTMP, j’ai opté pour une solution open source et gratuite.
Après plusieurs recherches sur internet, une des solutions a attirée mon attention par sa facilité et simplicité d’utilisation c’est le module RTMP du célèbre serveur HTTP Nginx, ce module permet de mettre en place un serveur RTMP solide en profitant robustese de Nginx.
Installer Nginx sur Ubuntu
Avant toute chose nous allons installer Nginx sur notre Ubuntu bien frais.
Nginx est serveur HTTP open source qui permet de gérer les requêtes HTTP, il est parmi les serveurs web les plus utilisés au monde.
Pour installer Nginx sur Ubuntu, il suffit juste d’ouvrir votre terminal et tapez la commande qui suit :
sudo apt-get install nginx
Si tout se passe bien sans erreur, cela veut dire que Nginx est bien installé.
Installation des dépendances
Apres l’installation de Nginx, nous avons besoin de certains dependances pour le bon déroulement de la mise en place de notre serveur.
Tapez le code qui suit dans votre terminal :
sudo apt-get install libnginx-mod-rtmp ffmpeg mediainfo
Une fois que les dépendances bien installés nous pouvons maintenant passer à la configuration de notre serveur.
Configuration
du serveur RTMP
du serveur RTMP
Dans ce projet nous n’allons pas enregistrer la vidéo transmise sur le serveur, sinon si c’était le cas, nous étions obliger de créer un dossier de sauvegarde sur le serveur et pointer sur ce dossier la configuration du serveur.
Pour ouvrir le fichier de configuration de nginx , tapez la commande ci-dessous dans votre terminal :
sudo nano /etc/nginx/nginx.conf
Cette commande permet d’ouvrir le fichier de configuration de nginx. Nous allons importer et ajouter la configuration pour le RTMP.
Ajouter le code qui suit dans le fichier :
rtmp { server { listen 1935; chunk_size 4096; notify_method get; application live { live on; interleave on; hls on; hls_fragment 15s; record off; } } }
Et le code suivant dans section server du fichier :
location /live { types { application/vnd.apple.mpegurl m3u8; } add_header Cache-Control no-cache; }
Le fichier final ressemble à ceci :
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } rtmp { server { listen 1935; chunk_size 4096; notify_method get; application live { live on; interleave on; hls on; hls_fragment 15s; record off; } } } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/jav$ ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; server { listen 8080; server_name _; location / { root html; index index.html index.htm; } # the http end point our web based users connect to see the live stream location /live { types { application/vnd.apple.mpegurl m3u8; } alias /var/www/hls/live; add_header Cache-Control no-cache; } } }
Fermer le fichier de configuration et n’oublier pas d’enregistrer.
Tapez commande suivant pour redémarrer le serveur Nginx.
Sudo service nginx restart
Pour tester la diffusion, vous pouvez n’importe quel logiciel qui permet de faire la diffusion, j’utilise OBS qui est un logiciel complet pour faire de la diffusion en streaming.
Salut,
très bien détaillé. Est-ce que ce serveur ne fonctionne que sur le réseau interne ou il fonctionnera aussi à partir de n’importe où sur internet ?
Ça fonctionne partout, il suffit d’avoir ton propre serveur avec une adresse ip public, perso j’utilise des VPS
J’aimerais faire la même chose sur mon windows 10 pour récupérer un flux vidéo IP envoyé de loin pour l’utiliser sur OBS, tu penses que c’est possible ??? Je suis en train de lire ton article mais je ne suis pas sous linux.
Merci et beau boulot
c’est possible avec camera intégré, pour les cameras IP il faut utiliser un périphérique de capture vidéo sur l’ordinateur équipé de OBS, puis installer le logiciel des cameras, cette meme machine, ca doit fonctionner ainsi.
Merci beaucoup, grâce à toi j’ai réussi à créer mon serveur RTMP.
Je serais intéressé par le fait d’enregistré le flux vidéo qui arrive sur mon serveur, est-ce que tu as fait un autre tuto ??
Merci
Tu peux utiliser n’importe quel logiciel de streaming pour le remote.