Einrichten eines NGINX RTMP-Servers für Streaming

Ist Ihr Livestream jedes Mal abgestürzt? Wenn ja, müssen Sie einen zuverlässigen Weg finden, um Ihren Stream zu hosten. Aber wenn Sie sich teure Optionen nicht leisten können, keine Sorge! NGINX RTMP wird den Tag retten. NGINX RTMP ist ein zuverlässiges Open-Source-Modul, also wissen Sie, was das bedeutet – es ist KOSTENLOS!

In diesem Tutorial erfahren Sie, wie Sie einen NGINX RTMP-Server einrichten können, damit Sie einen zuverlässigen Livestream mit Ihrer Website einrichten können.

Bereit? Lesen Sie weiter und beginnen Sie mit dem Einrichten eines Livestreams!

Voraussetzungen

Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben:

  • A Linux server – This demo uses Ubuntu 20.04 LTS, but you can use any other Linux distribution with NGINX.
  • NGINX auf dem Linux-Server installiert.
  • A non-root user with sudo privileges.
  • Mindestressourcen, um einen Livestream-Server auszuführen – 2 GB RAM, 2 CPU-Kerne und 20 GB HDD.

Diese Werte sind nur Vorschläge. Die genauen Werte hängen von Ihren tatsächlichen Verkehrsbedürfnissen ab. Je mehr Verkehr Sie haben, desto leistungsstärkere Server benötigen Sie, um Ihr Live-Video zu hosten und zu streamen. In einer Entwicklungsumgebung reicht ein NGINX RTMP-Server mit 2 CPUs und 2 GB RAM aus, um zu testen.

Konfigurieren eines RTMP-Servers

Nun, da die Voraussetzungen erfüllt sind, können Sie mit der Installation und Konfiguration Ihres RTMP-Servers fortfahren. Zuerst installieren Sie ein NGINX-Modul, um Ihren NGINX-Server in einen RTMP-Server umzuwandeln, und konfigurieren dann die NGINX-Konfigurationsdatei, um Live-Streams für Benutzer zu aktivieren.

1. Öffnen Sie Ihr Terminal und führen Sie den Befehl apt update aus, um alle Ihre Pakete zu aktualisieren. Dieser Befehl synchronisiert Ihre Paketdatenbank mit der neuesten Datenbank von Ubuntu.

sudo apt update -y
Updating all your packages

2. Führen Sie als nächstes den folgenden Befehl aus, um einen RTMP-Server auf Ihrem Linux-Server zu installieren.

Das Modul libnginx-mod-rtmp ist ein NGINX-Modul, das Ihren NGINX-Server in einen RTMP-Server umwandelt. Dieses Modul ermöglicht es NGINX, mit dem Adobe Flash Player zu kommunizieren, sodass Sie Ihre Live-Videos oder -Audios streamen können, und wird offiziell von seinem Entwicklungsteam unterstützt.

sudo apt install libnginx-mod-rtmp -y
installing an RTMP server

3. Öffnen Sie die Datei /etc/nginx/nginx.conf in Ihrem bevorzugten Editor, um Ihr RTMP-Live-Programm zu konfigurieren. Die Datei nginx.conf ist eine NGINX-Konfigurationsdatei, die mehrere Direktiven oder Blöcke enthält, um das Verhalten des NGINX-Dienstes zu definieren.

4. Füllen Sie schließlich die Datei nginx.conf mit dem folgenden Code, speichern Sie die Änderungen und verlassen Sie den Editor.

Der untenstehende Code teilt NGINX mit, dass es als RTMP-Server fungieren und Live-Streams für Ihre Benutzer aktivieren soll.

# Dieser Codeblock gibt NGINX an, als RTMP-Server zu fungieren. 
rtmp {
		server {
		# Legt den Port fest, auf dem der Server hören wird.
    listen 1935;
				# Die Größe jedes Datenchunks, der gesendet wird.
				# Flash Player friert ein, wenn der Chunk zu klein ist, 
				# was zu einem Puffer-Unterlauf führen kann.
        chunk_size 4096;
				# IP-Adressen, die berechtigt sind, Inhalte auf den Server hochzuladen.
				# Erlaubt nur dem Localhost, Inhalte auf NGINX RTMP hochzuladen.
				allow publish 127.0.0.1;
				# Allen anderen wird das Hochladen von Inhalten verweigert.
				deny publish all;
				# Definiert eine benannte Anwendung namens "live"
        application live {
				# Gibt NGINX an, Live-Streams für Ihre Benutzer zu aktivieren.
						live on;
				# Diese Zeile gibt NGINX an, die Aufnahme zu deaktivieren. Wenn diese Zeile nicht enthalten ist, 
				# wird NGINX weiterhin aufnehmen und Ihren Stream dauerhaft auf Ihrer Festplatte speichern.
						record off;
				}
		}
}

Sichern des Netzwerks durch Einrichten einer Firewall

Sie haben bereits Ihren NGINX RTMP-Server konfiguriert, aber Sie müssen Ihr Netzwerk absichern und den Datenverkehr kontrollieren. Wie? Durch Einrichten einer Firewall, der Uncomplicated Firewall (UFW), die die Standard-Firewall in Ubuntu ist.

Wenn Sie Ihren NGINX RTMP-Server hinter einer Firewall platzieren, müssen Sie den Port des NGINX RTMP-Servers öffnen. Da Sie Ihren NGINX RTMP-Server so konfiguriert haben, dass er auf Port 1935 hört, erlauben Sie diesem Port den Zugriff durch Ihre Firewall.

1. Führen Sie den folgenden Befehl aus, um eine Firewall-Regel hinzuzufügen, die den Port 1935 auf Ihrer Firewall öffnet. Diese Firewall-Regel ermöglicht es Ihrem NGINX RTMP-Server, Port 1935 für alle eingehenden und ausgehenden Anfragen zugänglich zu machen.

sudo ufw allow 1935/tcp
Opening Port 1935 on your firewall

2. Führen Sie anschließend den folgenden Befehl aus, um Ihre Firewall zu deaktivieren und wieder zu aktivieren. Dieser Befehl startet die Firewall im Grunde neu, damit Änderungen an der Firewall wirksam werden.

sudo ufw disable && sudo ufw enable

3. Führen Sie abschließend den folgenden Befehl aus, um den Status Ihrer Firewall zu überprüfen und zu überprüfen, ob der Port 1935 von allen IP-Adressen (Überall) aus erreichbar ist.

sudo ufw status
Checking if Port 1935 is Accessible from Anywhere

Video-Streaming mit FFmpeg

Ihr NGINX RTMP-Server ist nun aktiv, also ist es Zeit, FFmpeg zu verwenden, um ein Beispielvideo zu erstellen und es über Ihren NGINX RTMP-Server zu streamen. FFmpeg ist eine vollständige Lösung zum Aufnehmen, Konvertieren und Streamen von Audio und Video in vielen verschiedenen Anwendungen wie VLC, OMXPlayer, VobSub und so weiter.

Sie werden das Video-Streaming auf Ihrem Server testen, und Sie können jedes Video verwenden, das klein ist, um es zu streamen.

1. Führen Sie den folgenden Befehl apt install aus, um die erforderlichen Abhängigkeiten für die ordnungsgemäße Ausführung von FFmpeg zu installieren.

Der folgende Befehl installiert Folgendes:

  • libpcre3 – Eine Regex-Bibliothek, die vom ffmpeg-Toolkit verwendet wird, um reguläre Ausdrücke zu parsen und zu kompilieren.
  • libpcre3-dev – Dieses Paket enthält die Entwicklungsheader des libpcre3-Pakets.
  • libssl-dev – Die OpenSSL-Kryptobibliothek wird verwendet, um SSL/TLS-Verbindungen in Ihrem RTMP-Server zu erstellen.
  • zlib1g-dev: Die zlib-Bibliothek ist eine Kompressions- und Dekompressionsbibliothek, die die Übertragung von Audio- und Videodateien über das Internet beschleunigt.
sudo apt install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev
Installing Required Dependencies

2. Führen Sie als Nächstes den folgenden Befehl aus, um ffmpeg auf Ihrem Server zu installieren.

 sudo apt install ffmpeg -y 
Installing FFmpeg

3. Führen Sie abschließend den ffmpeg-Befehl aus, um Folgendes auszuführen und einen neuen Livestream zu erstellen:

  • Lesen Sie die Eingabe (re) aus der Quelldatei (i) mit der Originalbildrate. Ersetzen Sie unbedingt video.mp4 durch den Pfad und Dateinamen Ihres Videos.
  • Kopieren Sie das Videoformat wortwörtlich (c:v copy) und kodieren Sie den Ton mit dem AAC-Codec (c:a aac).
  • Setzen Sie die Audiostichprobenrate auf 44100 Hz (ar 44100). Wenn die Stichprobenrate Ihres Videos niedriger als dieser Wert (44100 Hz) ist, führt FFmpeg Interpolation durch, um die Stichprobenrate zu erhöhen.
  • Stellen Sie die Audio-Kanäle auf einen Kanal (Mono) (ac 1) und das Videoformat ein, das FFmpeg streamen wird (-f flv).
  • Legen Sie Ihr RTMP-Live-Programm fest (rtmp://localhost/live/streamname.flv), das Sie im Abschnitt „Einrichten eines RTMP-Servers“ (Schritt vier) konfiguriert haben. Sie können streamname.flv in einen beliebigen Namen ändern.
ffmpeg -re -i "video.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://139.180.203.6:1935/live/streamname.flv 

Wie unten gezeigt, gibt der ffmpeg-Befehl die erkannten Frames pro Sekunde, die Bitrate und die FPS des neu erstellten RTMP-Live-Streams aus.

Viewing the RTMP Live Stream Data

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie Ihren NGINX RTMP-Server einrichten und Live-Streams auf Ihrem Server aktivieren, indem Sie die NGINX-Konfigurationsdatei ändern. Sie haben auch gelernt, wie Sie einen Video-Livestream unter Verwendung des FFmpeg-Tools über Ihren NGINX RTMP-Server einrichten können.

Sie haben gerade festgestellt, dass das Einrichten eines Livestreams nicht jede Menge Geld kosten muss. Warum nicht zu diesem Zeitpunkt Ihren Stream in Ihre Webseite integrieren, indem Sie das HTML5 <video>-Element verwenden? Oder einen OBS Studio für Ihren RTMP-Stream einrichten?

Source:
https://adamtheautomator.com/nginx-rtmp/