RTMP è ottimo per pubblicare contenuti live. Quando RTMP è associato a FFmpeg, i flussi possono essere convertiti in varie qualità. Vultr è eccezionale per queste applicazioni in quanto forniscono prestazioni della CPU veloci e dedicate. La rete globale di Vultr garantisce inoltre la possibilità di fornire contenuti live di alta qualità con il minimo ritardo. Iniziamo!
Installazione di Nginx e Nginx-RTMP
Installa gli strumenti necessari per compilare Nginx e Nginx-RTMP dal sorgente.
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
Crea una directory di lavoro e passa ad essa.
mkdir ~/working
cd ~/working
Scarica la sorgente Nginx e Nginx-RTMP.
wget http://nginx.org/download/nginx-1.7.5.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
Installa il pacchetto Unzip.
sudo apt-get install unzip
Estrarre la sorgente Nginx e Nginx-RTMP.
tar -zxvf nginx-1.7.5.tar.gz
unzip master.zip
Passa alla directory Nginx.
cd nginx-1.7.5
Aggiungi moduli con cui verrà compilato Nginx. Nginx-RTMP è incluso.
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Compilare e installare Nginx con Nginx-RTMP.
make
sudo make install
Installa gli script init di Nginx.
sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo update-rc.d nginx defaults
Avvia e arresta Nginx per generare file di configurazione.
sudo service nginx start
sudo service nginx stop
Installazione di FFmpeg
Aggiungi il PPA FFmpeg.
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
Aggiorna gli elenchi dei pacchetti.
sudo apt-get update
Installa FFmpeg.
sudo apt-get install ffmpeg
Nota: il comando apt-add-repository potrebbe non essere installato in alcuni casi. Per installarlo eseguire sudo apt-get install software-properties-common
.
Configurazione di Nginx-RTMP e FFmpeg
Apri il file di configurazione di Nginx.
sudo nano /usr/local/nginx/conf/nginx.conf
Aggiungi quanto segue.
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;
}
application live360p {
live on;
record off;
}
}
}
Dopo aver aggiunto quanto sopra, puoi personalizzare le impostazioni come bitrate video, bitrate audio e risoluzione. Queste modifiche verranno applicate solo al flusso di qualità inferiore. Per aggiungere più qualità, copia e incolla la riga exec ffmpeg e modifica le impostazioni. Dovrai anche creare una nuova applicazione. Puoi farlo copiando e incollando l'esempio live360 che è stato incluso. Non dimenticare di aggiornare la riga exec ffmpeg con l'indirizzo della nuova applicazione. Puoi farlo modificando l'indirizzo RTMP finale nella riga exec ffmpeg.
Nota: la modifica del valore dopo -b:v
modifica il bitrate del video. Questo è misurato in kilobit al secondo. La modifica del valore dopo -b:a
modifica il bitrate audio. Questo è misurato in kilobit al secondo. La modifica del valore dopo -s
modifica la risoluzione.
Salvare il file premendo Control e X insieme. Riavvia Nginx.
sudo service nginx restart
Nota: per prestazioni ottimali, ogni flusso convertito dovrebbe avere il proprio core della CPU. Ad esempio due qualità, 360P e 480P vengono create da un flusso 720P. È necessario utilizzare un'istanza Vultr con almeno due core della CPU.
Nota sulla sicurezza
Se si utilizza un firewall, è necessario assicurarsi che TCP 1935 sia consentito.
L'attuale configurazione consente a chiunque di eseguire lo streaming sul tuo server. Possiamo risolvere questo problema autorizzando la pubblicazione solo per determinati indirizzi IP. Apri la configurazione di Nginx.
sudo nano /usr/local/nginx/conf/nginx.conf
Cerca le seguenti righe.
live on;
record off;
Aggiungi quanto segue a ciascun set delle righe sopra. Cambia 0.0.0.0 nel tuo indirizzo IP.
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;
La configurazione ora dovrebbe assomigliare a questa.
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;
exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;
}
application live360p {
live on;
record off;
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;
}
}
}
Salvare il file premendo Control e X insieme. Riavvia Nginx.
sudo service nginx restart
Configurazione del software per l'utilizzo con Nginx-RTMP
Le applicazioni di streaming in genere hanno due campi per le informazioni sulla connessione. Il primo campo è in genere per le informazioni sul server e il secondo campo è in genere per il nome o la chiave del flusso. Vengono elencate le informazioni che è necessario inserire in ciascun campo. Il nome o la chiave dello stream può essere impostato su qualsiasi cosa.
Field 1: rtmp://your.vultr.ip/live/
Field 2: stream-key-you-set
Per visualizzare i flussi, aprire i seguenti collegamenti in un lettore che supporta RTMP.
rtmp://your.vultr.ip/live/stream-key-you-set
rtmp://your.vultr.ip/live360p/stream-key-you-set
La configurazione di un lettore per la visualizzazione di video in diretta su un sito Web non rientra nell'ambito di questa guida. La ricerca del termine "RTMP web player" potrebbe aiutarti.