Instalacija Nginxa i Nginx-RTMP
Instalacija FFmpeg
Konfiguriranje Nginx-RTMP i FFmpeg
Sigurnosna napomena
Konfiguriranje softvera za rad s Nginx-RTMP
RTMP je izvrstan za posluživanje sadržaja uživo. Kada je RTMP uparen s FFmpeg, streamovi se mogu pretvoriti u različite kvalitete. Vultr je izvrstan za ove aplikacije jer pružaju brze i namjenske CPU performanse. Vultrova globalna mreža također osigurava da možete isporučiti visokokvalitetan sadržaj uživo s minimalnim kašnjenjem. Započnimo!
Instalacija Nginxa i Nginx-RTMP
Instalirajte alate potrebne za prevođenje Nginxa i Nginx-RTMP iz izvora.
sudo yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
Napravite radni direktorij i prijeđite na njega.
mkdir ~/working
cd ~/working
Preuzmite Nginx i Nginx-RTMP izvore.
wget http://nginx.org/download/nginx-1.9.7.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
Instalirajte raspakirani paket.
sudo yum install unzip
Izdvojite Nginx i Nginx-RTMP izvor.
tar -xvf nginx-1.9.7.tar.gz
unzip v1.2.1.zip
Prijeđite na Nginx direktorij.
cd nginx-1.9.7
Dodajte module za prevođenje u Nginx. Nginx-RTMP je uključen.
./configure --add-module=../nginx-rtmp-module-1.2.1/
Prevedite i instalirajte Nginx s Nginx-RTMP.
make
sudo make install
Napravite SystemD jediničnu datoteku za Nginx.
sudo nano /usr/lib/systemd/system/nginx.service
Popunite datoteku sljedećim sadržajem.
[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
Pokrenite i omogućite Nginx uslugu.
sudo systemctl start nginx.service
Recite SystemD-u da automatski pokrene Nginx usluge pri pokretanju.
systemctl enable nginx.service
Instalacija FFmpeg
Instalirajte epel-releasei ažurirajte sustav.
sudo yum install epel-release -y
sudo yum update -y
sudo shutdown -r now
Instalirajte Nux spremište.
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
Instalirajte FFmpeg i njegove razvojne pakete.
sudo yum install ffmpeg ffmpeg-devel -y
Konfiguriranje Nginx-RTMP i FFmpeg
Otvorite Nginx konfiguracijsku datoteku.
sudo nano /usr/local/nginx/conf/nginx.conf
Dodajte sljedeće u konfiguraciju.
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;
}
}
}
Nakon što dodate taj konfiguracijski tekst, možete prilagoditi postavke kao što su brzina prijenosa videa, brzina prijenosa zvuka i razlučivost. Ove promjene će se primijeniti samo na stream niže kvalitete. Da biste dodali više kvaliteta, kopirajte i zalijepite exec FFmpeg redak i promijenite postavke. Također ćete morati izraditi novu aplikaciju. To možete učiniti kopiranjem i lijepljenjem primjera live360 koji je uključen. Ne zaboravite ažurirati exec FFmpeg redak s adresom nove aplikacije. To možete učiniti promjenom konačne RTMP adrese u retku exec FFmpeg.
Napomena: Promjena vrijednosti nakon -b:vpromijenit će brzinu prijenosa videa. To se mjeri u kilobitima u sekundi. Promjena vrijednosti nakon -b:apromijenit će brzinu prijenosa zvuka. To se mjeri u kilobitima u sekundi. Promjena vrijednosti nakon -spromijenit će rezoluciju.
Spremite datoteku pritiskom na CTRL+ X.
Ponovno pokrenite Nginx.
sudo service nginx restart
Napomena: Za najbolju izvedbu, svaki stream koji se pretvara trebao bi imati vlastitu CPU jezgru. Na primjer, ako se dvije kvalitete, 360P i 480P, stvaraju iz 720P toka, treba koristiti Vultr instancu s najmanje dvije CPU jezgre.
Sigurnosna napomena
Ako koristite vatrozid, morat ćete provjeriti je li TCP 1935dopušteno.
Trenutna konfiguracija svakome dopušta strujanje na vaš poslužitelj. To možemo popraviti tako da samo određenim IP adresama damo dopuštenje za objavljivanje. Otvorite konfiguraciju Nginxa.
sudo nano /usr/local/nginx/conf/nginx.conf
Potražite sljedeće retke.
live on;
record off;
Dodajte sljedeće u svaki skup gornjih redaka. Promijenite 0.0.0.0na svoju stvarnu IP adresu.
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;
Konfiguracija će sada izgledati otprilike ovako.
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;
}
}
}
Spremite datoteku pritiskom na CTRL+ X.
Ponovno pokrenite Nginx.
sudo service nginx restart
Konfiguriranje softvera za rad s Nginx-RTMP
Streaming aplikacije obično imaju dva polja za informacije o vezi. Prvo polje je obično za informacije o poslužitelju, a drugo polje je obično za naziv ili ključ streama. Navedene su informacije koje trebate staviti u svako polje. Naziv ili ključ streama može se postaviti na bilo što.
Field 1: rtmp://your.vultr.ip/live/
Field 2: stream-key-you-set
Za pregled streamova otvorite sljedeće veze u playeru koji podržava RTMP.
rtmp://your.vultr.ip/live/stream-key-you-set
rtmp://your.vultr.ip/live360p/stream-key-you-set