Video-Streaming für den Fernunterricht mit NGINX und NGINX Plus ermöglichen

NGINX | 16. April 2020

Ich war begeistert, als F5 vor einem Jahr die Übernahme von NGINX ankündigte, denn als langjähriger F5-Mitarbeiter wusste ich, dass NGINX perfekt zu uns passen würde. Dieses Gefühl bestätigte sich, als NGINX-Mitarbeiter bei einem unserer ersten gemeinsamen Meetings über etwas sprachen, das mir sehr am Herzen liegt: ihr Engagement für die „Community“. Seit ich als Produktmanager zum NGINX-Team gestoßen bin, konnte ich mit Freude erleben, wie dieses Engagement in die Tat umgesetzt wird, und noch enger mit der Community zusammenarbeiten.

Die NGINX-Community hält während der COVID-19-Pandemie zusammen

Wer im Open-Source-Bereich arbeitet, bezeichnet mit „Community“ üblicherweise Menschen, die ein Open-Source-Projekt durch das Einreichen von Code unterstützen. So wichtig sie auch sind, bilden sie doch nur einen kleinen Teil der NGINX-Community. Wer sind also die anderen Mitglieder der Community? Wir schätzen auch diejenigen unter Ihnen, die:

  • NGINX in den Projekten verwenden, die Sie auf GitHub teilen
  • Verlassen Sie sich auf NGINX, um Websites, Apps und APIs sicher für Ihre Benutzer bereitzustellen
  • Verfassen Sie Blogbeiträge über die Installation und Verwendung von NGINX
  • NGINX-Benutzern in öffentlichen Foren helfen

In den vergangenen Monaten haben sich die Mitglieder der NGINX-Community wirklich zusammengeschlossen, um einander und die vielen Organisationen zu unterstützen, die während der COVID‑19-Pandemie Schwierigkeiten hatten, ihren Betrieb aufrechtzuerhalten. Viele von Ihnen haben uns auf Websites hingewiesen, die von der NGINX-Software profitieren könnten, oder sogar Zeit und Fachwissen zur Verfügung gestellt, um NGINX für eine optimale Leistung zu konfigurieren. Um unseren Beitrag zu leisten, haben wir Kostenlose Ressourcen für von COVID‑19 betroffene Websites veröffentlicht. Es hat uns sehr gefreut zu sehen, wie die Community neue NGINX-Benutzer unterstützt.

Im Rahmen unserer Bemühungen, Organisationen bei der Bewältigung des gestiegenen Datenverkehrs und der Einführung neuer Funktionen zu unterstützen, stellen wir Organisationen, die bei der Bekämpfung der Pandemie an vorderster Front stehen, bis zu fünf kostenlose Instanzen von NGINX Plus zur Verfügung. Dazu gehören medizinische Einrichtungen, Behörden und – für diesen Blog besonders relevant – Schulen, Universitäten und gemeinnützige Organisationen im Bildungsbereich. Dabei haben wir unter diesen Organisationen einen immer häufigeren Anwendungsfall festgestellt, der Sie wahrscheinlich nicht überraschen wird: Video-Streaming!

Da Schulen auf der ganzen Welt ihre Türen schließen und in kürzester Zeit Fernunterricht einführen, erwarten wir, dass die Nutzung von Videostreaming in den kommenden Wochen und Monaten exponentiell zunehmen wird. Im weiteren Verlauf dieses Blogbeitrags erläutere ich, wie Sie mit NGINX Open Source und NGINX Plus stabiles, sicheres und skalierbares Videostreaming ermöglichen können.

Ein großes Dankeschön geht an James Jones, Technical Solutions Architect bei NGINX, für die Aufnahme der Demo-Videos zu diesem Blogbeitrag!

Livevideos streamen und Videos mit NGINX Open Source speichern

Unsere Lösung für das Videostreaming nutzt das Real-Time Messaging Protocol-Modul (RTMP) für NGINX. In diesem Video erläutert James den Prozess Schritt für Schritt:

Damit Sie sich beim Ansehen von James’ Demo keine Notizen machen müssen, haben wir in den folgenden Abschnitten alle Befehle und Konfigurationseinstellungen zusammengestellt.

Wichtiger Hinweis: Vergessen Sie die Sicherheit nicht!

Die in diesem Blog vorgestellten NGINX-Konfigurationen enthalten keine Sicherheitsmaßnahmen, die einschränken, wer Ihren Videostream ansehen kann. Es gibt verschiedene Möglichkeiten, Ihre Streams über die Frontend-Anwendung abzusichern, mit der Ihre Zuschauer das Video ansehen. So können Sie beispielsweise den Zugriff auf bestimmte IP-Adressen beschränken oder eine Authentifizierung der Zuschauer verlangen.

Installieren der Build-Tools

Bevor Sie NGINX kompilieren, müssen einige grundlegende Build-Tools installiert sein: autoconf, gcc, git und make. Führen Sie zum Herunterladen und Installieren den für Ihr Betriebssystem vorgesehenen Befehl aus. Falls Ihr Betriebssystem hier nicht aufgeführt ist, lesen Sie die Dokumentation des Betriebssystemanbieters.

  • Für Debian und Ubuntu:
$ sudo apt update$ sudo apt install build-essential git
  • Für CentOS, Oracle Linux und RHEL:
$ sudo yum update$ sudo yum groupinstall "Development Tools"
$ sudo yum install git

Abhängigkeiten installieren

Für die Erstellung von NGINX sind außerdem mehrere Abhängigkeiten erforderlich: Perl Compatible Regular Expressions (PCRE), OpenSSL und zlib für die Komprimierung.

Abhängigkeiten mit einem Paketmanager installieren

Am einfachsten lassen sich die Abhängigkeiten mit einem Paketmanager herunterladen und installieren. Führen Sie den Befehl für Ihr Betriebssystem aus. (Falls es hier nicht aufgeführt ist, lesen Sie die Dokumentation des Betriebssystemanbieters.)

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

Abhängigkeiten aus dem Quellcode installieren

Wenn Sie die Abhängigkeiten stattdessen aus dem Quellcode erstellen und installieren möchten, lesen Sie unsere Anleitung.

NGINX mit dem RTMP-Modul kompilieren

Um den Build abzuschließen, klonen Sie die GitHub-Repositorys für RTMP und NGINX, führen den NGINX-Befehl „configure“ aus und kompilieren anschließend 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

NGINX konfigurieren

Sie können NGINX so konfigurieren, dass Videos über eines oder beide der Protokolle HTTP Live Streaming (HLS) und Dynamic Adaptive Streaming over HTTP (DASH) gestreamt werden. Beide Protokolle bieten dieselbe Funktionalität, sodass die Wahl letztlich von Ihren persönlichen Vorlieben abhängt. Wenn Sie mit diesen Protokollen nicht vertraut sind, lesen Sie den Beitrag „HLS vs. DASH“ im Vidbeo-Blog.

HLS-Konfiguration

Für HLS sieht die Konfiguration wie folgt aus. In der Demo (bei 5:10) erklärt James den Zweck dieser Direktiven.

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;
    } 
}

DASH-Konfiguration

Für DASH sieht die Konfiguration wie folgt aus. In der Demo fasst James HLS und DASH in einer einzigen Konfiguration zusammen, da viele Direktiven für beide Protokolle identisch sind.

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;
    } 
}

Konfiguration überprüfen und NGINX starten

Es empfiehlt sich immer, die NGINX-Konfiguration zu überprüfen, um sicherzustellen, dass sie keine Syntaxfehler enthält. Führen Sie dazu diesen Befehl aus:

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

Führen Sie anschließend diesen Befehl aus, um NGINX zu starten:

$ sudo nginx

Testen der Wiedergabemethoden

Starten Sie Ihren Videostream. OBS Studio ist ein weitverbreitetes Open-Source-Tool, mit dem Sie durch die Konfiguration eines benutzerdefinierten RTMP-Servers einen Livestream von Ihrer Workstation an Ihren NGINX-Server übertragen können. Konfigurieren Sie OBS so, dass der Stream an rtmp://NGINX_server/tv/tv2 gesendet wird, wobei NGINX_server die IP-Adresse oder der Hostname Ihres NGINX-Servers ist. Ein Streamschlüssel ist nicht erforderlich.

James verwendet in der Demo kein OBS, da er das Video aus einer Datei streamt und nicht live. Er startet den Videostream (bei 9:30), indem er das Skript „stream.sh“ ausführt, das folgenden Inhalt hat:

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

Das von ihm gestreamte Video (angegeben mit dem Argument „-I“) ist das Open-Source-Video „Big Buck Bunny“ von blender.org. Einzelheiten zu den anderen Argumenten finden Sie in der ffmpeg-Dokumentation.

Sobald das Video gestreamt wird, können Sie testen, ob NGINX es ordnungsgemäß über die von Ihnen konfigurierten Protokolle bereitstellt. James öffnet drei Instanzen des VLC Media Players und ruft für jede Wiedergabemethode die entsprechende URL auf. In den URLs steht NGINX_server für die IP-Adresse oder den Hostnamen seines NGINX-Servers:

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

Verbesserung der Benutzererfahrung mit NGINX Plus

Wenn Sie eine Videobibliothek oder einen Kurs erstellen, benötigen Sie möglicherweise Funktionen, die über die Möglichkeiten von NGINX Open Source hinausgehen. NGINX Plus bietet erweiterte Funktionen zur Verbesserung der Leistung und des Benutzererlebnisses mithilfe vorgefertigter Module. Sie können:

  • Unterstützen Sie eine höhere Skalierbarkeit durch das Zwischenspeichern von Videos
  • Video-on-Demand-Dienste (VOD) bereitstellen
  • Verwalten Sie Ihre Streaming-Kosten und -Kapazitäten durch die Begrenzung der Bandbreite

Während der COVID‑19-Pandemie stellt NGINX Organisationen aus den Bereichen Bildung, öffentliche Verwaltung und gemeinnützige Arbeit eine kostenlose einjährige Lizenz für bis zu fünf Instanzen von NGINX Plus zur Verfügung (vorbehaltlich Prüfung und Genehmigung). Weitere Informationen finden Sie unter „Kostenlose Ressourcen für von COVID‑19 betroffene Websites“.

Um das RTMP-Modul in NGINX Plus einzubinden, laden Sie es dynamisch. Weitere Informationen finden Sie im Administratorhandbuch für NGINX Plus.

In dieser zweiten Demo zeigt James, wie einfach es ist, NGINX Plus mithilfe von Ansible und Terraform als Load Balancer für drei Videoserver einzurichten:

Die Dateien, die James in der zweiten Demo verwendet, finden Sie in seinem GitHub-Repository.

Wir sitzen alle im selben Boot

Wenn Sie Schwierigkeiten bei der Implementierung von Videostreaming oder einem anderen Anwendungsfall haben, helfen wir Ihnen gerne weiter! Die Mitarbeiter von NGINX und die Community verfolgen den NGIN-Kanal auf Stack Overflow1 und beantworten Fragen und Anfragen so schnell wie möglich.

Wenn Sie für eine Organisation arbeiten, die bei der Bekämpfung der Pandemie an vorderster Front steht, und erweiterte Anforderungen haben, kommen Sie möglicherweise für die oben genannten NGINX Plus-Lizenzen sowie für eine höhere Stufe des F5 DNS Load Balancer Cloud Service infrage. Weitere Informationen finden Sie unter „Kostenlose Ressourcen für von COVID‑19 betroffene Websites“.

In diesem Blog finden Sie außerdem einen Überblick über einfache Möglichkeiten zur Verbesserung der Website-Performance mit kostenlosen Ressourcen von NGINX und F5.


1Stack Overflow ist eine Website eines Drittanbieters und steht in keiner Verbindung zu F5, Inc. F5 und seine verbundenen Unternehmen übernehmen keinerlei Haftung für Inhalte (einschließlich allgemeiner Informationen und vorgeschlagener Lösungen für Fragen), die auf Stack Overflow oder einer anderen Website eines Drittanbieters veröffentlicht werden.


Teilen
Schlagwörter: COVID-19, F5 NGINX, Tech, 2020

Ähnliche Blogbeiträge

Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln
NGINX | 23.08.2022

Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln

Beim NGINX Sprint 2022 besinnen wir uns auf unsere Open-Source-Wurzeln. Erfahren Sie mehr über die Initiativen, die wir im kommenden Jahr verfolgen, und teilen Sie uns mit, was Sie sich wünschen.

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen
NGINX | 08.09.2021

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen

Ein Ingress-Controller kann eines der leistungsstärksten Tools in Ihrem Kubernetes-Stack sein. Erfahren Sie, wie Sie Ihre Ingress-Anforderungen ermitteln, um die beste Option auszuwählen.

Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet
NGINX | 16.08.2021

Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet

Wir haben kürzlich den Lösungsleitfaden zum NGINX Ingress Controller um Empfehlungen zur Dimensionierung für Amazon Elastic Kubernetes Service (EKS) ergänzt. In diesem Blogbeitrag erläutern wir, wie wir diese Empfehlungen erarbeitet haben, und stellen Ihnen alle Informationen zur Verfügung, die Sie benötigen, um selbst ähnliche Tests durchzuführen.

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77
NGINX | 12.12.2018

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77

Bei der Fehlersuche bei Datenverkehrsproblemen zwischen NGINX und Upstream-Servern konnte CDN77 die benötigten Daten nur aus dem Fehlerprotokoll mit aktivierter Debug-Ausgabe beziehen, was die Leistung beeinträchtigt und riesige Dateien erzeugt. Daher entwickelte das Team ein neues benutzerdefiniertes Modul, das ausschließlich die benötigten Daten protokolliert.

Ankündigung von NGINX Plus R16
NGINX | 05.09.2018

Ankündigung von NGINX Plus R16

NGINX Plus R16 ist eine einheitliche, elastische Ingress- und Egress-Schicht für Anwendungen, die die Funktionen eines Load Balancers, API-Gateways und einer WAF vereint und neue Features wie clusterfähige Ratenbegrenzung, Schlüssel-Wert-Speicher, „Random with Two Choices“, verbessertes UDP-Load-Balancing und vieles mehr bietet.

5 Gründe für den Umstieg auf softwarebasiertes Load Balancing
NGINX | 13.10.2016

5 Gründe für den Umstieg auf softwarebasiertes Load Balancing

Entdecken Sie fünf Gründe für den Wechsel zu einem softwarebasierten Load Balancer wie NGINX Plus, darunter Kosteneinsparungen, die Einführung von DevOps und eine einheitliche Lösung für alle Umgebungen.