NGINX RTMP Modülü Kurulumu ve Stream Sunucu Yapılandırması
En yaygın video akış protokollerinden biri bir HLS Akış Sunucusudur. HLS, en iyi akış performansı için kullanıcının cihazına ve ağ koşullarına göre uyarlanmış ortam içeriğini akışa almanızı sağlayan uyarlanabilir bir akış teknolojisidir.
HLS ve RTMP, Nginx RTMP modülü kullanılarak Nginx web sunucusuna kolayca entegre edilebilir. Bu öğreticide, Ubuntu’da bir HLS canlı akış sunucusunun nasıl kurulacağını göstereceğiz.
Ayrıca Hazır Yapılandırılmış RTMP Sunucu paketlerimize göz atabilirsiniz.
Nginx RTMP nedir?
Nginx RTMP, medya sunucunuza RTMP ve HLS akışı eklemenizi sağlayan bir Nginx modülüdür. Daha önce, RTMP ve HLS modülleri ayrı Nginx modülleridir, ancak şimdi hepsi tek bir modül olarak Nginx’e eklenebilir.
Sunucu Gereksinimleri
- Ubuntu OS (Komut değişikliklerine sahip diğer İşletim Sistemlerinde çalışabilir)
- Minimum 2GB RAM
- Tüm medya dosyaları için gereken disk alanı
- Sanal Sunucu veya Fiziksel Sunucu
Kurulum Talimatları
Adım 1: SSH üzerinden sunucuya giriş yapın
Sunucuda sudo erişimi olan bir kullanıcı olarak oturum açın. Sudo erişimi olan bir kullanıcı ile giriş yaptıysanız eğer, makalemizde ki her komutun önüne sudo ekleyiniz:
ssh root @ server-ip
2. Adım: Gerekli yazılımları yükleyelim
Apt deposunu güncelleyerek başlayın:
apt-get update
apt-get Upgrade
apt-get install -y git build-essential ffmpeg libpcre3 libpcre3-dev libssl-dev zlib1g-dev
git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git
3. Adım: Nginx Yükleyelim
wget http://nginx.org/download/nginx-1.17.6.tar.gz
tar -xf nginx-1.17.6.tar.gz
cd nginx-1.17.6
./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../nginx-rtmp-module
make -j 1
make install
4. Adım: Nginx Konfigürasyonu Yapalım
rm /usr/local/nginx/conf/nginx.conf
nano /usr/local/nginx/conf/nginx.conf
Açmış olduğumuz Nginx.conf dosyasına aşağıdaki komutları yapıştırıp kaydedelim ve nginx servisini yeniden başlatalım
worker_processes auto;
events {
worker_connections 1024;
}
# RTMP configuration
rtmp {
server {
listen 1935; # Listen on standard RTMP port
chunk_size 4000;
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;
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/;
}
}
}
/usr/local/nginx/sbin/nginx
5. Adım Stream Sunucu Yapılandırması
Bu sunucu, statik dosya, web kamerası vb. Gibi çeşitli kaynaklardan akış sağlayabilir.
Daha önce ffmpeg’i kurduk. Example-vid.mp4 dosyasını http: // localhost / show / stream’imize aktarmaya başlayacağız
ffmpeg -re -i example-vid.mp4 -vcodec libx264 -vprofile baseline -g 30 -acodec aac -strict -2 -f flv rtmp://localhost/show/stream
Bol Trafikler Dileriz.