RTMP je protokol zpráv v reálném čase vyvinutý společností Macromedia, který lze použít pro streamování zvuku, videa a dat přes internet. Nginx RTMP je streamer médií založený na Nginx, který přichází se spoustou funkcí včetně podpory H264/AAC, online překódování pomocí FFmpeg, podpory zpětného volání HTTP a řídicího modulu HTTP pro nahrávání zvuku/videa.
V tomto tutoriálu vám ukážeme, jak zkompilovat Nginx s modulem RTMP a vytvořit živý stream RTMP na CentOS 8.
Předpoklady
- Nový CentOS 8 VPS na cloudové platformě Atlantic.Net
- Heslo uživatele root nakonfigurované na vašem serveru
Krok 1 – Vytvoření cloudového serveru Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte CentOS 8 s alespoň 2 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte k serveru CentOS 8, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
yum update -y
Krok 2 – Instalace požadovaných závislostí
Než začnete, budete muset nainstalovat závislosti potřebné pro kompilaci Nginx s podporou RTMP. Nejprve nainstalujte balíček Development Tool group pomocí následujícího příkazu:
yum groupinstall 'Development Tools' -y
Dále nainstalujte úložiště EPEL pomocí následujícího příkazu:
yum install epel-release -y
Po instalaci nainstalujte další požadované závislosti pomocí následujícího příkazu:
yum install wget git unzip perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel pcre-devel GeoIP GeoIP-devel -y
Jakmile jsou všechny balíčky nainstalovány, můžete přistoupit ke kompilaci Nginx.
Krok 3 – Stažení požadovaných součástí
Nejprve si budete muset stáhnout požadované komponenty pro kompilaci Nginx s podporou RTMP.
Nejprve si stáhněte nejnovější stabilní verzi Nginx pomocí následujícího příkazu:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
Po stažení jej rozbalte pomocí následujícího příkazu:
tar -xvzf nginx-1.18.0.tar.gz
Dále stáhněte PCRE a Zlib pomocí následujícího příkazu:
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.zip wget https://www.zlib.net/zlib-1.2.11.tar.gz
Po stažení je rozbalte pomocí následujícího příkazu:
unzip pcre-8.42.zip tar -xvzf zlib-1.2.11.tar.gz
Jakmile jsou oba extrahovány, stáhněte si OpenSSL pomocí následujícího příkazu:
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
Dále rozbalte stažený balíček pomocí následujícího příkazu:
tar -xzvf openssl-1.1.0h.tar.gz
Dále si stáhněte nejnovější verzi modulu Nginx RTMP z úložiště Git pomocí následujícího příkazu:
git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git
Jakmile jsou všechny součásti staženy, můžete přejít k dalšímu kroku.
Krok 4 – Nainstalujte Nginx s podporou RTMP
Nejprve změňte adresář na Nginx pomocí následujícího příkazu:
cd nginx-1.18.0/
Dále nakonfigurujte Nginx s podporou RTMP pomocí následujícího příkazu:
./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.18.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
Po dokončení procesu konfigurace byste měli získat následující výstup:
Configuration summary + using threads + using PCRE library: ../pcre-8.42 + using OpenSSL library: ../openssl-1.1.0h + using zlib library: ../zlib-1.2.11 nginx path prefix: "/etc/nginx" nginx binary file: "/usr/sbin/nginx" nginx modules path: "/usr/lib64/nginx/modules" nginx configuration prefix: "/etc/nginx" nginx configuration file: "/etc/nginx/nginx.conf" nginx pid file: "/var/run/nginx.pid" nginx error log file: "/var/log/nginx/error.log" nginx http access log file: "/var/log/nginx/access.log" nginx http client request body temporary files: "/var/cache/nginx/client_temp" nginx http proxy temporary files: "/var/cache/nginx/proxy_temp" nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp" nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp" nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"
Dále nainstalujte Nginx pomocí následujícího příkazu:
make make install
Po instalaci Nginx ověřte nainstalovanou verzi Nginx pomocí následujícího příkazu:
nginx -V
Měli byste získat následující výstup:
nginx version: nginx/1.18.0 (CentOS) built by gcc 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC) built with OpenSSL 1.1.0h 27 Mar 2018 TLS SNI support enabled configure arguments: --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
Krok 5 – Vytvořte soubor služby Systemd pro Nginx
Dále budete muset vytvořit soubor služby Nginx pro správu služby Nginx. Můžete jej vytvořit pomocí následujícího příkazu:
nano /lib/systemd/system/nginx.service
Přidejte následující řádky:
[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
Po dokončení uložte a zavřete soubor a poté znovu načtěte démona systemd pomocí následujícího příkazu:
systemctl daemon-reload
Dále spusťte Nginx a povolte jeho spuštění při restartu systému pomocí následujícího příkazu:
systemctl start nginx systemctl enable nginx
Krok 6 – Nakonfigurujte Nginx pro použití RTMP
First, create a backup copy of the Nginx main configuration file with the following command: mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
Dále vytvořte nový konfigurační soubor Nginx pomocí následujícího příkazu:
nano /etc/nginx/nginx.conf
Přidejte následující řádky:
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/; } } }
Uložte a zavřete soubor, poté vytvořte nový adresář pro konfiguraci HLS a uveďte správné vlastnictví:
mkdir -p /mnt/hls chown -R nginx:nginx /mnt/hls
Po dokončení uložte a zavřete soubor.
Krok 7 – Vytvořte živý přenos RTMP
Dále budete muset vytvořit streamované video RTMP a vytvořit nový živý stream RTMP. Můžete to udělat úpravou hlavního konfiguračního souboru Nginx:
nano /etc/nginx/nginx.conf
Najděte následující řádky:
hls_playlist_length 60; # disable consuming the stream from nginx as rtmp deny play all; }
Přidejte následující řádky přesně pod výše uvedený řádek:
application vod { play /mnt/mp4s; } # RTMP stream using OBS application stream { live on; }
Uložte a zavřete soubor a poté restartujte službu Nginx pomocí následujícího příkazu:
systemctl restart nginx
Dále vytvořte adresář pro ukládání videa MP4:
mkdir -p /mnt/mp4s
Dále si stáhněte ukázkové video pomocí následujícího příkazu:
cd /mnt/mp4s wget https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4 -O myfile.mp4
Dále přidělte správné vlastnictví adresáři /mnt/mp4s:
chown -R nginx:nginx /mnt/mp4s
Krok 8 – Nainstalujte FFmpeg a spusťte streamovací server
Nejprve budete muset nainstalovat FFmpeg na váš server. Ve výchozím nastavení není nainstalován ve výchozím úložišti CentOS 8, takže budete muset ve svém systému povolit úložiště Powertool. Můžete jej povolit pomocí následujícího příkazu:
yum install epel-release dnf-utils yum-config-manager --set-enabled PowerTools yum-config-manager --add-repo=https://negativo17.org/repos/epel-multimedia.repo
Dále nainstalujte FFmpeg pomocí následujícího příkazu:
yum install ffmpeg -y
Jakmile je FFmpeg nainstalován, spusťte streamovací server pomocí následujícího příkazu:
ffmpeg -re -i /mnt/mp4s/myfile.mp4 -vcodec libx264 -vprofile baseline -g 30 -acodec aac -strict -2 - f flv rtmp://your-server-ip:1935/show/vod
Krok 9 – Otestujte streamování RTMP
Dále budete muset otestovat proud RTMP vod pomocí přehrávače médií VLC.
Jakmile klientský systém otevřete přehrávač médií VLS, přejděte na VLC Media => Open Network Stream . Měli byste vidět následující obrazovku:
Zadejte adresu URL svého streamovacího serveru RTMP a klikněte na Přehrát tlačítko.
Po úspěšném připojení byste měli vidět své video MP4 na následující obrazovce:
Závěr
Ve výše uvedeném tutoriálu jste se naučili, jak nainstalovat Nginx s podporou RTMP. Také jste se naučili, jak nakonfigurovat Nginx pro streamování videa MP4 a přehrávání pomocí přehrávače médií VLC ze vzdáleného systému. Zkuste nainstalovat Nginx s podporou RTMP na VPS Hosting od Atlantic.Net ještě dnes!
Zjistěte více o našich hostingových službách VPS a virtuálních privátních serverech.