NGINX’i HLS Modülü ile Compile Etmek

Önceki yazımda Nginx Plus içerisinde var olan ngx_http_hls_module isimli modülün nasıl kullanılabileceği hakkındaydı.

Şimdi ise, daha önceden fork edilmiş bir ngx_http_hls_module’ünü Nginx ile birlikte kaynaktan compile ederken kullanacağız.

Öncelikle Nginx’i compile edebilmek için gerekli araçları kuralım.

# sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

Ardından, Nginx HLS modülünü bulunduğu github reposundan cloneluyoruz.

# git clone https://github.com/mertaydin/Nginx-HLS-module.git

Bu işlem de bittikten sonra, kurmak için Nginx’i sitesinden indiriyoruz.

# wget http://nginx.org/download/nginx-1.7.5.tar.gz

Ve indirdiğimiz tar.gz dosyasını extract ediyoruz.

# tar -zxvf nginx-1.7.5.tar.gz

Ve bu klasöre geçiyoruz.

# cd nginx-1.7.5

Nginx ve Nginx HLS modülünü indirdikten sonra yapacak tek işimiz kaldı, o da Nginx’i bu HLS modülü ile compile etmek. O işlemi aşağıdaki gibi yapıyoruz.

# ./configure — add-module=../Nginx-HLS-module/
# make
# make install

Bu komutları sıra ile çalıştırdıktan sonra Nginx’i HLS modül ile compile etme işlemini bitirmiş oluyoruz. Bu işlemden sonra yapacaklarımız önceki yazımda bahsettiklerimle benzer olacak.

Nginx conf için aşağıdaki örnek conf’u kullanabiliriz.

http {
server {
listen 80;
rewrite ^(.*)\.mp4$ $1.m3u8 last;
location ~ \.(m3u8|ts)$ {
hls;
hls_length 10; # length of fragment (seconds)
}
}
}

Şimdi, bu HLS modülünü etkin kullanabilmek için direktiflerden bahsedelim.

hls_length;
syntax:
hls_length <integer>
default: 8
context: http, server, location
ts dosyalarının kaçar saniye olacağını belirtir.
hls_relative
syntax:
hls_relative <on | off>
default: on
context: http, server, location
Bu direktif, playlist dosyalarının tam URL’lerinin tutulup tutulmayacağını belirtir.
hls_mp4_buffer_size
syntax:
hls_mp4_buffer_size <size>
default: 512k
context: http, server, location
MP4 dosyalarının işlenmesi sırasında kullanılacak buffer alanı büyüklüğünü belirtmek için kullanılır.
hls_mp4_max_buffer_size
syntax:
hls_mp4_max_buffer_size <size>
default: 10m
context: http, server, location
Videolar işlenirken metada işlemlerinde çok daha geniş buffer alanına ihtiyaç duyulabilmektedir. İşlenen boyut için harcanan buffer bu parametre için verilen size miktarından fazla olamaz aksi taktirde NGINX 500 hatası ve aşağıdaki gibi bir hata verecektir.
"/some/movie/file.mp4" mp4 moov atom is too large:
12583268, you may want to increase hls_mp4_max_buffer_size

Görüldüğü gibi, direktiflerin tamamı aynı diyebiliriz.

Ayrıca, kullanmak için de Nginx Plus ile aynı diyelim. Yani,

http://hls.example.com/test.mp4
URL’sini belirterek http://hls.example.com/test.mp4 dosyasını HLS olarak yayınlayabiliriz.

Son olarak, repoya bu URL’den erişebilirsiniz.