RTMP (Real Time Messaging Protocol) è un protocollo ad alte prestazioni per la trasmissione di dati, audio e video su Internet tra tecnologie di piattaforma basate su flash. Originariamente sviluppato da Macromedia e ora di proprietà di Adobe.
Nginx RTMP è uno streamer multimediale basato su nginx con streaming live RTMP, HLS e MPEG-DASH. Il modulo Nginx RTMP ha molte funzionalità, tra cui il supporto H264/AAC, il supporto per la richiamata HTTP, il modulo di controllo HTTP per la registrazione di audio/video, ecc.
In questo tutorial, ti mostrerò come installare e configurare il server web Nginx con il modulo RTMP. Utilizzeremo l'ultimo server CentOS 7 e questa guida includerà la configurazione del modulo nginx e rtmp e la creazione di streaming live RTMP e video on demand.
Prerequisiti
- Server CentOS 7
- Privilegi di root
Cosa faremo?
- Installa dipendenze
- Scarica Nginx con pacchetto aggiuntivo e modulo RTMP
- Compila Nginx e installa dal sorgente
- Configura Nginx come servizio
- Configura modulo Nginx RTMP
- Imposta il primo live streaming RTMP
- Test
Passaggio 1:installazione delle dipendenze
In questo tutorial, creeremo il server web Nginx dal sorgente. Dobbiamo installare tutte le dipendenze dei pacchetti necessarie, inclusi gli strumenti di sviluppo, il repository EPEL e altri pacchetti.
Installa gli "Strumenti di sviluppo" di CentOS.
sudo yum -y groupinstall 'Development Tools'
Aggiungi il repository EPEL.
sudo yum -y install epel-release
Installa le dipendenze Nginx.
sudo yum install -y wget git unzip perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel pcre-devel GeoIP GeoIP-devel
Attendi tutti i pacchetti installati.
Fase 2:scarica Nginx con pacchetto aggiuntivo e modulo RTMP
In questo passaggio, scaricheremo il codice sorgente di nginx con le dipendenze aggiuntive tra cui pcre, zlib e OpenSSL.
Vai alla directory '/usr/local/src'.
cd /usr/local/src
Scarica Nginx 1.14.0 ed estrailo.
wget https://nginx.org/download/nginx-1.14.0.tar.gz
tar -xzvf nginx-1.14.0.tar.gz
Scarica il pacchetto pcre ed estrailo.
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.zip
unzip pcre-8.42.zip
Scarica il pacchetto zlib ed estrailo.
wget https://www.zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
Scarica il pacchetto OpenSSL ed estrailo.
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -xzvf openssl-1.1.0h.tar.gz
Quindi, clona il codice sorgente del modulo Nginx RTMP usando il comando git.
git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git
E rimuovi tutti i file compressi tar.gz e .zip.
rm -f *.tar.gz *.zip
Di seguito sono riportati i dettagli della directory che abbiamo.
ls -lah
E siamo pronti per la compilazione e l'installazione.
Passaggio 3 - Compila Nginx e installa dal sorgente
Vai alla directory 'nginx-1.14.0'.
cd nginx-1.14.0/
Configura nginx 1.14.0 utilizzando i parametri seguenti.
./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--build=CentOS \
--builddir=nginx-1.14.0 \
--with-select_module \
--with-poll_module \
--with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with-mail=dynamic \
--with-mail_ssl_module \
--with-stream=dynamic \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_geoip_module=dynamic \
--with-stream_ssl_preread_module \
--with-compat \
--with-pcre=../pcre-8.42 \
--with-pcre-jit \
--with-zlib=../zlib-1.2.11 \
--with-openssl=../openssl-1.1.0h \
--with-openssl-opt=no-nextprotoneg \
--add-module=../nginx-rtmp-module \
--with-debug
Compila e installa Nginx con il modulo RTMP eseguendo i seguenti comandi.
sudo make
sudo make install
Al termine dell'installazione, dobbiamo creare una nuova directory del modulo di collegamento simbolico, creare un nuovo utente e gruppo nginx e creare una nuova directory della cache nginx.
Crea un modulo di collegamento simbolico nginx nella directory di configurazione '/etc/nginx'.
sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules
Crea un nuovo utente e gruppo di sistema 'nginx'.
sudo useradd -r -d /var/cache/nginx/ -s /sbin/nologin -U nginx
Ora crea una nuova directory della cache Nginx '/var/cache/nginx' e cambia il proprietario della directory in utente e gruppo 'nginx'.
mkdir -p /var/cache/nginx/
chown -R nginx:nginx /var/cache/nginx/
Verifica la configurazione di nginx e la versione di nginx installata.
nginx -t
nginx -V
E il seguente è il risultato.
Il server web Nginx è stato installato su CentOS 7 con il modulo RTMP abilitato.
Passaggio 4 - Configura Nginx come servizio
In questo tutorial, eseguiremo nginx come servizio e dobbiamo creare un nuovo file di servizio nginx nella directory del servizio systemd.
Vai alla directory '/lib/systemd/system' e crea un nuovo file 'nginx.service' usando vim.
cd /lib/systemd/system/
vim nginx.service
incolla la configurazione qui sotto.
[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
Salva ed esci.
Ora ricarica il sistema systemd.
systemctl daemon-reload
Avvia il servizio nginx e abilitalo per l'avvio ogni volta all'avvio del sistema.
systemctl start nginx
systemctl enable nginx
Il server web Nginx è attivo e funzionante come servizio sul sistema CentOS 7.
Passaggio 5:configurazione del modulo Nginx RTMP
In questo passaggio, creeremo una nuova configurazione Nginx personalizzata per il modulo RTMP.
Vai alla directory di configurazione '/etc/nginx' ed esegui il backup del file 'nginx.conf' originale.
cd /etc/nginx/
mv nginx.conf nginx.conf.asli
Ora crea una configurazione personalizzata 'nginx.conf'.
vim nginx.conf
Incolla la configurazione di Nginx RTMP di seguito.
worker_processes auto; events { worker_connections 1024; } # RTMP configuration rtmp { server { listen 1935; # Listen on standard RTMP port chunk_size 4000; # Define the Application application show { live on; # Turn on HLS hls on; hls_path /mnt/hls/; hls_fragment 3; hls_playlist_length 60; # disable consuming the stream from nginx as rtmp deny play all; } } } http { sendfile off; tcp_nopush on; aio on; directio 512; default_type application/octet-stream; server { listen 8080; location / { # Disable cache add_header 'Cache-Control' 'no-cache'; # CORS setup add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Expose-Headers' 'Content-Length'; # allow CORS preflight requests if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain charset=UTF-8'; add_header 'Content-Length' 0; return 204; } types { application/dash+xml mpd; application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /mnt/; } } }
Salva ed esci.
Successivamente, abbiamo bisogno di creare una nuova directory per la configurazione HLS e abbiamo definito la directory principale web nella directory '/mnt'.
Crea la directory 'hls' nella directory '/mnt' e cambia il proprietario della directory nell'utente e nel gruppo nginx.
mkdir -p /mnt/hls
chown -R nginx:nginx /mnt/hls
Testare la configurazione e riavviare il servizio nginx.
nginx -t
systemctl restart nginx
Passaggio 6 - Configurazione del primo live streaming RTMP
In questo tutorial creeremo un nuovo flusso video RTMP on demand utilizzando i video mp4 sul server e creeremo un nuovo flusso RTMP live che verrà trasmesso dal computer locale utilizzando il software OBS.
Vai alla directory di configurazione '/etc/nginx' e modifica il file 'nginx.conf'.
cd /etc/nginx/
vim nginx.conf
Incolla le configurazioni di seguito nella parentesi 'rtmp { ... }'.
# RTMP video on demand for mp4 files application vod { play /mnt/mp4s; } # RTMP stream using OBS application stream { live on; }
Salva ed esci.
Ora crea una nuova directory "mp4s" per archiviare tutti i video vod e cambia il proprietario nel gruppo di utenti nginx.
mkdir -p /mnt/mp4s
chown -R nginx:nginx /mnt/mp4s
Verifica la configurazione di nginx e assicurati che non ci siano errori, quindi riavvia il servizio nginx.
nginx -t
systemctl restart nginx
La configurazione di Nginx per lo streaming live RTMP e lo stream vod è stata completata.
Fase 7 - Test
Prova lo streaming live RTMP e lo streaming vod utilizzando il lettore VLC.
Streaming di video on demand
Apri l'app VLC sul tuo computer.
Fai clic sul menu "File" e scegli l'opzione "Apri rete".
Ora digita l'URL RTMP per il nostro vod stream.
rtmp://192.168.1.10:1935/vod/file.mp4
Fai clic sul pulsante "Apri".
E i seguenti sono i risultati del flusso video.
Streaming live utilizzando OBS (Open Broadcaster Software)
In questo tutorial testeremo lo streaming live RTMP utilizzando il software obs e il lettore vlc.
Trasmetteremo in streaming solo la finestra del terminale utilizzando il software broadcaster aperto e proveremo a guardare lo streaming live RTMP utilizzando il lettore VLC.
Di seguito è riportata la mia configurazione per il software obs.
Apri l'app VLC sul tuo computer.
Fai clic sul menu "File", scegli l'opzione "Apri rete".
Ora digita l'URL RTMP per il nostro live streaming.
rtmp://192.168.1.10:1935/stream/
Fai clic sul pulsante "Apri".
E il seguente è il risultato del live streaming che utilizza un'emittente aperta tramite il modulo nginx rtmp.
L'installazione del server web Nginx con modulo RTMP su CentOS 7 è stata completata con successo.