Instal·lant Nginx i Nginx-RTMP
Instal·lant FFmpeg
Configuració de Nginx-RTMP i FFmpeg
Nota de seguretat
Configuració del programari per treballar amb Nginx-RTMP
RTMP és ideal per mostrar contingut en directe. Quan RTMP es combina amb FFmpeg, els fluxos es poden convertir en diverses qualitats. Vultr és ideal per a aquestes aplicacions, ja que ofereixen un rendiment de CPU ràpid i dedicat. La xarxa global de Vultr també garanteix que podeu oferir contingut en directe d'alta qualitat amb un retard mínim. Comencem!
Instal·lant Nginx i Nginx-RTMP
Instal·leu les eines necessàries per compilar Nginx i Nginx-RTMP des de la font.
sudo yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
Feu un directori de treball i canvieu-hi.
mkdir ~/working
cd ~/working
Baixeu les fonts Nginx i Nginx-RTMP.
wget http://nginx.org/download/nginx-1.9.7.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
Instal·leu el paquet descomprimit.
sudo yum install unzip
Extraieu la font Nginx i Nginx-RTMP.
tar -xvf nginx-1.9.7.tar.gz
unzip v1.2.1.zip
Canvia al directori Nginx.
cd nginx-1.9.7
Afegiu mòduls per compilar a Nginx. Nginx-RTMP està inclòs.
./configure --add-module=../nginx-rtmp-module-1.2.1/
Compileu i instal·leu Nginx amb Nginx-RTMP.
make
sudo make install
Creeu un fitxer d'unitat SystemD per a Nginx.
sudo nano /usr/lib/systemd/system/nginx.service
Omple el fitxer amb el contingut següent.
[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
Inicieu i activeu el servei Nginx.
sudo systemctl start nginx.service
Digueu a SystemD que iniciï els serveis Nginx automàticament a l'arrencada.
systemctl enable nginx.service
Instal·lant FFmpeg
Instal·leu epel-releasei actualitzeu el sistema.
sudo yum install epel-release -y
sudo yum update -y
sudo shutdown -r now
Instal·leu el repositori 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
Instal·leu FFmpeg i els seus paquets de desenvolupament.
sudo yum install ffmpeg ffmpeg-devel -y
Configuració de Nginx-RTMP i FFmpeg
Obriu el fitxer de configuració de Nginx.
sudo nano /usr/local/nginx/conf/nginx.conf
Afegiu el següent a la configuració.
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;
}
}
}
Després d'haver afegit aquest text de configuració, podeu personalitzar la configuració, com ara la taxa de bits de vídeo, la taxa de bits d'àudio i la resolució. Aquests canvis només s'aplicaran al flux de qualitat inferior. Per afegir més qualitats, copieu i enganxeu la línia exec FFmpeg i canvieu la configuració. També haureu de crear una aplicació nova. Podeu fer-ho copiant i enganxant l'exemple de live360 que s'ha inclòs. No oblideu actualitzar la línia exec FFmpeg amb l'adreça de la nova aplicació. Podeu fer-ho canviant l'adreça RTMP final a la línia exec FFmpeg.
Nota: canviar el valor després -b:vcanviarà la taxa de bits del vídeo. Això es mesura en quilobits per segon. Si canvieu el valor després -b:a, canviarà la taxa de bits d'àudio. Això es mesura en quilobits per segon. Si canvieu el valor després -s, canviarà la resolució.
Deseu el fitxer prement CTRL+ X.
Reinicieu Nginx.
sudo service nginx restart
Nota: per obtenir el millor rendiment, cada flux que s'està convertint hauria de tenir el seu propi nucli de CPU. Per exemple, si es creen dues qualitats, 360P i 480P, a partir d'un flux de 720P, s'hauria d'utilitzar una instància Vultr amb almenys dos nuclis de CPU.
Nota de seguretat
Si utilitzeu un tallafoc, haureu d'assegurar-vos que TCP 1935està permès.
La configuració actual permet que qualsevol pugui reproduir el vostre servidor. Podem solucionar-ho només donant permís de publicació a determinades adreces IP. Obriu la configuració de Nginx.
sudo nano /usr/local/nginx/conf/nginx.conf
Busca les següents línies.
live on;
record off;
Afegiu el següent a cada conjunt de les línies anteriors. Canvia 0.0.0.0a la teva adreça IP real.
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;
La configuració ara semblarà a la següent.
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;
}
}
}
Deseu el fitxer prement CTRL+ X.
Reinicieu Nginx.
sudo service nginx restart
Configuració del programari per treballar amb Nginx-RTMP
Les aplicacions de streaming solen tenir dos camps per a la informació de connexió. El primer camp sol ser per a la informació del servidor i el segon camp sol ser per al nom o la clau del flux. Es mostra la informació que heu de col·locar a cada camp. El nom o la clau del flux es pot definir amb qualsevol cosa.
Field 1: rtmp://your.vultr.ip/live/
Field 2: stream-key-you-set
Per veure els fluxos, obriu els enllaços següents en un reproductor que admeti RTMP.
rtmp://your.vultr.ip/live/stream-key-you-set
rtmp://your.vultr.ip/live360p/stream-key-you-set