GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie einen NGINX RTMP-Server für das Streaming ein

Stürzt Ihr Live-Stream jedes Mal ab? Wenn ja, müssen Sie einen zuverlässigen Weg finden, 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, Sie wissen also, was das bedeutet – es ist KOSTENLOS!

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

Bereit? Lesen Sie weiter und beginnen Sie mit der Einrichtung eines Live-Streams!

Voraussetzungen

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

  • Ein Linux-Server – Diese Demo verwendet Ubuntu 20.04 LTS, aber Sie können jede andere Linux-Distribution mit NGINX verwenden.
  • NGINX auf dem Linux-Server installiert.
  • Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.
  • Für den Betrieb eines Livestream-Servers erforderliche Mindestressourcen – 2 GB RAM, 2 CPU-Kerne und 20 GB HDD.

Diese Werte sind nur Vorschläge. Die genauen Werte hängen von Ihrem tatsächlichen Verkehrsbedarf ab. Je mehr Datenverkehr Sie haben, desto leistungsfähigere 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 zum Testen aus.

Konfigurieren eines RTMP-Servers

Nachdem die Voraussetzungen erfüllt sind, können Sie nun mit der Installation und Konfiguration Ihres RTMP-Servers fortfahren. Sie installieren zuerst 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 apt update aus Befehl, um alle Ihre Pakete zu aktualisieren. Dieser Befehl synchronisiert Ihre Paketdatenbank mit der neuesten Datenbank von Ubuntu.

sudo apt update -y

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

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

sudo apt install libnginx-mod-rtmp -y

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

4. Füllen Sie abschließend die nginx.conf aus Datei mit dem folgenden Code, speichern Sie die Änderungen und beenden Sie den Editor.

Der folgende Code weist NGINX an, als RTMP-Server zu fungieren und Live-Streams für Ihre Benutzer zu aktivieren.

# This block of code tells NGINX to act as an RTMP server. 
rtmp {
		server {
		# Sets the port the server will listen on.
    listen 1935;
				# The size of each chunk of data that will be sent.
				# Flash Player will freeze if the chunk is too small, 
				# which can cause a buffer-underflow condition.
        chunk_size 4096;
				# The IP addresses are allowed to publish content to the server.
				# Allow only the localhost to publish content on NGINX RTMP.
				allow publish 127.0.0.1;
				# Deny publishing for everyone else.
				deny publish all;
				# Defines a named application called "live"
        application live {
				# Tells NGINX to enable live streams for your users.
						live on;
				# This line tells NGINX to disable recording. If this line is not included, 
				# NGINX will keep recording and save your stream forever to your disk.
						record off;
				}
		}
}

Sichern des Netzwerks durch Einrichten einer Firewall

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

Wenn Sie Ihren NGINX RTMP-Server hinter einer Firewall platzieren, müssen Sie zulassen, dass der NGINX RTMP-Serverport offen ist. Da Sie Ihren NGINX-RTMP-Server so konfiguriert haben, dass er auf Port 1935 lauscht , lassen Sie diesen Port durch Ihre Firewall zu.

1. Führen Sie den folgenden Befehl aus, um eine Firewallregel hinzuzufügen, die Port 1935 öffnet auf Ihrer Firewall. Diese Firewallregel lässt Ihren NGINX-RTMP-Serverport 1935 zu für alle eingehenden und ausgehenden Anfragen erreichbar sein.

sudo ufw allow 1935/tcp

2. Führen Sie als Nächstes den folgenden Befehl aus, um Ihre Firewall zu deaktivieren und erneut zu aktivieren. Dieser Befehl startet die Firewall grundsätzlich neu, damit alle Änderungen an der Firewall wirksam werden.

sudo ufw disable && sudo ufw enable

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

sudo ufw status

Streaming von Videos mit FFmpeg

Ihr NFINX RTMP-Server ist jetzt aktiv, also ist es an der Zeit, FFmpeg zu verwenden, um ein Beispielvideo zu erstellen und es über Ihren NGINX RTMP-Server zu streamen. FFmpeg ist eine Komplettlösung zum Aufnehmen, Konvertieren und Streamen von Audio und Video in vielen verschiedenen Anwendungen wie VLC, OMXPlayer, VobSub usw.

Sie testen das Video-Streaming auf Ihrem Server und können jedes kleine Video zum Streamen verwenden.

1. Führen Sie apt install aus Befehl unten, um die erforderlichen Abhängigkeiten zu installieren, damit FFmpeg ordnungsgemäß ausgeführt werden kann.

Der folgende Befehl installiert Folgendes:

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

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

 sudo apt install ffmpeg -y 

3. Führen Sie zuletzt ffmpeg aus Befehl, um Folgendes auszuführen und einen neuen Live-Stream zu erstellen:

  • Eingabe lesen (re ) aus der Quelldatei (i ) mit der ursprünglichen Framerate. Achten Sie darauf, video.mp4 zu ersetzen mit dem Pfad und Dateinamen Ihres Videos.
  • Kopieren Sie das Videoformat wörtlich (c:v copy ) und codieren Sie den Audio-n-AAC-Codec (c:a aac ).
  • Setzen Sie die Audioabtastrate auf 44100 Hz (ar 44100 ). Wenn die Abtastrate Ihres Videos unter diesem Wert liegt (44100 Hz), führt FFmpeg eine Interpolation durch, um die Abtastrate zu erhöhen.
  • Audiokanäle auf einen Kanal (Mono) einstellen (ac 1 ) und das Videoformat, das FFmpeg streamen wird (-f flv ).
  • Stellen Sie Ihr RTMP-Live-Programm ein (rtmp://localhost/live/streamname.flv ), die Sie im Abschnitt „Konfigurieren eines RTMP-Servers“ (Schritt vier) konfiguriert haben. Sie können streamname.flv ändern auf einen beliebigen Namen.
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 Sie unten sehen, ist der ffmpeg Befehl druckt den Rahmen pro Sekunde erkennt, die Bitrate , und die fps des neu erstellten RTMP-Livestreams.

Schlussfolgerung

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 das Einrichten eines Video-Livestreams mit dem FFmpeg-Tool über Ihren NGINX-RTMP-Server angesprochen.

Sie haben gerade festgestellt, dass die Einrichtung eines Livestreams Sie nicht jeden Cent kosten muss. Warum integrieren Sie Ihren Stream an dieser Stelle nicht mit dem HTML5-Element


Linux
  1. So richten Sie einen Streaming Media Server mit Jellyfin unter Linux ein

  2. So richten Sie Nginx-Serverblöcke in Ubuntu 18.04 LTS ein

  3. So richten Sie Apache als Frontend-Proxy für Node.js ein

  4. So erstellen Sie einen Streaming-Server in FreeBSD

  5. Wie richte ich einen NTP-Server in CentOS ein?

So richten Sie Nginx als Reverse Proxy für Apache auf Ubuntu 18.04 VPS ein

So richten Sie HAProxy unter CentOS 8 ein

So richten Sie Nginx Cache auf einem LAMP-Server ein

So richten Sie den Nginx-Cache auf dem LEMP-Server ein

So installieren Sie NGINX als Reverse Proxy für Apache unter Ubuntu 18.04

So richten Sie Nginx als Loadbalancer für Apache oder Tomcat für HTTP/HTTPS ein