BLOG | NGINX

Aktivieren von Video-Streaming für Fernunterricht mit NGINX und NGINX Plus

NGINX-Teil-von-F5-horiz-schwarz-Typ-RGB
Nina Forsyth Miniaturbild
Nina Forsyth
Veröffentlicht am 16. April 2020

Ich war begeistert, als F5 vor einem Jahr den Kauf von NGINX bekannt gab, denn als langjähriger F5-Mitarbeiter wusste ich, dass NGINX perfekt passen würde. Dieses Gefühl wurde bestätigt, als die Mitarbeiter von NGINX bei einem unserer ersten gemeinsamen Meetings etwas besprachen, das mir sehr wichtig war: ihr Engagement für die „Community“. Seit ich dem NGINX-Team als Produktmanager beigetreten bin, hatte ich das Vergnügen, dieses Engagement in Aktion zu sehen und intensiver mit der Community zusammenzuarbeiten.

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

Diejenigen von uns, die mit Open Source arbeiten, verwenden den Begriff „Community“ normalerweise, um Personen zu beschreiben, die ein Open-Source-Projekt durch das Einreichen von Code unterstützen. Obwohl sie wichtig sind, stellen sie nur einen kleinen Teil der NGINX-Community dar. Wer sind dann die anderen Mitglieder der Gemeinschaft? Wir schätzen auch diejenigen unter Ihnen, die:

  • Verwenden Sie NGINX in den Projekten, die Sie auf GitHub teilen
  • Verlassen Sie sich auf NGINX, um Ihren Benutzern Websites, Apps und APIs sicher bereitzustellen
  • Schreiben Sie Blogbeiträge zur Installation und Verwendung von NGINX
  • Helfen Sie NGINX-Benutzern in öffentlichen Foren

In den letzten Monaten sind die Mitglieder der NGINX-Community wirklich zusammengekommen, um sich gegenseitig und die vielen Organisationen zu unterstützen, die während der COVID-19-Pandemie darum kämpfen, ihren Betrieb aufrechtzuerhalten. Viele von Ihnen haben Websites markiert, die von der NGINX-Software profitieren könnten, oder sogar Zeit und Fachwissen zur Verfügung gestellt, um NGINX für optimale Leistung zu optimieren. Um unseren Teil beizutragen, haben wir kostenlose Ressourcen für von COVID-19 betroffene Websites veröffentlicht und waren begeistert, wie sich die Community um neue NGINX-Benutzer versammelt hat.

Im Rahmen unserer Bemühungen, Organisationen dabei zu helfen, mit dem erhöhten Datenverkehr umzugehen und neue Funktionen hinzuzufügen, haben wir Organisationen an der Front der Pandemie bis zu fünf kostenlose Instanzen von NGINX Plus zur Verfügung gestellt. Dazu gehörten medizinische Dienstleister, Behörden und – was für diesen Blog am relevantesten ist – Schulen, Universitäten und gemeinnützige Organisationen mit Bildungsschwerpunkt. Wir haben bei diesen Organisationen einen Trendanwendungsfall entdeckt, der Sie wahrscheinlich nicht überraschen wird: Streaming-Video !

Da Schulen auf der ganzen Welt ihre Türen schließen und schnell auf Fernunterricht umstellen, erwarten wir, dass die Nutzung von Streaming-Videos in den kommenden Wochen und Monaten exponentiell zunehmen wird. Im Rest dieses Blogs erkläre ich, wie Sie mit NGINX Open Source und NGINX Plus stabiles, sicheres und skalierbares Video-Streaming ermöglichen.

Ein großes Dankeschön geht an den NGINX Technical Solutions Architect James Jones für die Aufnahme von Demovideos als Ergänzung zu diesem Blog!

Live-Video-Streaming und Videospeicherung mit NGINX Open Source

Unsere Lösung für Video-Streaming nutzt das Real-Time Messaging Protocol (RTMP)-Modul für NGINX. In diesem Video erklärt James den Vorgang Schritt für Schritt:

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

Ein wichtiger Hinweis: Vergessen Sie die Sicherheit nicht!

Die in diesem Blog vorgestellten NGINX-Konfigurationen enthalten keine Sicherheitsmaßnahmen, um einzuschränken, wer Ihren Videostream ansehen kann. Es gibt verschiedene Möglichkeiten, Ihre Streams mit der Front-End-Anwendung zu sichern, die Ihre Zuschauer zum Ansehen des Videos verwenden. Sie können beispielsweise den Zugriff nur von bestimmten IP-Adressen aus zulassen oder eine Authentifizierung der Zuschauer verlangen.

Installieren der Build-Tools

Bevor Sie NGINX kompilieren, müssen Sie einige grundlegende Build-Tools installiert haben: autoconf , gcc , git und make . Um sie herunterzuladen und zu installieren, führen Sie den Befehl für Ihr Betriebssystem aus (wenn er hier nicht enthalten ist, lesen Sie die Dokumentation des Betriebssystemanbieters).

  • Für Debian und Ubuntu:

    $ sudo apt update $ sudo apt installiere Build-Essential git
  • Für CentOS, Oracle Linux und RHEL:

    $ sudo yum update $ sudo yum groupinstall "Entwicklungstools" $ sudo yum install git

Installieren von Abhängigkeiten

Der NGINX-Build erfordert außerdem mehrere Abhängigkeiten: Perl-kompatible reguläre Ausdrücke (PCRE), OpenSSL und zlib zur Komprimierung.

Installieren von Abhängigkeiten mit einem Paketmanager

Der einfachere Weg zum Herunterladen und Installieren der Abhängigkeiten ist die Verwendung eines Paketmanagers. Führen Sie den Befehl für Ihr Betriebssystem aus (wenn er hier nicht enthalten ist, lesen Sie die Dokumentation des Betriebssystemanbieters).

  • Für Debian und Ubuntu:

    $ sudo apt installiere libpcre3-dev libssl-dev zlib1g-dev
  • Für CentOS, Oracle Linux und RHEL:

    $ sudo yum groupinstall pcre-devel zlib-devel openssl-devel

Installieren von Abhängigkeiten aus der Quelle

Wenn Sie die Abhängigkeiten stattdessen aus der Quelle erstellen und installieren möchten, lesen Sie unsere Anweisungen .

Kompilieren von NGINX mit dem RTMP-Modul

Um den Build abzuschließen, klonen Sie die GitHub-Repositorys für RTMP und NGINX, führen den NGINX- Konfigurationsbefehl aus und kompilieren dann NGINX.

$ cd /Pfad/zum/Build-Verzeichnis $ 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

Konfigurieren von NGINX

Sie können NGINX so konfigurieren, dass Videos mit einem oder beiden der Protokolle „HTTP Live Streaming“ (HLS) und „Dynamic Adaptive Streaming over HTTP“ (DASH) gestreamt werden. Die Protokolle bieten dieselbe Funktionalität, die Wahl zwischen ihnen ist also wirklich eine Frage der Präferenz. Wenn Sie damit nicht vertraut sind, lesen Sie HLS vs. DASH im Vidbeo-Blog.

HLS-Konfiguration

Für HLS ist die Konfiguration wie folgt. In der Demo (beim Zeitpunkt 5:10) erklärt James den Zweck dieser Anweisungen.

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 ist die Konfiguration wie folgt. In der Demo kombiniert James HLS und DASH in einer einzigen Konfiguration, da viele Anweisungen für beide Protokolle gleich 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;
} 
}

Überprüfen der Konfiguration und Starten von NGINX

Es ist immer eine gute Idee, Ihre NGINX-Konfiguration zu validieren, um sicherzustellen, dass keine syntaktischen Fehler vorliegen. Führen Sie diesen Befehl aus:

$ sudo nginx -t nginx: die Syntax des Dateinamens der Konfigurationsdatei ist ok nginx: Test des Dateinamens der Konfigurationsdatei war erfolgreich

Führen Sie dann diesen Befehl aus, um NGINX zu starten:

$ sudo nginx

Testen der Wiedergabemethoden

Starten Sie Ihren Videostream. OBS Studio ist ein häufig verwendetes Open-Source-Tool, mit dem Sie durch die Konfiguration eines benutzerdefinierten RTMP-Servers einen Livestream von Ihrer Workstation auf Ihren NGINX-Server durchführen können. Konfigurieren Sie OBS zum Streamen nach rtmp:// NGINX_server /tv/tv2 , wobei NGINX_server die IP-Adresse oder der Hostname Ihres NGINX-Servers ist. Es ist kein Stream-Schlüssel erforderlich.

James verwendet OBS in der Demo nicht, da er das Video nicht live, sondern aus einer Datei streamt. 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 Video, das er streamt (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 mit den von Ihnen konfigurierten Protokollen korrekt bereitstellt. James öffnet drei Instanzen des VLC Media Players und greift auf die entsprechende URL für jede Wiedergabemethode zu. In den URLs ist NGINX_server die IP-Adresse oder der Hostname 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 umfasst erweiterte Funktionen zur Verbesserung der Leistung und des Endbenutzererlebnisses mit vorgefertigten Modulen. Du kannst:

  • Unterstützen Sie eine höhere Skalierung durch das Zwischenspeichern von Videos
  • Bereitstellung von Video-on-Demand -Diensten (VOD)
  • Verwalten Sie Ihre Streaming-Kosten und -Kapazität, indem Sie die Bandbreite begrenzen

Während der COVID‑19‑Pandemie stellt NGINX Organisationen im Bildungs‑, öffentlichen Verwaltungs‑ und Non‑Profit‑Sektor eine kostenlose einjährige Lizenz für bis zu fünf Instanzen von NGINX Plus zur Verfügung (vorbehaltlich Überprüfung und Genehmigung). Weitere Einzelheiten finden Sie unter Kostenlose Ressourcen für von COVID‑19 betroffene Websites .

Um das RTMP-Modul in NGINX Plus zu integrieren, laden Sie es dynamisch. Siehe das NGINX Plus-Administratorhandbuch .

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

Um auf die Dateien zuzugreifen, die James in der zweiten Demo verwendet, sehen Sie sich sein GitHub-Repository an.

Wir stecken da gemeinsam drin

Wenn Sie Probleme bei der Implementierung von Video-Streaming oder einem anderen Anwendungsfall haben, helfen wir Ihnen gerne! NGINX-Mitarbeiter und die Community überwachen den NGINX-Kanal auf Stack Overflow1 und beantworten Fragen und Anfragen so schnell wie möglich.

Wenn Sie für eine Organisation an vorderster Front der Pandemie arbeiten und erweiterte Anforderungen haben, qualifizieren Sie sich möglicherweise für die oben genannten NGINX Plus-Lizenzen sowie für eine höhere Stufe des F5 DNS Load Balancer Cloud Service. Weitere Einzelheiten finden Sie unter Kostenlose Ressourcen für von COVID‑19 betroffene Websites .

Schauen Sie sich auch diesen Blog an für einen Überblick über Einfache Möglichkeiten zur Verbesserung der Website-Leistung mit kostenlosen Ressourcen von NGINX und F5.



1Stack Overflow ist eine Website eines Drittanbieters und nicht mit F5 verbunden. Einschl. F5 und seine Tochtergesellschaften lehnen jegliche Haftung für Inhalte (einschließlich allgemeiner Informationen und Lösungsvorschläge für Fragen) ab, die auf Stack Overflow oder anderen Websites von Drittanbietern veröffentlicht werden.


„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."