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 ti assicura anche di poter 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 yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
Crea una directory di lavoro e passa ad essa.
mkdir ~/working
cd ~/working
Scarica le fonti Nginx e Nginx-RTMP.
wget http://nginx.org/download/nginx-1.9.7.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
Installa il pacchetto di decompressione.
sudo yum install unzip
Estrarre la sorgente Nginx e Nginx-RTMP.
tar -xvf nginx-1.9.7.tar.gz
unzip v1.2.1.zip
Passa alla directory Nginx.
cd nginx-1.9.7
Aggiungi moduli da compilare in Nginx. Nginx-RTMP è incluso.
./configure --add-module=../nginx-rtmp-module-1.2.1/
Compilare e installare Nginx con Nginx-RTMP.
make
sudo make install
Creare un file di unità SystemD per Nginx.
sudo nano /usr/lib/systemd/system/nginx.service
Popolare il file con il seguente contenuto.
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
Avviare e abilitare il servizio Nginx.
sudo systemctl start nginx.service
Di 'a SystemD di avviare automaticamente i servizi Nginx all'avvio.
systemctl enable nginx.service
Installazione di FFmpeg
Installa epel-release
e aggiorna il sistema.
sudo yum install epel-release -y
sudo yum update -y
sudo shutdown -r now
Installa il repository Nux.
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
Installa FFmpeg e i suoi pacchetti di sviluppo.
sudo yum install ffmpeg ffmpeg-devel -y
Configurazione di Nginx-RTMP e FFmpeg
Apri il file di configurazione di Nginx.
sudo nano /usr/local/nginx/conf/nginx.conf
Aggiungi quanto segue alla configurazione.
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 il testo di configurazione, è possibile personalizzare impostazioni quali 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 cambiando 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 CTRL+ X.
Riavvia Nginx.
sudo service nginx restart
Nota: per prestazioni ottimali, ogni flusso convertito dovrebbe avere il proprio core della CPU. Ad esempio, se 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.
La configurazione corrente consente a chiunque di eseguire lo streaming sul tuo server. Possiamo risolvere questo problema concedendo a determinati indirizzi IP l'autorizzazione alla pubblicazione. 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. Passa 0.0.0.0
al tuo attuale indirizzo IP.
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;
La configurazione ora avrà un aspetto simile al seguente.
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 CTRL+ X.
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, apri 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