RTMP (Real Time Messaging Protocol) adalah protokol kinerja tinggi untuk transmisi data, audio, dan video melalui internet antara teknologi platform berbasis flash. Awalnya dikembangkan oleh Macromedia, dan sekarang dimiliki oleh Adobe.

Nginx RTMP adalah streamer media berbasis nginx dengan live streaming  RTMP, HLS, dan MPEG-DASH. Modul Nginx RTMP memiliki banyak fitur, termasuk dukungan H264 / AAC, dukungan panggilan balik HTTP, modul kontrol HTTP untuk merekam audio / video dll.

Dalam tutorial ini, saya akan menunjukkan kepada Anda bagaimana menginstal dan mengkonfigurasi webserver  Nginx dengan modul RTMP. Kami akan menggunakan server CentOS 7 terbaru, dan panduan ini akan mencakup konfigurasi modul nginx dan rtmp dan membuat live streaming RTMP dan video.

Persyaratan : CentOS 7 Server dan Akses Root

Apa yang akan kita lakukan?

  1. Install Dependencies
  2. Download Nginx dan Package and Module RTMP
  3. Compile Nginx dan Install
  4. Konfigurasi Nginx sebagai Service
  5. Konfigurasi Nginx RTMP Module
  6. Setting RTMP Live Stream

Langkah Pertama

Install Dependencies

Dalam tutorial ini, kita akan membangun webserver  Nginx. Kita perlu menginstal semua dependensi paket yang diperlukan, termasuk alat pengembangan, repositori EPEL, dan paket lainnya.

sudo yum -y groupinstall ‘Development Tools’

Tambahkan repositori EPEL.

sudo yum -y install epel-release

Install Nginx dependencies :

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

Tunggu semua paket diinstal.

Langkah 2 – Unduh Nginx dengan Paket Tambahan dan Modul RTMP

Pada langkah ini, kita akan mengunduh source code nginx dengan dependensi tambahan termasuk pcre, zlib, dan OpenSSL.

Buka direktori ‘/ usr / local / src’.

cd /usr/local/src

Unduh Nginx 1.14.0 dan ekstrak.

wget https://nginx.org/download/nginx-1.14.0.tar.gz
tar -xzvf nginx-1.14.0.tar.gz

Unduh paket pcre dan ekstrak.

wget https://ftp.pcre.org/pub/pcre/pcre-8.42.zip
unzip pcre-8.42.zip

Unduh paket zlib dan ekstrak.

wget https://www.zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz

Unduh paket OpenSSL dan ekstrak.

wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -xzvf openssl-1.1.0h.tar.gz

Selanjutnya, clone kode  Modul Nginx RTMP menggunakan perintah git.

git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git

Dan hapus semua file tar.gz dan .zip

rm -f *.tar.gz *.zip

Langkah 3 – Compile Nginx dan Instal dari Source

Pergi ke direktori ‘nginx-1.14.0’.

cd nginx-1.14.0/

Konfigurasikan nginx 1.14.0 menggunakan parameter-parameter di bawah ini.

./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

Compile dan instal Nginx dengan modul RTMP dengan menjalankan perintah berikut.

sudo make
sudo make install

Ketika instalasi selesai, kita perlu membuat direktori modul symlink baru, membuat user dan grup nginx baru, dan membuat direktori cache nginx baru.

Buat modul symlink nginx ke direktori konfigurasi ‘/ etc / nginx’.

sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules

Buat user dan grup sistem ‘nginx’ baru.

sudo useradd -r -d /var/cache/nginx/ -s /sbin/nologin -U nginx

Sekarang buat direktori cache Nginx baru ‘/ var / cache / nginx’ dan ubah pemilik direktori menjadi user dan grup ‘nginx’.

mkdir -p /var/cache/nginx/
chown -R nginx:nginx /var/cache/nginx/

Tes konfigurasi nginx dan versi nginx yang telah diinstal.

nginx -t
nginx -V

Langkah 4 – Konfigurasikan Nginx sebagai Service

Dalam tutorial ini, kita akan menjalankan nginx sebagai service dan kita perlu membuat file service nginx baru ke direktori service systemd.

Buka direktori ‘/ lib / systemd / system’ dan buat file ‘nginx.service’ baru menggunakan vim.

cd /lib/systemd/system/
vim nginx.service

Paste konfigurasi di bawah ini.

[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

Simpan dan keluar.

Sekarang Reload systemd.

systemctl daemon-reload

Start Service nginx dan aktifkan service pada  setiap kali boot sistem.

systemctl start nginx
systemctl enable nginx

 

Langkah 5 – Mengkonfigurasi Modul Nginx RTMP

Pada langkah ini, kita akan membuat konfigurasi Nginx kustom baru untuk modul RTMP.

Buka direktori konfigurasi ‘/ etc / nginx’ dan buat cadangan file ‘nginx.conf’ yang asli.

cd / etc / nginx /
mv nginx.conf nginx.conf.ok

Sekarang buat konfigurasi khusus ‘nginx.conf’.

vim nginx.conf

Rekatkan konfigurasi Nginx RTMP di bawah ini.

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/;
}
}
}

Simpan dan keluar.

Selanjutnya, kita perlu membuat direktori baru untuk konfigurasi HLS dan kita telah mendefinisikan direktori root web pada direktori ‘/ mnt’.

Buat direktori ‘hls’ di bawah direktori ‘/ mnt’ dan ubah pemilik direktori menjadi  user dan grup nginx.

mkdir -p /mnt/hls
chown -R nginx:nginx /mnt/hls

Test konfigurasi dan Reload Service nginx.

nginx -t
systemctl restart nginx

Langkah 6 – Siapkan Live Streaming  RTMP

Dalam tutorial ini, kita akan membuat video streaming RTMP baru sesuai permintaan menggunakan video mp4 di server, dan membuat streaming RTMP baru yang akan disiarkan dari komputer lokal menggunakan software OBS.

Buka direktori konfigurasi ‘/ etc / nginx’ dan edit file ‘nginx.conf’.

cd /etc/nginx/
vim nginx.conf

Pastekan konfigurasi di bawah ini ke dalam ‘rtmp {disini}’

# RTMP video on demand for mp4 files
application vod {
play /mnt/mp4s;
}

# RTMP stream using OBS
application stream {
live on;
}

Simpan dan keluar.

Sekarang buat direktori baru ‘mp4s’ untuk menyimpan semua video vod, dan ubah pemilik menjadi user grup nginx.

mkdir -p /mnt/mp4s
chown -R nginx:nginx /mnt/mp4s

Tes konfigurasi nginx dan pastikan tidak ada kesalahan, kemudian restart service nginx.

nginx -t
systemctl restart nginx

Langkah 7 – Uji coba

Dalam tutorial ini, kami akan menguji streaming langsung RTMP menggunakan software obs, dan vlc player.

 

 

instalasi server web Nginx dengan modul RTMP pada CentOS 7 telah berhasil.