GNU/Linux >> Tutoriels Linux >  >> Linux

Créez votre propre serveur de streaming vidéo avec Linux

Le streaming vidéo en direct est incroyablement populaire et continue de croître. Des plateformes comme Twitch d'Amazon et YouTube de Google comptent des millions d'utilisateurs qui diffusent et consomment d'innombrables heures de médias en direct et enregistrés. Ces services sont souvent gratuits mais vous obligent à avoir un compte et à conserver généralement votre contenu derrière des publicités. Certaines personnes n'ont pas besoin que leurs vidéos soient accessibles au grand public ou souhaitent simplement plus de contrôle sur leur contenu. Heureusement, grâce à la puissance des logiciels open source, n'importe qui peut configurer un serveur de diffusion en direct.

Démarrage

Dans ce didacticiel, je vais vous expliquer comment configurer un serveur de diffusion en direct de base avec un système d'exploitation Linux ou BSD.

Cela conduit à la question inévitable des exigences du système. Celles-ci peuvent varier, car de nombreuses variables sont impliquées dans la diffusion en direct, telles que :

  • Qualité du flux : Souhaitez-vous diffuser en haute définition ou la définition standard répondra-t-elle à vos besoins ?
  • Audience : Combien de spectateurs attendez-vous pour vos vidéos ?
  • Stockage : Prévoyez-vous de conserver des copies enregistrées de votre flux vidéo ?
  • Accès : Votre flux sera-t-il privé ou ouvert au monde ?

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Il n'y a pas de règles définies en ce qui concerne la configuration système requise, je vous recommande donc d'expérimenter et de trouver ce qui convient le mieux à vos besoins. J'ai installé mon serveur sur une machine virtuelle avec 4 Go de RAM, un disque dur de 20 Go et un seul cœur de processeur Intel i7.

Ce projet utilise le protocole de messagerie en temps réel (RTMP) pour gérer le streaming audio et vidéo. Il existe d'autres protocoles disponibles, mais j'ai choisi RTMP car il bénéficie d'un large support. À mesure que les normes ouvertes telles que WebRTC deviennent plus compatibles, je recommanderais cette voie.

Il est également très important de savoir que "en direct" ne signifie pas toujours instantané. Un flux vidéo doit être encodé, transféré, mis en mémoire tampon et affiché, ce qui ajoute souvent des retards. Le délai peut être raccourci ou allongé en fonction du type de flux que vous créez et de ses attributs.

Configurer un serveur Linux

Vous pouvez utiliser de nombreuses distributions différentes de Linux, mais je préfère Ubuntu, j'ai donc téléchargé l'édition Ubuntu Server pour mon système d'exploitation. Si vous préférez que votre serveur ait une interface utilisateur graphique (GUI), n'hésitez pas à utiliser Ubuntu Desktop ou l'une de ses nombreuses variantes. Ensuite, j'ai lancé le programme d'installation d'Ubuntu sur mon ordinateur ou ma machine virtuelle et j'ai choisi les paramètres qui correspondaient le mieux à mon environnement. Voici les étapes que j'ai suivies.

Remarque :étant donné qu'il s'agit d'un serveur, vous souhaiterez probablement définir des paramètres réseau statiques.

Une fois le programme d'installation terminé et votre système redémarré, vous serez accueilli avec un nouveau système Ubuntu charmant. Comme pour tout système d'exploitation nouvellement installé, installez toutes les mises à jour disponibles :

sudo apt update
sudo apt upgrade

Ce serveur de streaming utilisera le serveur web Nginx très puissant et polyvalent, vous devrez donc l'installer :

sudo apt install nginx

Ensuite, vous devrez obtenir le module RTMP pour que Nginx puisse gérer votre flux multimédia :

sudo add-apt-repository universe
sudo apt install libnginx-mod-rtmp

Ajustez la configuration de votre serveur Web afin qu'il puisse accepter et diffuser votre flux multimédia.

sudo nano /etc/nginx/nginx.conf

Faites défiler vers le bas du fichier de configuration et ajoutez le code suivant :

rtmp {
        server {
                listen 1935;
                chunk_size 4096;

                application live {
                        live on;
                        record off;
                }
        }
}

Enregistrez la configuration. Parce que je suis un hérétique, j'utilise Nano pour éditer les fichiers de configuration. Dans Nano, vous pouvez enregistrer votre configuration en appuyant sur Ctrl+X , O , puis Entrée.

Il s'agit d'une configuration très minimale qui créera un serveur de streaming fonctionnel. Vous ajouterez à cette configuration plus tard, mais c'est un excellent point de départ.

Cependant, avant de pouvoir commencer votre premier stream, vous devrez redémarrer Nginx avec sa nouvelle configuration :

sudo systemctl restart nginx

Configurer un serveur BSD

Si vous êtes du genre "beastie", il est également extrêmement facile de mettre en place un serveur de streaming.

Rendez-vous sur le site Web de FreeBSD et téléchargez la dernière version. Lancez le programme d'installation de FreeBSD sur votre ordinateur ou votre machine virtuelle, suivez les étapes initiales et choisissez les paramètres qui correspondent le mieux à votre environnement. Comme il s'agit d'un serveur, vous souhaiterez probablement définir des paramètres réseau statiques.

Une fois le programme d'installation terminé et votre système redémarré, vous devriez avoir un tout nouveau système FreeBSD. Comme tout autre système fraîchement installé, vous souhaiterez probablement tout mettre à jour (à partir de cette étape, assurez-vous d'être connecté en tant que root) :

pkg update
pkg upgrade

J'installe Nano pour modifier les fichiers de configuration :

pkg install nano

Ce serveur de streaming utilisera le serveur web Nginx très puissant et polyvalent. Vous pouvez créer Nginx en utilisant les excellents ports système dont se vante FreeBSD.

Tout d'abord, mettez à jour votre arborescence de ports :

portsnap fetch
portsnap extract

Accédez au répertoire des ports Nginx :

cd /usr/ports/www/nginx

Et commencez à créer Nginx en exécutant :

make install

Vous verrez un écran vous demandant quels modules inclure dans votre build Nginx. Pour ce projet, vous devrez ajouter le module RTMP. Faites défiler jusqu'à ce que le module RTMP soit sélectionné et appuyez sur Espace . Appuyez ensuite sur Entrée pour continuer avec le reste de la construction et de l'installation.

Une fois l'installation de Nginx terminée, il est temps de le configurer à des fins de streaming.

Tout d'abord, ajoutez une entrée dans /etc/rc.conf pour vous assurer que le serveur Nginx démarre au démarrage de votre système :

nano /etc/rc.conf

Ajoutez ce texte au fichier :

nginx_enable="YES"

Ensuite, créez un répertoire Webroot à partir duquel Nginx diffusera son contenu. J'appelle mon flux :

cd /usr/local/www/
mkdir stream
chmod -R 755 stream/

Maintenant que vous avez créé votre répertoire de flux, configurez Nginx en éditant son fichier de configuration :

nano /usr/local/etc/nginx/nginx.conf

Chargez vos modules de streaming en haut du fichier :

load_module /usr/local/libexec/nginx/ngx_stream_module.so;
load_module /usr/local/libexec/nginx/ngx_rtmp_module.so;

Sous le Serveur , modifiez l'emplacement de la racine Web pour qu'il corresponde à celui que vous avez créé précédemment :

Location / {
root /usr/local/www/stream
}

Et enfin, ajoutez vos paramètres RTMP afin que Nginx sache comment gérer vos flux multimédia :

rtmp {
        server {
                listen 1935;
                chunk_size 4096;

                application live {
                        live on;
                        record off;
                }
        }
}

Enregistrez la configuration. Dans Nano, vous pouvez le faire en appuyant sur Ctrl+X , O , puis Entrée.

Comme vous pouvez le voir, il s'agit d'une configuration très minimale qui créera un serveur de streaming fonctionnel. Plus tard, vous ajouterez à cette configuration, mais cela vous fournira un excellent point de départ.

Cependant, avant de pouvoir commencer votre premier stream, vous devrez redémarrer Nginx avec sa nouvelle configuration :

service nginx restart

Configurer votre logiciel de streaming

Diffusion avec OBS

Maintenant que votre serveur est prêt à accepter vos flux vidéo, il est temps de configurer votre logiciel de streaming. Ce didacticiel utilise le puissant et open source Open Broadcast Studio (OBS).

Rendez-vous sur le site Web d'OBS, recherchez la version de votre système d'exploitation et installez-la. Une fois OBS lancé, vous devriez voir un assistant de première exécution qui vous aidera à configurer OBS avec les paramètres les mieux adaptés à votre matériel.

OBS ne capture rien car vous ne lui avez pas fourni de source. Pour ce tutoriel, vous allez simplement capturer votre bureau pour le flux. Cliquez simplement sur le + bouton sous Source , choisissez Capture d'écran , et sélectionnez le bureau que vous souhaitez capturer.

Cliquez sur OK et vous devriez voir OBS refléter votre bureau.

Il est maintenant temps d'envoyer votre flux vidéo nouvellement configuré à votre serveur. Dans OBS, cliquez sur Fichier> Paramètres . Cliquez sur le flux et définissez Type de flux au serveur de streaming personnalisé .

Dans la zone URL, saisissez le préfixe rtmp:// suivi de l'adresse IP de votre serveur de streaming suivi de /live . Par exemple, rtmp://IP-ADDRESS/live .

Ensuite, vous souhaiterez probablement saisir une clé de flux, un identifiant spécial requis pour afficher votre flux. Entrez la clé que vous voulez (et dont vous pouvez vous souvenir) dans la clé de flux boîte.

Cliquez sur Appliquer puis OK .

Maintenant qu'OBS est configuré pour envoyer votre flux à votre serveur, vous pouvez démarrer votre premier flux. Cliquez sur Démarrer la diffusion .

Si tout a fonctionné, vous devriez voir le bouton passer à Arrêter la diffusion et certaines mesures de bande passante apparaîtront en bas d'OBS.

Si vous recevez une erreur, vérifiez les paramètres de diffusion dans OBS pour les fautes d'orthographe. Si tout semble bon, il se peut qu'un autre problème l'empêche de fonctionner.

Visualiser votre flux

Une vidéo en direct n'est pas très utile si personne ne la regarde, alors soyez votre premier spectateur !

Il existe une multitude de lecteurs multimédias open source prenant en charge RTMP, mais le plus connu est probablement le lecteur multimédia VLC.

Après avoir installé et lancé VLC, ouvrez votre flux en cliquant sur Media> Flux réseau ouvert . Entrez le chemin d'accès à votre flux, en ajoutant la clé de flux que vous avez configurée dans OBS, puis cliquez sur Lire . Par exemple, rtmp://IP-ADDRESS/live/SECRET-KEY .

Vous devriez maintenant voir votre propre flux vidéo en direct !

Où aller ensuite ?

Il s'agit d'une configuration très simple qui vous fera décoller. Voici deux autres fonctionnalités que vous voudrez probablement utiliser.

  • Limiter l'accès : La prochaine étape que vous voudrez peut-être entreprendre consiste à limiter l'accès à votre serveur, car la configuration par défaut permet à quiconque de diffuser vers et depuis le serveur. Il existe différentes façons de le configurer, comme un pare-feu du système d'exploitation, un fichier .htaccess ou même l'utilisation des contrôles d'accès intégrés dans le module RTMP.

  • Enregistrer les flux : Cette configuration Nginx simple diffusera uniquement et n'enregistrera pas vos vidéos, mais elle est facile à ajouter. Dans la configuration Nginx, sous la section RTMP, configurez les options d'enregistrement et l'emplacement où vous souhaitez enregistrer vos vidéos. Assurez-vous que le chemin que vous avez défini existe et que Nginx peut y écrire.

application live {
             live on;
             record all;
             record_path /var/www/html/recordings;
             record_unique on;
}

Le monde de la diffusion en direct est en constante évolution, et si vous êtes intéressé par des utilisations plus avancées, il existe de nombreuses autres ressources intéressantes que vous pouvez trouver sur Internet. Bonne chance et bonne diffusion !


Linux
  1. Affichez les connexions réseau de votre serveur Linux avec netstat

  2. Créez un jumeau maléfique de votre réseau avec Fluxion sur Kali Linux

  3. Créez votre stockage cloud avec ownCloud 6 sur Linux Mint 17

  4. Comment installer Nextcloud avec Docker sur votre serveur Linux

  5. Sécurisez votre serveur Linux avec Fail2Ban [Guide du débutant]

Comment créer sa propre distribution Linux avec Yocto

Streama - Configurez votre propre serveur multimédia en streaming en quelques minutes

ReaR :sauvegardez et restaurez votre serveur Linux en toute confiance

Comment créer son propre serveur de streaming vidéo avec OBS Studio sous Linux

Comment créer votre propre serveur VPN IPsec sous Linux

DIY NAS Freenas Server - Construisez votre propre NAS avec Freenas