Come configurare un server NGINX RTMP per lo streaming

Il tuo live stream si blocca ogni volta? In tal caso, dovrai trovare un modo affidabile per ospitare il tuo stream. Ma se non puoi permetterti opzioni costose, niente paura! NGINX RTMP verrà in tuo soccorso. 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 avviare uno streaming live affidabile sul tuo sito web.

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

Prerequisiti

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

  • A Linux server – This demo uses Ubuntu 20.04 LTS, but you can use any other Linux distribution with NGINX.
  • NGINX installato sul server Linux.
  • A non-root user with sudo privileges.
  • Risorse minime richieste per eseguire un server di streaming live – 2 GB di RAM, 2 CPU Core e 20 GB di HDD.

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

Configurazione di un Server RTMP

Ora che i prerequisiti sono stati completati, puoi passare all’installazione e alla configurazione del tuo server RTMP. Innanzitutto, installerai un modulo NGINX per convertire il tuo server NGINX in un server RTMP, quindi configurerai il file di configurazione NGINX per abilitare lo streaming live per gli utenti.

1. Apri il terminale e esegui il comando apt update per aggiornare tutti i pacchetti. Questo comando sincronizza il database dei pacchetti con l’ultimo database da Ubuntu.

sudo apt update -y
Updating all your packages

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

Il modulo libnginx-mod-rtmp è 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 video o audio in diretta ed è ufficialmente supportato dal suo team di sviluppo.

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

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

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

Il codice sottostante indica a NGINX di agire come un server RTMP e abilita lo streaming live per gli utenti.

# Questo blocco di codice indica a NGINX di agire come server RTMP. 
rtmp {
		server {
		# Imposta la porta su cui il server ascolterà.
    listen 1935;
				# La dimensione di ogni blocco di dati che verrà inviato.
				# Flash Player si blocca se il blocco è troppo piccolo,
				# il che può causare una condizione di sottoutilizzo del buffer.
        chunk_size 4096;
				# Gli indirizzi IP autorizzati a pubblicare contenuti sul server.
				# Consenti solo al localhost di pubblicare contenuti su NGINX RTMP.
				allow publish 127.0.0.1;
				# Negare la pubblicazione a tutti gli altri.
				deny publish all;
				# Definisce un'applicazione denominata "live"
        application live {
				# Indica a NGINX di abilitare lo streaming live per gli utenti.
						live on;
				# Questa riga indica a NGINX di disabilitare la registrazione. Se questa riga non è inclusa,
				# NGINX continuerà a registrare e salverà il tuo flusso per sempre sul disco.
						record off;
				}
		}
}

Sicurezza di rete mediante l’installazione di un firewall

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

Se posizionate il vostro server NGINX RTMP dietro un firewall, dovrete consentire l’apertura della porta del server NGINX RTMP. Poiché avete configurato il vostro server NGINX RTMP per ascoltare sulla porta 1935, consentirete a questa porta di attraversare il vostro firewall.

1. Eseguite il seguente comando per aggiungere una regola del firewall che apre la porta 1935 sul vostro firewall. Questa regola del firewall consente alla porta del vostro server NGINX RTMP 1935 di essere accessibile per tutte le richieste in entrata e in uscita.

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

2. Successivamente, eseguite il seguente comando per disabilitare e riabilitare il vostro firewall. Questo comando riavvia essenzialmente il firewall per far sì che qualsiasi modifica al firewall abbia effetto.

sudo ufw disable && sudo ufw enable

3. Infine, eseguite il comando sottostante per verificare lo stato del vostro firewall e verificare se la porta 1935 è accessibile da tutti gli indirizzi IP (Anywhere).

sudo ufw status
Checking if Port 1935 is Accessible from Anywhere

Streaming Video utilizzando FFmpeg

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

Testerete lo streaming video sul vostro server e potete utilizzare qualsiasi video di dimensioni ridotte per lo streaming.

1. Esegui il comando apt install di seguito per installare le dipendenze necessarie affinché FFmpeg funzioni correttamente.

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 tuo 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
Installing Required Dependencies

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

 sudo apt install ffmpeg -y 
Installing FFmpeg

3. Infine, esegui il comando ffmpeg per eseguire le seguenti operazioni e creare un nuovo flusso live:

  • Leggi l’input (re) dal file sorgente (i) al frame rate originale. Assicurati di sostituire video.mp4 con il percorso e il nome del tuo video.
  • Copia il formato video integralmente (c:v copy), e codifica l’audio con il codec AAC (c:a aac).
  • Imposta il sample rate audio a 44100 Hz (ar 44100). Se il sample rate del tuo video è inferiore a questo valore (44100 Hz), FFmpeg esegue un’ interpolazione per aumentare il sample rate.
  • Imposta i canali audio su un canale (mono) (\texttt{ac 1}), e il formato video che FFmpeg trasmetterà (\texttt{-f flv}).
  • Configura il tuo programma live RTMP (\texttt{rtmp://localhost/live/streamname.flv}) che hai configurato nella sezione “Configurazione di un server RTMP” (passo quattro). Puoi cambiare \texttt{streamname.flv} con qualsiasi nome 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 di seguito, il comando \texttt{ffmpeg} stampa il frame al secondo che rileva, il bitrate, e gli fps del flusso live RTMP appena creato.

Viewing the RTMP Live Stream Data

Conclusione

In questo tutorial, hai imparato come configurare il tuo server RTMP NGINX e abilitare i flussi live sul tuo server modificando il file di configurazione NGINX. Hai anche toccato la configurazione di un flusso video live utilizzando lo strumento FFmpeg attraverso il tuo server RTMP NGINX.

Ti sei appena reso conto che creare un flusso live non deve costarti ogni centesimo. A questo punto, perché non integrare il tuo flusso nella tua pagina web utilizzando l’HTML5 elemento \texttt{

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