BLOG | NGINX

Activation du streaming vidéo pour l'apprentissage à distance avec NGINX et NGINX Plus

NGINX-Partie-de-F5-horiz-black-type-RGB
Vignette de Nina Forsyth
Nina Forsyth
Publié le 16 avril 2020

J'étais ravi lorsque F5 a annoncé l' achat de NGINX il y a un an, car en tant que F5er de longue date, je savais que NGINX était parfaitement adapté. Ce sentiment s’est confirmé lorsque, lors d’une de nos premières réunions communes, les employés de NGINX ont discuté de quelque chose de profondément important pour moi : 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 en action et de travailler plus en profondeur avec la communauté.

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

Dans l'univers du logiciel libre, nous utilisons souvent le terme « communauté » pour désigner les personnes qui contribuent à un projet en soumettant du code. Bien que cette contribution soit essentielle, elle ne constitue qu’une petite partie de la communauté NGINX. Alors, qui sont les autres membres de cette communauté ? Nous valorisons aussi chacun d’entre vous qui :

  • Utilisez NGINX dans les projets que vous partagez sur GitHub
  • Faites confiance à NGINX pour fournir en toute sécurité des sites, des applications et des API à vos utilisateurs
  • Rédiger des articles de blog sur l'installation et l'utilisation de NGINX
  • Aidez les utilisateurs de NGINX sur les forums publics

Ces derniers mois, la communauté NGINX s’est véritablement unie pour s’entraider ainsi que les nombreuses organisations qui luttent pour maintenir leurs activités pendant la pandémie de COVID‑19. Vous avez souvent signalé des sites pouvant tirer parti du logiciel NGINX, ou offert votre temps et vos compétences pour optimiser ses performances. Pour faire notre part, nous avons publié Ressources gratuites pour les sites web impactés par le COVID‑19, et nous sommes heureux de constater que la communauté s’est mobilisée autour des nouveaux utilisateurs de NGINX.

Dans le cadre de nos efforts pour 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 de la pandémie. Cela inclut des prestataires de soins médicaux, des bureaux gouvernementaux et – ce qui est le plus pertinent pour ce blog – des écoles, des universités et des organismes à but non lucratif axés sur l’éducation. Nous avons détecté un cas d'utilisation tendance parmi ces organisations qui ne vous surprendra probablement pas : le streaming vidéo !

Alors que les écoles du monde entier ferment leurs portes et mettent rapidement en œuvre l’apprentissage à distance, nous nous attendons à ce que l’utilisation du streaming vidéo augmente de manière exponentielle au cours des semaines et des mois à venir. Dans le reste de ce blog, j'explique comment vous pouvez utiliser NGINX Open Source et NGINX Plus pour permettre un streaming vidéo stable, sécurisé et évolutif.

Un grand merci à James Jones, architecte des solutions techniques de NGINX, pour avoir enregistré des vidéos de démonstration pour accompagner ce blog !

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

Notre solution de streaming vidéo tire parti du module Real‑Time Messaging Protocol (RTMP) pour NGINX. Dans cette vidéo, James décrit le processus étape par étape :

Pour que vous n’ayez pas besoin de prendre des notes pendant que vous regardez la démo de James, nous avons capturé toutes les commandes et la configuration dans les sections suivantes.

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

Les configurations NGINX présentées dans ce blog n'incluent pas de mesures de sécurité pour restreindre qui peut regarder votre flux vidéo. Il existe différentes manières de sécuriser vos flux avec l'application frontale que vos spectateurs utilisent pour regarder la vidéo, par exemple en autorisant l'accès uniquement à partir de certaines adresses IP ou en exigeant que les spectateurs s'authentifient.

Installation des outils de construction

Avant de compiler NGINX, vous devez avoir installé quelques outils de construction 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 (si elle n'est pas incluse ici, consultez la documentation du fournisseur du système d'exploitation).

  • 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 « Outils de développement » $ sudo yum install git

Installation des dépendances

La build NGINX nécessite également plusieurs dépendances : Expressions régulières compatibles Perl (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 est d'utiliser un gestionnaire de paquets. Exécutez la commande correspondant à votre système d’exploitation (si elle n’est pas incluse ici, consultez la documentation du fournisseur 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 depuis le code source

Si vous préférez construire et installer les dépendances depuis le code source, consultez nos instructions.

Compilation de NGINX avec le module RTMP

Pour terminer la build, clonez les référentiels GitHub pour RTMP et NGINX, exécutez la commande NGINX configure , puis compilez NGINX.

$ cd /chemin/vers/répertoire/de/construction $ 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 d'un ou des deux protocoles HTTP Live Streaming (HLS) et Dynamic Adaptive Streaming over HTTP (DASH). Les protocoles offrent les mêmes fonctionnalités, donc choisir entre eux est vraiment une question de préférence. Si vous ne les connaissez pas, consultez HLS vs DASH sur le blog Vidbeo.

Configuration HLS

Pour HLS, la configuration est la suivante. Dans la démo (au moment 5:10), James explique le but de ces directives.

rtmp { serveur { 
écouter 1935 ; 
application en direct { 
en direct activé ; 
entrelacement activé ;

hls activé ; 
hls_path /tmp/hls ; 
hls_fragment 15 s ; 
} 
} 
} 

http { 
type_par_défaut application/octet-stream ;

serveur { 
écouter 80 ; 
emplacement /tv { 
racine /tmp/hls ; 
} 
}

types {
application/vnd.apple.mpegurl m3u8 ;
vidéo/mp2t ts ;
texte/html html ;
} 
}

Configuration de DASH

Pour DASH, la configuration est la suivante. Dans la démo, James combine HLS et DASH dans une seule configuration, car de nombreuses directives sont les mêmes pour les deux protocoles.

rtmp { serveur { 
écouter 1935 ; 
application en direct { 
en direct ; 
tiret activé ; 
chemin_du_tiret /tmp/dash ; 
fragment_du_tiret 15 s ; 
} 
} 
} 

http { 
serveur { 
écouter 80 ; 
emplacement /tv { 
racine /tmp/dash ; 
} 
}

types {
texte/html html ; 
application/dash+xml mpd ; 
} 
}

Validation de la configuration et démarrage de NGINX

C’est toujours une bonne idée de valider votre configuration NGINX pour vous assurer qu’il n’y a pas d’erreurs de syntaxe. Exécutez cette commande :

$ sudo nginx -t nginx : la syntaxe du nom de fichier du fichier de configuration est correcte nginx : le test du nom de fichier du fichier de configuration est réussi

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

$ sudo nginx

Tester les méthodes de lecture

Lancez votre diffusion vidéo. OBS Studio est un outil libre populaire 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 désigne l’adresse IP ou le nom d’hôte de votre serveur NGINX. Aucune clé de diffusion n’est nécessaire.

James n'utilise pas OBS dans la démo car il diffuse une vidéo à partir d'un fichier plutôt qu'en direct. Il démarre le flux vidéo (à 9h30) en exécutant le script stream.sh , qui a ce contenu :

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

La vidéo qu'il diffuse (indiquée avec l'argument -I) est celle de Big Buck Bunny, un extrait libre proposé par blender.org. Consultez la documentation ffmpeg pour comprendre les autres arguments.

Une fois la vidéo diffusée, vous pouvez tester que NGINX la diffuse 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 est l'adresse IP ou le nom d'hôte de son serveur NGINX :

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

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

Si vous créez une vidéothèque ou un cours, vous aurez peut-être besoin de fonctionnalités allant au-delà de ce qui est possible avec NGINX Open Source. NGINX Plus inclut des fonctionnalités étendues pour améliorer les performances et l'expérience de l'utilisateur final avec des modules prédéfinis. Tu peux:

  • Prise en charge d'une échelle supérieure en mettant en cache les vidéos
  • Fournir des services de vidéo à la demande (VOD)
  • Gérez vos coûts et votre capacité de streaming en limitant la bande passante

Pendant la pandémie de COVID‑19, NGINX offre une licence gratuite d’un an pouvant couvrir jusqu’à cinq instances de NGINX Plus aux organisations des secteurs de l’éducation, des administrations publiques et des associations (sous réserve d'examen et d’approbation). Pour plus d’informations, consultez Ressources gratuites pour les sites web impactés par COVID‑19.

Pour intégrer le module RTMP dans NGINX Plus, vous le chargez de manière dynamique. Consultez le guide d’administration de NGINX Plus .

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

Pour accéder aux fichiers que James utilise dans la deuxième démo, consultez son dépôt GitHub .

Nous sommes tous dans le même bateau

Si vous rencontrez des difficultés pour mettre en œuvre le streaming vidéo ou tout autre cas d'utilisation, nous sommes là pour vous aider ! Les employés de NGINX et la communauté surveillent le canal NGINX sur Stack Overflow1 et répondre aux questions et demandes le plus rapidement possible.

Si vous travaillez dans une organisation en première ligne face à la pandémie et avez des besoins avancés, vous pouvez prétendre aux licences NGINX Plus mentionnées ci-dessus, ainsi qu’à un niveau supérieur du service F5 DNS Load Balancer Cloud. Consultez les ressources gratuites pour les sites impactés par la COVID‑19 pour en savoir plus.

Consultez aussi ce blog pour découvrir des méthodes faciles pour optimiser la performance de votre site web grâce aux ressources gratuites de NGINX et F5.



1Stack Overflow est un site Web tiers et 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.


« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."