상세 컨텐츠

본문 제목

nginx + hls 스트리밍(vod 파일 이용)

Streaming

by 크리두 2020. 2. 3. 13:48

본문

반응형

<nginx-vod-module 다운로드>

git clone https://github.com/kaltura/nginx-vod-module

 

<nginx 다운로드>

wget http://nginx.org/download/nginx-1.14.2.tar.gz

압축을 푼 다음 configure 진행

./configure --add-module=../nginx-vod-module --with-file-aio --with-threads --with-cc-opt="-O3"

 --with-file-aio : asynchronous I/O 지원

 --with-threads : thread pool 을 이용해서 asynchronous 하게 파일 open

 --with-cc-opt="-O3" : compiler Optimization 을 위한 옵션



출처: https://alnova2.tistory.com/1166 [몽상가]

 

<nginx conf 파일>

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;
    keepalive_timeout  65;

    server {

        listen       80;

        server_name  localhost;

        location / {
            index  index.html index.htm;

        }



        # vod settings

        vod_mode local;

        vod_fallback_upstream_location /fallback;

        vod_last_modified 'Sun, 19 Nov 2000 08:52:00 GMT';

        vod_last_modified_types *;

        vod_metadata_cache metadata_cache 512m;

        vod_response_cache response_cache 128m;

        gzip on;

        gzip_types application/vnd.apple.mpegurl;



        vod_segment_duration 1000;



        open_file_cache          max=1000 inactive=5m;

        open_file_cache_valid    2m;

        open_file_cache_min_uses 1;

        open_file_cache_errors   on;

        aio on;

        location /content/ {

                root /PATH_YOUR_LOCALMEDIA/;

                vod hls;

                add_header Access-Control-Allow-Headers '*';

                add_header Access-Control-Expose-Headers 'Server,range,Content-Length,Content-Range';

                add_header Access-Control-Allow-Methods 'GET, HEAD, OPTIONS';

                add_header Access-Control-Allow-Origin '*';

                expires 100d;

        }

    }

}

/PATH_YOUR_LOCAMEDIA/에 mp4 파일을 넣으면(예를 들어 a.mp4)  http://[SERVER_IP_ADDRESS]/content/a.mp4/index.m3u8 로 접근 가능하다. 동영상은 1초 단위로 쪼개지도록 다음의 파라미터를 1000으로 설정한다.

- vod_segment_duration : 하나의 세그먼트의 duration 시간(밀리초)

 

 

HLS 재생

 

아래 라이브러리로 재생 가능

 

https://github.com/video-dev/hls.js/

 

video-dev/hls.js

JavaScript HLS client using Media Source Extension - video-dev/hls.js

github.com

git clone https://github.com/video-dev/hls.js/
cd hls.js
npm install

 

 

Video.js

 

hls.js보다 video.js가 더 호환성이 좋아서 플레이가 원할함

 

https://github.com/videojs/video.js

 

videojs/video.js

Video.js - open source HTML5 & Flash video player. Contribute to videojs/video.js development by creating an account on GitHub.

github.com

 

반응형

관련글 더보기

댓글 영역