RTMP is geweldig voor het weergeven van live inhoud. Wanneer RTMP is gekoppeld aan FFmpeg, kunnen streams worden omgezet in verschillende kwaliteiten. Vultr is geweldig voor deze toepassingen omdat ze snelle en toegewijde CPU-prestaties bieden. Het wereldwijde netwerk van Vultr zorgt er ook voor dat u met minimale vertraging hoogwaardige live-inhoud kunt leveren. Laten we beginnen!
Nginx en Nginx-RTMP installeren
Installeer de tools die nodig zijn om Nginx en Nginx-RTMP vanaf de bron te compileren.
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
Maak een werkmap en schakel ernaar.
mkdir ~/working
cd ~/working
Download de Nginx- en Nginx-RTMP-bron.
wget http://nginx.org/download/nginx-1.7.5.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
Installeer het Unzip-pakket.
sudo apt-get install unzip
Pak de bron Nginx en Nginx-RTMP uit.
tar -zxvf nginx-1.7.5.tar.gz
unzip master.zip
Schakel over naar de Nginx-directory.
cd nginx-1.7.5
Voeg modules toe waarmee Nginx zal worden gecompileerd. Nginx-RTMP is inbegrepen.
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Compileer en installeer Nginx met Nginx-RTMP.
make
sudo make install
Installeer de Nginx init-scripts.
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
Start en stop Nginx om configuratiebestanden te genereren.
sudo service nginx start
sudo service nginx stop
FFmpeg installeren
Voeg de FFmpeg PPA toe.
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
Werk de pakketlijsten bij.
sudo apt-get update
Installeer FFmpeg.
sudo apt-get install ffmpeg
Opmerking: de opdracht apt-add-repository is in sommige gevallen mogelijk niet geïnstalleerd. Om het te installeren, voer het uit sudo apt-get install software-properties-common.
Nginx-RTMP en FFmpeg configureren
Open het Nginx-configuratiebestand.
sudo nano /usr/local/nginx/conf/nginx.conf
Voeg het volgende toe.
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;
        }
    }
}
Nadat u het bovenstaande hebt toegevoegd, kunt u instellingen zoals een videobitsnelheid, audiobitsnelheid en resolutie aanpassen. Deze wijzigingen worden alleen toegepast op de stream van lagere kwaliteit. Om meer kwaliteiten toe te voegen, kopieer en plak de exec ffmpeg-regel en wijzig de instellingen. Je moet ook een nieuwe applicatie maken. U kunt dit doen door het bijgevoegde live360-voorbeeld te kopiëren en te plakken. Vergeet niet de exec ffmpeg-regel bij te werken met het adres van de nieuwe applicatie. U kunt dit doen door het uiteindelijke RTMP-adres in de exec ffmpeg-regel te wijzigen.
Opmerking: als u de waarde daarna -b:vwijzigt, wordt de videobitsnelheid gewijzigd. Dit wordt gemeten in kilobits per seconde. Als u de waarde daarna -b:awijzigt, wordt de audiobitsnelheid gewijzigd. Dit wordt gemeten in kilobits per seconde. Als u de waarde daarna -swijzigt, verandert de resolutie.
Sla het bestand op door tegelijkertijd op Control en X te drukken. Start Nginx opnieuw op.
sudo service nginx restart
Opmerking: voor de beste prestaties moet elke stream die wordt geconverteerd een eigen CPU-kern hebben. Er worden bijvoorbeeld twee kwaliteiten, 360P en 480P, gemaakt vanuit een 720P-stream. Er moet een Vultr-instantie met ten minste twee CPU-kernen worden gebruikt.
Beveiligingsnota
Als je een firewall gebruikt, moet je ervoor zorgen dat TCP 1935 is toegestaan.
Met de huidige configuratie kan iedereen naar uw server streamen. We kunnen dit oplossen door alleen bepaalde IP-adressen de publicatietoestemming toe te staan. Open de Nginx-configuratie.
sudo nano /usr/local/nginx/conf/nginx.conf
Zoek naar de volgende regels.
                live on;
                record off;
Voeg het volgende toe aan elke set van de bovenstaande regels. Verander 0.0.0.0 naar uw IP-adres.
                allow publish 127.0.0.1;
                allow publish 0.0.0.0;
                deny publish all;
De configuratie zou er nu ongeveer zo uit moeten zien.
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;
        }
    }
}
Sla het bestand op door tegelijkertijd op Control en X te drukken. Start Nginx opnieuw op.
sudo service nginx restart
Software configureren om te werken met Nginx-RTMP
Streaming-applicaties hebben doorgaans twee velden voor verbindingsinformatie. Het eerste veld is meestal voor de serverinformatie en het tweede veld is meestal voor de streamnaam of -sleutel. De informatie die u in elk veld moet plaatsen, wordt vermeld. De streamnaam of -sleutel kan op alles worden ingesteld.
Field 1: rtmp://your.vultr.ip/live/
Field 2: stream-key-you-set
Om streams te bekijken, opent u de volgende links in een speler die RTMP ondersteunt.
rtmp://your.vultr.ip/live/stream-key-you-set
rtmp://your.vultr.ip/live360p/stream-key-you-set
Het instellen van een speler om live video op een website weer te geven, valt buiten het bestek van deze handleiding. Het zoeken naar de term 'RTMP-webplayer' kan u helpen.