GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare un server NGINX RTMP per lo streaming

Il tuo live streaming va in crash ogni volta? In tal caso, dovrai trovare un modo affidabile per ospitare il tuo stream. Ma se non puoi permetterti opzioni costose, non preoccuparti! NGINX RTMP salverà la giornata. NGINX RTMP è un modulo open source affidabile, quindi sai cosa significa:è GRATUITO!

In questo tutorial imparerai come configurare un server NGINX RTMP in modo da poter impostare uno streaming live affidabile con il tuo sito web.

Pronto? Continua a leggere e inizia a configurare un live streaming!

Prerequisiti

Questo tutorial sarà una dimostrazione pratica. Se desideri continuare, assicurati di avere quanto segue:

  • Un server Linux:questa demo utilizza Ubuntu 20.04 LTS, ma puoi utilizzare qualsiasi altra distribuzione Linux con NGINX.
  • NGINX installato sul server Linux.
  • Un utente non root con privilegi sudo.
  • Risorse minime richieste per eseguire un server di streaming live:2 GB di RAM, 2 core della CPU e 20 GB di HDD.

Questi valori sono solo suggerimenti. I valori esatti dipendono dalle effettive esigenze di traffico. Più traffico hai, più potenti saranno i server di cui avrai bisogno per ospitare e trasmettere in streaming il tuo video live. In un ambiente di sviluppo, per eseguire il test è sufficiente un server NGINX RTMP con 2 CPU e 2 GB di RAM.

Configurazione di un server RTMP

Ora che i prerequisiti sono stati eliminati, ora puoi passare all'installazione e alla configurazione del tuo server RTMP. Installerai prima un modulo NGINX per convertire il tuo server NGINX in un server RTMP, quindi configurerai il file di configurazione NGINX per abilitare i live streaming per gli utenti.

1. Apri il tuo terminale ed esegui apt update comando per aggiornare tutti i tuoi pacchetti. Questo comando sincronizza il database del tuo pacchetto con l'ultimo database di Ubuntu.

sudo apt update -y

2. Quindi, esegui il comando seguente per installare un server RTMP sul tuo server Linux.

Il libnginx-mod-rtmp module è un modulo NGINX che converte il tuo server NGINX in un server RTMP. Questo modulo consente a NGINX di comunicare con Adobe Flash Player in modo da poter trasmettere in streaming video o audio dal vivo ed è ufficialmente supportato dal suo team di sviluppo.

sudo apt install libnginx-mod-rtmp -y

3. Aprire /etc/nginx/nginx.conf file nel tuo editor preferito per configurare il tuo programma live RTMP. Il nginx.conf file è un file di configurazione NGINX, che contiene diverse direttive o blocchi per definire il comportamento del servizio NGINX.

4. Infine, compila il nginx.conf file con il codice seguente, salva le modifiche ed esci dall'editor.

Il codice seguente dice a NGINX di agire come un server RTMP e abilita i live streaming per i tuoi utenti.

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

Protezione della rete impostando un firewall

Hai già configurato il tuo server NGINX RTMP, ma dovrai proteggere la tua rete e controllare il flusso di traffico. Come? Impostando un firewall, Uncomplicated Firewall (UFW), che è il firewall predefinito in Ubuntu.

Se metti il ​​tuo server NGINX RTMP dietro un firewall, dovrai consentire l'apertura della porta del server NGINX RTMP. Poiché hai configurato il tuo server NGINX RTMP per l'ascolto sulla porta 1935 , consentirai questa porta attraverso il tuo firewall.

1. Esegui il comando seguente per aggiungere una regola firewall che apra la porta 1935 sul tuo firewall. Questa regola del firewall consente al tuo server NGINX RTMP di porta 1935 essere accessibile per tutte le richieste in entrata e in uscita.

sudo ufw allow 1935/tcp

2. Quindi, esegui il comando seguente per disabilitare e riattivare il firewall. Questo comando sostanzialmente riavvia il firewall per rendere effettive eventuali modifiche al firewall.

sudo ufw disable && sudo ufw enable

3. Infine, esegui il comando seguente per controllare lo stato del tuo firewall e verificare se la porta 1935 è accessibile da tutti gli indirizzi IP (Ovunque ).

sudo ufw status

Streaming video utilizzando FFmpeg

Il tuo server NFINX RTMP è ora attivo, quindi è il momento di usare FFmpeg per creare un video di esempio e trasmetterlo in streaming attraverso il tuo server NGINX RTMP. FFmpeg è una soluzione completa per registrare, convertire e trasmettere in streaming audio e video in molte applicazioni diverse come VLC, OMXPlayer, VobSub e così via.

Testerai lo streaming video sul tuo server e potrai utilizzare qualsiasi video di piccole dimensioni per lo streaming.

1. Esegui apt install comando seguente per installare le dipendenze richieste per il corretto funzionamento di FFmpeg.

Il comando seguente installa quanto segue:

  • libpcre3 – Una libreria regex utilizzata dal toolkit ffmpeg per analizzare e compilare espressioni regolari.
  • libpcre3-dev – Questo pacchetto contiene gli header di sviluppo del pacchetto libpcre3.
  • libssl-dev – La libreria crittografica OpenSSL utilizzata per creare connessioni SSL/TLS nel server RTMP.
  • zlib1g-dev :La libreria zlib è una libreria di compressione e decompressione che velocizza il trasferimento di file audio e video su Internet.
sudo apt install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev

2. Quindi, esegui il comando seguente per installare ffmpeg sul tuo server.

 sudo apt install ffmpeg -y 

3. Infine, esegui ffmpeg comando per eseguire quanto segue e creare un nuovo live streaming:

  • Leggi input (re ) dal file di origine (i ) al framerate originale. Assicurati di sostituire video.mp4 con il percorso e il nome file del tuo video.
  • Copia testualmente il formato video (c:v copy ) e codificare l'audio n codec AAC (c:a aac ).
  • Imposta la frequenza di campionamento dell'audio su 44100 Hz (ar 44100 ). Se la frequenza di campionamento del tuo video è inferiore a questo valore (44100 Hz), FFmpeg esegue l'interpolazione per aumentare la frequenza di campionamento.
  • Imposta i canali audio su un canale (mono) (ac 1 ) e il formato video che FFmpeg trasmetterà in streaming (-f flv ).
  • Imposta il tuo programma live RTMP (rtmp://localhost/live/streamname.flv ) che hai configurato nella sezione "Configurazione di un server RTMP" (passaggio quattro). Puoi modificare streamname.flv al nome che preferisci.
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 

Come vedi sotto, il ffmpeg il comando stampa il frame al secondo rileva, il bitrate e fps del flusso live RTMP appena creato.

Conclusione

In questo tutorial, hai imparato come configurare il tuo server NGINX RTMP e abilitare i live streaming sul tuo server modificando il file di configurazione NGINX. Hai anche accennato alla configurazione di un live streaming video utilizzando lo strumento FFmpeg tramite il tuo server NGINX RTMP.

Ti sei appena reso conto che la configurazione di un live streaming non deve costarti ogni centesimo. A questo punto, perché non integrare il tuo stream nella tua pagina web usando l'elemento HTML5


Linux
  1. Come configurare il server multimediale in streaming utilizzando Jellyfin in Linux

  2. Come configurare i blocchi del server Nginx in Ubuntu 18.04 LTS

  3. Come configurare Apache come proxy frontend per Node.js

  4. Come creare un server di streaming in FreeBSD

  5. Come configurare il server NTP in CentOS?

Come configurare Nginx come proxy inverso per Apache su Ubuntu 18.04 VPS

Come configurare HAProxy su CentOS 8

Come configurare la cache Nginx su un server LAMP

Come configurare la cache Nginx sul server LEMP

Come installare NGINX come proxy inverso per Apache su Ubuntu 18.04

Come configurare Nginx come loadbalancer per Apache o Tomcat per HTTP/HTTPS