본문으로 바로가기
반응형

최근 다시 실시간 방송 세팅할일이 있어서 다시 정리해본다.

유료프로그램을 사용하기에는 기관급 아니면 예산이 생기지 않으므로, 무료프로그램들을 이용해서 해보자.

블로그에 이부분들에 대해서 jwplayer나 nginx등에 언급한 것도 있는데 정리하는 차원에서 기록해둔다.

 

크게 3가지로 분류하자면

A. 스트리밍 서버 - Nginx

B. 스트리밍 송출프로그램 - OBS Studio

C. 스트리밍을 볼 클라이언트(웹, 플레이어등. 여기서는 웹에 jwplayer스크립트를 통해서 사용자가 보도록함)

 

1. NGinx서버 구축

먼저 Nginx는 최근버전까지 rtmp hls 등 컴파일해서 올려주는 분이 계신다. 

https://cafe.naver.com/btest/459

 

OBS nginx-rtmp-win32...

OBS RTMP 윈도우 동시송출 ▲오류 없이 컴파일 기존에 Mingliang...

cafe.naver.com

윈도우에 그냥 풀어서 실행하면 된다.

위 conf/nginx.conf 에다가 hls도 제대로 되도록 수정해서 첨부하겠다.

rtmp는 재생이 되는데 http://주소/hls/키.m3u8 이 제생이 안되는 것. http섹션부분이 없어서 그러므로

이부분을 추가한 conf파일을 사용하도록 한다.

 

nginx-rtmp-win32-1.17.0_V3_20190527.zip
2.16MB

문토바이님의 conf에는 로컬rtmp뿐아니라 유튜브, 트위치, 아프리카 등으로 push 도 가능하도록 세팅되어있으니 동시 송출이 가능하게 된다. conf 내용 열어서 사용법대로 하면된다.

 

참고사항.

로컬 rtmp는 딜레이 5초 =  옵션 변경하여 2초

로컬 http로 hls m3u8 재생은 30초 딜레이가 생기는것 같다.  = 옵션 변경하여 8초

 

rtmp는 flash기반으로 재생이 되어, PC에서는 재생이 잘되지만, 모바일에서는(flash퇴출이라) html5 방식으로 재생을 해야하기때문에 http 방식의 hls m3u8로 재생되도록 해야한다.

 

nginx.exe는 반드시 방화벽예외처리 해주어야 외부에서 접속되므로 방화벽 해제등록하자.

nginx 시작은 00_START.bat 더블클릭해서하고, 종료는 01_STOP.bat 더블클릭하면된다.

nginx.exe 단독으로 실행시키면 커맨드창이 떠있기때문에(창닫으면 종료되버린다), 백그라운드로 돌도록 이렇게 한다.

 

conf 내용은 다음과 같다.

worker_processes  auto;
events {
    worker_connections  1024;
}

# RTMP configuration
rtmp {
    server {
        listen 1935; # Listen on standard RTMP port
        chunk_size 3000;
		buflen 1s;

        application live {
            live on;
	    record off;


# ---중략


	}
	
        application hls {
            live on;
            # Turn on HLS
            hls on;
            hls_path html/hls;
            #hls_sync 100ms;
            hls_fragment 600ms;
            hls_playlist_length 5s;
            # exec ffplay -fflags nobuffer http://localhost/hls/$name.m3u8;

        }
    }
}

http {
    sendfile off;
    tcp_nopush on;
    directio 512;
    default_type application/octet-stream;

    server {
        listen 80;

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

 

    server {
        listen 1935; # Listen on standard RTMP port
        chunk_size 3000;
buflen 1s;

부분,

 

        application hls {
            live on;
            # Turn on HLS
            hls on;
            hls_path html/hls;
            #hls_sync 100ms;
            hls_fragment 600ms;
            hls_playlist_length 5s;

 

이부분을 기본값에서 바꿔서 줌으로 딜레이 시간을 rtmp 2초, hls 8초로 줄였다. 구글검색이 빛을 발하는군.

 

서버설정은 여기까지 하고 nginx를 시작해주면 된다.

 

2부에서는 obs 에서 스트리밍쪽 세팅을 보겠다.

 

반응형