Activer le streaming vidéo pour l’apprentissage à distance avec NGINX et NGINX Plus

NGINX | 16 avril 2020

J’ai été ravi lorsque F5 a annoncé le rachat de NGINX il y a un an, car, travaillant chez F5 depuis longtemps, je savais que NGINX s’intégrerait parfaitement. Ce sentiment s’est confirmé lorsque, au cours de l’une de nos premières réunions communes, les collaborateurs de NGINX ont abordé un sujet qui me tient particulièrement à cœur : leur engagement envers la « communauté ». Depuis que j’ai rejoint l’équipe NGINX en tant que chef de produit, j’ai eu le plaisir de voir cet engagement se concrétiser et de collaborer plus étroitement avec la communauté.

La communauté NGINX se mobilise pendant la pandémie de COVID-19

Dans le monde de l’open source, nous employons généralement le terme « communauté » pour désigner les personnes qui soutiennent un projet open source en y contribuant du code. Bien qu’importantes, elles ne représentent qu’une petite partie de la communauté NGINX. Qui sont donc les autres membres de cette communauté ? Nous accordons également beaucoup d’importance à celles et ceux d’entre vous qui :

  • Utilisez NGINX dans les projets que vous partagez sur GitHub
  • Appuyez-vous sur NGINX pour fournir en toute sécurité des sites, des applications et des API à vos utilisateurs
  • Rédigez des articles de blog sur l’installation et l’utilisation de NGINX
  • Aider les utilisateurs de NGINX sur les forums publics

Ces derniers mois, les membres de la communauté NGINX se sont véritablement mobilisés pour s’entraider et soutenir les nombreuses organisations qui peinent à poursuivre leurs activités pendant la pandémie de COVID‑19. Beaucoup d’entre vous ont signalé des sites susceptibles de tirer parti du logiciel NGINX, voire consacré du temps et apporté leur expertise pour expliquer comment configurer NGINX afin d’obtenir des performances optimales. Afin d’apporter notre contribution, nous avons publié « Ressources gratuites pour les sites web touchés par la COVID‑19 » et avons été ravis de voir la communauté se mobiliser autour des nouveaux utilisateurs de NGINX.

Dans le cadre de nos efforts visant à aider les organisations à faire face à l’augmentation du trafic et à ajouter de nouvelles fonctionnalités, nous avons fourni jusqu’à cinq instances gratuites de NGINX Plus aux organisations en première ligne face à la pandémie. Parmi celles-ci figuraient des prestataires de soins de santé, des administrations publiques et, ce qui est particulièrement pertinent pour ce blog, des établissements scolaires, des universités et des organismes à but non lucratif spécialisés dans l’éducation. Nous avons constaté chez ces organisations une tendance qui ne vous surprendra probablement pas : la diffusion de vidéos en streaming !

Alors que les établissements scolaires du monde entier ferment leurs portes et mettent rapidement en place l’enseignement à distance, nous nous attendons à ce que l’utilisation de la vidéo en streaming augmente de manière exponentielle au cours des semaines et des mois à venir. Dans la suite de cet article, j’explique comment utiliser NGINX Open Source et NGINX Plus pour assurer une diffusion vidéo stable, sécurisée et évolutive.

Un grand merci à James Jones, architecte de solutions techniques chez NGINX, pour avoir enregistré les vidéos de démonstration qui accompagnent cet article de blog !

Diffusion de vidéos en direct et stockage de vidéos avec NGINX Open Source

Notre solution de streaming vidéo s’appuie sur le module Real-Time Messaging Protocol (RTMP) pour NGINX. Dans cette vidéo, James présente le processus étape par étape :

Pour vous éviter d’avoir à prendre des notes pendant la démonstration de James, nous avons consigné toutes les commandes et tous les éléments de configuration dans les sections suivantes.

Remarque importante : n’oubliez pas la sécurité !

Les configurations NGINX présentées dans cet article de blog n’incluent aucune mesure de sécurité visant à restreindre l’accès à votre flux vidéo. Il existe différentes façons de sécuriser vos flux à l’aide de l’application front-end utilisée par vos spectateurs pour regarder la vidéo, par exemple en autorisant l’accès uniquement depuis certaines adresses IP ou en exigeant que les spectateurs s’authentifient.

Installation des outils de compilation

Avant de compiler NGINX, vous devez installer quelques outils de compilation de base : autoconf, gcc, git et make. Pour les télécharger et les installer, exécutez la commande correspondant à votre système d’exploitation (s’il ne figure pas ici, consultez la documentation de son éditeur).

  • Pour Debian et Ubuntu :
$ sudo apt update$ sudo apt install build-essential git
  • Pour CentOS, Oracle Linux et RHEL :
$ sudo yum update$ sudo yum groupinstall "Development Tools"
$ sudo yum install git

Installation des dépendances

La compilation de NGINX nécessite également plusieurs dépendances : Perl Compatible Regular Expressions (PCRE), OpenSSL et zlib pour la compression.

Installation des dépendances avec un gestionnaire de paquets

Le moyen le plus simple de télécharger et d’installer les dépendances consiste à utiliser un gestionnaire de paquets. Exécutez la commande correspondant à votre système d’exploitation (si elle ne figure pas ici, consultez la documentation de l’éditeur du système d’exploitation).

  • Pour Debian et Ubuntu :
$ sudo apt install libpcre3-dev libssl-dev zlib1g-dev
  • Pour CentOS, Oracle Linux et RHEL :
$ sudo yum groupinstall pcre-devel zlib-devel openssl-devel

Installation des dépendances à partir des sources

Si vous préférez compiler et installer les dépendances à partir du code source, consultez nos instructions.

Compiler NGINX avec le module RTMP

Pour terminer la compilation, clonez les dépôts GitHub de RTMP et de NGINX, exécutez la commande configure de NGINX, puis compilez NGINX.

$ cd /path/to/build/dir$ git clone https://github.com/arut/nginx-rtmp-module.git
$ git clone https://github.com/nginx/nginx.git
$ cd nginx
$ ./auto/configure --add-module=../nginx-rtmp-module
$ make
$ sudo make install

Configuration de NGINX

Vous pouvez configurer NGINX pour diffuser des vidéos à l’aide de l’un des protocoles HTTP Live Streaming (HLS) et Dynamic Adaptive Streaming over HTTP (DASH), ou des deux. Ces protocoles offrent les mêmes fonctionnalités ; le choix dépend donc essentiellement de vos préférences. Si vous ne les connaissez pas, consultez l’article « HLS ou DASH » sur le blog de Vidbeo.

Configuration HLS

Pour HLS, la configuration est la suivante. Dans la démonstration (à 5 min 10 s), James explique l’objectif de ces directives.

rtmp {     server { 
        listen 1935; 
        application live { 
            live on; 
            interleave on;
 
            hls on; 
            hls_path /tmp/hls; 
            hls_fragment 15s; 
        } 
    } 
} 
 
http { 
    default_type application/octet-stream;
 
    server { 
        listen 80; 
        location /tv { 
            root /tmp/hls; 
        } 
    }
 
    types {
        application/vnd.apple.mpegurl m3u8;
        video/mp2t ts;
        text/html html;
    } 
}

Configuration DASH

Pour DASH, la configuration est la suivante. Dans la démonstration, James regroupe HLS et DASH dans une seule configuration, car de nombreuses directives sont identiques pour les deux protocoles.

rtmp {     server { 
        listen 1935; 
        application live { 
            live on; 
            dash on; 
            dash_path /tmp/dash; 
            dash_fragment 15s; 
        } 
    } 
} 
 
http { 
    server { 
        listen 80; 
        location /tv { 
            root /tmp/dash; 
        } 
    }
 
    types {
        text/html html;
        application/dash+xml mpd;
    } 
}

Validation de la configuration et démarrage de NGINX

Il est toujours recommandé de valider votre configuration NGINX afin de vérifier qu’elle ne contient aucune erreur de syntaxe. Exécutez cette commande :

$ sudo nginx -tnginx: the configuration file filename syntax is ok
nginx: configuration file filename test is successful

Exécutez ensuite cette commande pour démarrer NGINX :

$ sudo nginx

Tester les méthodes de lecture

Démarrez votre flux vidéo. OBS Studio est un outil open source couramment utilisé qui vous permet de diffuser en direct depuis votre poste de travail vers votre serveur NGINX en configurant un serveur RTMP personnalisé. Configurez OBS pour diffuser vers rtmp://NGINX_server/tv/tv2, où NGINX_server correspond à l’adresse IP ou au nom d’hôte de votre serveur NGINX. Aucune clé de stream n’est requise.

James n’utilise pas OBS dans la démonstration, car il diffuse une vidéo à partir d’un fichier plutôt qu’en direct. Il démarre le flux vidéo (à 9 min 30 s) en exécutant le script stream.sh, dont le contenu est le suivant :

ffmpeg -re -I bbb_sunflower_1080p_60fps_normal.mp4 -vcodec copy -loop -1 -c:a aac -b:a 160k -ar 44100 -strict -2 -f flv rtmp:192.168.1.138/live/bbb

The video he is streaming (specified with the -I argument) is the open source Big Buck Bunny video from blender.org. For details about the other arguments, see the ffmpeg documentation.

Une fois la vidéo diffusée, vous pouvez vérifier que NGINX la transmet correctement à l’aide des protocoles que vous avez configurés. James ouvre trois instances du lecteur multimédia VLC et accède à l’URL appropriée pour chaque méthode de lecture. Dans les URL, NGINX_server correspond à l’adresse IP ou au nom d’hôte de son serveur NGINX :

  • RTMP – rtmp://NGINX_server/live/bbb
  • HLS – http://NGINX_server/live/bbb.m3u8
  • DASH – http://NGINX_server/live/bbb.mpd

Améliorer l’expérience utilisateur avec NGINX Plus

Si vous créez une vidéothèque ou une formation, vous aurez peut-être besoin de fonctionnalités allant au-delà de ce que permet NGINX Open Source. NGINX Plus inclut des fonctionnalités avancées permettant d’améliorer les performances et l’expérience utilisateur grâce à des modules précompilés. Vous pouvez :

  • Prenez en charge une montée en charge plus importante grâce à la mise en cache des vidéos
  • Fournir des services de vidéo à la demande (VOD)
  • Maîtrisez vos coûts et votre capacité de streaming en limitant la bande passante

Pendant la pandémie de COVID‑19, NGINX offre aux organismes des secteurs de l’éducation, de l’administration publique et à but non lucratif une licence gratuite d’un an pour un maximum de cinq instances de NGINX Plus (sous réserve d’examen et d’approbation). Pour plus de détails, consultez Ressources gratuites pour les sites web touchés par la COVID‑19.

Pour intégrer le module RTMP à NGINX Plus, chargez-le dynamiquement. Consultez le guide d’administration de NGINX Plus.

Dans cette deuxième démonstration, James montre à quel point il est facile de configurer NGINX Plus comme équilibreur de charge pour trois serveurs vidéo à l’aide d’Ansible et de Terraform :

Pour accéder aux fichiers utilisés par James dans la deuxième démonstration, consultez son dépôt GitHub.

Nous sommes tous dans le même bateau

Si vous rencontrez des difficultés pour mettre en œuvre la diffusion vidéo en continu, ou tout autre cas d’usage, nous sommes là pour vous aider ! Les employés de NGINX et la communauté surveillent le canal NGINX sur Stack Overflow1 et répondent aux questions et aux demandes aussi rapidement que possible.

Si vous travaillez pour une organisation en première ligne face à la pandémie et que vous avez des besoins avancés, vous pouvez peut-être bénéficier des licences NGINX Plus mentionnées ci-dessus, ainsi que d’une offre de niveau supérieur du service cloud F5 DNS Load Balancer. Pour en savoir plus, consultez la page Ressources gratuites pour les sites web touchés par la COVID‑19.

Consultez également ce blog pour découvrir un aperçu des méthodes simples pour améliorer les performances d’un site web grâce aux ressources gratuites de NGINX et F5.


1Stack Overflow est un site web tiers qui n’est pas affilié à F5, Inc. F5 et ses sociétés affiliées déclinent toute responsabilité quant au contenu (y compris les informations générales et les solutions proposées aux questions) publié sur Stack Overflow ou tout autre site web tiers.


Partager
Mots-clés : COVID-19, F5 NGINX, Tech, 2020

Articles de blog associés

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA
NGINX | 13/10/2025

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA

Découvrez les principaux enseignements tirés des réponses à l’enquête annuelle F5 NGINX sur les dernières tendances en matière de technologies cloud natives, de sécurité, d’ingénierie de plateforme et d’IA.

Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?
NGINX | 03/11/2023

Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?

Lorsque de nouvelles CVE sont signalées, il est facile de ne plus savoir si elles concernent un outil de contrôleur Ingress NGINX particulier, car il existe plusieurs projets. Cet article présente les CVE et explique comment distinguer les différents projets de contrôleurs Ingress afin de dissiper toute confusion.

Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX
NGINX | 11/03/2020

Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX

Votre API répond-elle aux requêtes en moins de 30 ms ? Si ce n’est pas le cas, il ne s’agit pas d’une API en temps réel offrant la faible latence exigée par la grande majorité des organisations. Mesurez la latence de votre API avec l’outil rtapi de NGINX et découvrez comment NGINX peut l’aider à offrir une réactivité en temps réel.

Un testeur d’expressions régulières pour NGINX et NGINX Plus
NGINX | 11/06/2019

Un testeur d’expressions régulières pour NGINX et NGINX Plus

Le testeur d’expressions régulières (regex) pour NGINX et NGINX Plus vous évite de tâtonner en vous indiquant si une expression régulière utilisée dans un bloc location ou map correspond aux valeurs comme prévu. Il génère la configuration appropriée et affiche les valeurs des groupes de capture.

Caches partagés avec les clusters de cache NGINX Plus, partie 1
NGINX | 24/01/2017

Caches partagés avec les clusters de cache NGINX Plus, partie 1

Optimisez la capacité de votre cache web en le répartissant entre plusieurs serveurs de cache web NGINX ou NGINX Plus. Découvrez comment procéder dans cet article.

Introduction aux microservices
NGINX | 19/05/2015

Introduction aux microservices

Les microservices suscitent actuellement beaucoup d’intérêt. Cet article de blog est le premier d’une série de sept consacrée à la conception, au développement et au déploiement de microservices.