GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit server NGINX RTMP pro streamování

Spadne váš přímý přenos pokaždé? Pokud ano, budete muset najít spolehlivý způsob hostování vašeho streamu. Ale pokud si nemůžete dovolit drahé možnosti, žádný strach! NGINX RTMP zachrání situaci. NGINX RTMP je spolehlivý modul s otevřeným zdrojovým kódem, takže víte, co to znamená – je ZDARMA!

V tomto tutoriálu se naučíte, jak nastavit server NGINX RTMP, abyste mohli na svém webu nastavit spolehlivý živý přenos.

Připraveni? Čtěte dál a začněte nastavovat živý přenos!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud je chcete sledovat, ujistěte se, že máte následující:

  • Linuxový server – Tato ukázka používá Ubuntu 20.04 LTS, ale s NGINX můžete použít jakoukoli jinou distribuci Linuxu.
  • NGINX nainstalovaný na serveru Linux.
  • Uživatel bez oprávnění root s právy sudo.
  • Minimální zdroje potřebné ke spuštění serveru pro živé přenosy – 2G RAM, 2 CPU jádra a 20GB HDD.

Tyto hodnoty jsou pouze návrhy. Přesné hodnoty závisí na vašich skutečných potřebách provozu. Čím větší provoz máte, tím výkonnější servery budete potřebovat k hostování a streamování vašeho živého videa. Ve vývojovém prostředí stačí k testování server NGINX RTMP se 2 CPU a 2 GB RAM.

Konfigurace serveru RTMP

Nyní, když jsou předpoklady z cesty, můžete nyní přejít k instalaci a konfiguraci serveru RTMP. Nejprve nainstalujete modul NGINX, který převede váš server NGINX na server RTMP, a poté nakonfigurujete konfigurační soubor NGINX tak, aby uživatelům umožňoval živé přenosy.

1. Otevřete svůj terminál a spusťte apt update příkaz k aktualizaci všech vašich balíčků. Tento příkaz synchronizuje vaši databázi balíčků s nejnovější databází z Ubuntu.

sudo apt update -y

2. Dále spusťte následující příkaz k instalaci serveru RTMP na váš server Linux.

libnginx-mod-rtmp module je modul NGINX, který převádí váš server NGINX na server RTMP. Tento modul umožňuje NGINX komunikovat s přehrávačem Adobe Flash, takže můžete streamovat živé video nebo zvuk, a je oficiálně podporován jeho vývojovým týmem.

sudo apt install libnginx-mod-rtmp -y

3. Otevřete /etc/nginx/nginx.conf soubor ve vašem oblíbeném editoru pro konfiguraci vašeho živého programu RTMP. Soubor nginx.conf soubor je konfigurační soubor NGINX, který obsahuje několik direktiv nebo bloků pro definování chování služby NGINX.

4. Nakonec vyplňte nginx.conf soubor s následujícím kódem, uložte změny a ukončete editor.

Níže uvedený kód říká NGINX, aby fungoval jako server RTMP a umožnil vašim uživatelům živé přenosy.

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

Zabezpečení sítě nastavením brány firewall

Již jste nakonfigurovali svůj server NGINX RTMP, ale budete muset zabezpečit svou síť a řídit tok provozu. Jak? Nastavením firewallu, Uncomplicated Firewall (UFW), což je výchozí firewall v Ubuntu.

Pokud umístíte svůj server NGINX RTMP za firewall, budete muset povolit otevření portu serveru NGINX RTMP. Protože jste nakonfigurovali server NGINX RTMP tak, aby naslouchal na portu 1935 , povolíte tento port přes váš firewall.

1. Spuštěním následujícího příkazu přidejte pravidlo brány firewall, které otevře port 1935 na vašem firewallu. Toto pravidlo brány firewall povoluje portu serveru NGINX RTMP 1935 být přístupný pro všechny příchozí a odchozí požadavky.

sudo ufw allow 1935/tcp

2. Dále spusťte následující příkaz pro deaktivaci a opětovné zapnutí brány firewall. Tento příkaz v podstatě restartuje bránu firewall, aby se všechny změny na bráně firewall projevily.

sudo ufw disable && sudo ufw enable

3. Nakonec spusťte níže uvedený příkaz a zkontrolujte stav vaší brány firewall a ověřte, zda port 1935 je přístupný ze všech IP adres (Kdekoli ).

sudo ufw status

Streamování videa pomocí FFmpeg

Váš server NFINX RTMP je nyní aktivní, takže je čas použít FFmpeg k vytvoření příkladu videa a jeho streamování prostřednictvím serveru NGINX RTMP. FFmpeg je kompletní řešení pro záznam, konverzi a streamování zvuku a videa v mnoha různých aplikacích, jako je VLC, OMXPlayer, VobSub a tak dále.

Na svém serveru budete testovat streamování videa a pro streamování můžete použít jakékoli video, které má malou velikost.

1. Spusťte apt install příkaz níže k instalaci požadovaných závislostí, aby FFmpeg fungoval správně.

Níže uvedený příkaz nainstaluje následující:

  • libpcre3 – Knihovna regulárních výrazů, kterou používá sada nástrojů ffmpeg, která pomáhá analyzovat a kompilovat regulární výrazy.
  • libpcre3-dev – Tento balíček obsahuje vývojové hlavičky balíčku libpcre3.
  • libssl-dev – Kryptografická knihovna OpenSSL používaná k vytváření připojení SSL/TLS na vašem serveru RTMP.
  • zlib1g-dev :Knihovna zlib je knihovna pro kompresi a dekompresi, která urychluje přenos audio a video souborů přes internet.
sudo apt install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev

2. Dále spusťte následující příkaz pro instalaci ffmpeg na vašem serveru.

 sudo apt install ffmpeg -y 

3. Nakonec spusťte ffmpeg k provedení následujícího a vytvoření nového živého přenosu:

  • Čtení vstupu (re ) ze zdrojového souboru (i ) při původní snímkové frekvenci. Nezapomeňte nahradit video.mp4 s cestou a názvem vašeho videa.
  • Zkopírujte doslovně formát videa (c:v copy ) a zakódujte zvukový kodek AAC (c:a aac ).
  • Nastavte vzorkovací frekvenci zvuku na 44100 Hz (ar 44100 ). Pokud je vzorkovací frekvence vašeho videa nižší než tato hodnota (44 100 Hz), FFmpeg provede interpolaci ke zvýšení vzorkovací frekvence.
  • Nastavte zvukové kanály na jeden kanál (mono) (ac 1 ) a formát videa, který bude FFmpeg streamovat (-f flv ).
  • Nastavte svůj živý program RTMP (rtmp://localhost/live/streamname.flv ), který jste nakonfigurovali v části „Konfigurace serveru RTMP“ (krok čtyři). Můžete změnit streamname.flv na jakékoli jméno, které preferujete.
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 

Jak vidíte níže, ffmpeg příkaz vytiskne rámec za sekundu, kterou detekuje, bitrate a fps nově vytvořeného živého přenosu RTMP.

Závěr

V tomto tutoriálu jste se naučili, jak nastavit server NGINX RTMP a povolit živé přenosy na serveru úpravou konfiguračního souboru NGINX. Dotkli jste se také nastavení živého přenosu videa pomocí nástroje FFmpeg prostřednictvím serveru NGINX RTMP.

Právě jste si uvědomili, že nastavení živého přenosu vás nemusí stát každou korunu. Proč v tuto chvíli neintegrovat stream do vaší webové stránky pomocí HTML5 prvku


Linux
  1. Jak nastavit streamovací mediální server pomocí Jellyfin v Linuxu

  2. Jak nastavit bloky serveru Nginx v Ubuntu 18.04 LTS

  3. Jak nastavit NTP server v CentOS?

  1. Jak nastavit Apache jako frontend proxy pro Node.js

  2. Jak vytvořit streamovací server ve FreeBSD

  3. Jak nastavit HAProxy jako Load Balancer pro Nginx na CentOS 8

  1. Jak nastavit HAProxy jako Load Balancer pro Nginx v CentOS 7

  2. Jak nainstalovat Nginx na Ubuntu 14.04

  3. Jak nainstalovat Nginx v Debianu 7