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

Ceux d’entre nous qui travaillent avec l’open source utilisent généralement le terme « communauté » pour décrire les personnes qui soutiennent un projet open source en soumettant du code. Bien qu’importants, ils ne représentent qu’une petite partie de la communauté NGINX. Qui sont donc les autres membres de la communauté ? Nous apprécions également ceux 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, les membres de la communauté NGINX se sont véritablement mobilisés pour se soutenir mutuellement et soutenir les nombreuses organisations qui luttent pour maintenir leurs activités pendant la pandémie de COVID-19. Beaucoup d'entre vous ont signalé des sites qui pourraient bénéficier du logiciel NGINX, ou même ont donné du temps et de l'expertise sur la façon de régler NGINX pour des performances optimales. Afin de faire notre part, nous avons publié des ressources gratuites pour les sites Web touchés par le COVID-19 et avons été ravis de voir la communauté se rallier aux 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 à partir de la source

Si vous souhaitez plutôt créer et installer les dépendances à partir des sources, 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

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 est l'adresse IP ou le nom d'hôte de votre serveur NGINX. Aucune clé de flux n'est requise.

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 (spécifiée avec l'argument -I ) est la vidéo open source Big Buck Bunny de blender.org . Pour plus de détails sur les autres arguments, consultez la documentation de ffmpeg .

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 fournit une licence gratuite d'un an pour un maximum de cinq instances de NGINX Plus aux organisations des secteurs de l'éducation, du gouvernement public et à but non lucratif (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 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 pour une organisation en première ligne de la pandémie et avez des besoins avancés, vous pouvez bénéficier des licences NGINX Plus mentionnées ci-dessus ainsi que d'un niveau supérieur de F5 DNS Load Balancer Cloud Service. Consultez les ressources gratuites pour les sites Web touchés par la COVID-19 pour plus de détails.

Consultez également ce blog pour un aperçu de des moyens simples pour améliorer les performances du site Web avec des 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."