비디오 스트리밍 서버 NGINX Plus로 구성하기

NGINX PlusBITMOVIN은 함께 작동하여 라이브 비디오 스트리밍 과 on-demand 미디어를 확장하고 모든 디바이스에서 사용자에게 제공하기 위한 강력한 솔루션을 제공합니다. BITMOVIN은 NGINX Plus의 유명한 성능 및 안정성과 결합하여 수십만 명의 동시 사용자에게 고품질 비디오를 스트리밍할 수 있는 직관적인 비디오 플레이어를 제공합니다.

(NGINX와 NGINX Plus는 모두 기능을 지원하지만 읽기 쉽게 하기 위해 전체적으로 NGINX Plus를 참조합니다.)

NGINX Plus 및 BITMOVIN으로 고품질 라이브 비디오 스트리밍 제공

NGINX Plus 및 BITMOVIN으로 고품질 라이브 비디오 스트리밍 제공

그래픽에 묘사된 솔루션에서 라이브 RTMP 비디오 스트림은 NGINX Plus로 푸시되어 Apple HLS(HTTP Live Streaming) 및 MPEG-DASH 스트림으로 변환되어 게시됩니다. Bitmovin Adaptive Streaming Player는 사용자가 선택한 디바이스에서 라이브 비디오 스트림을 재생하는 데 사용됩니다.

이 포스트에서는 라이브 비디오 스트리밍 을 위해 NGINX Plus 및 BITMOVIN을 설정하는 방법을 단계별로 설명합니다.

목차

1. Live HLS 및 MPEG-DASH 스트리밍을 위한 NGINX Plus 구성
2. CORS 활성화 및 crossdomain.xml 생성
3. RTMP를 NGINX Plus로 푸시하는 방법 선택
3-1. FFMPEG
3-2. Broadcaster 열기
4. BITMOVIN 적응형 스트리밍 플레이어 설정
5. 결론

1. Live HLS 및 MPEG-DASH 비디오 스트리밍 을 위한 NGINX Plus 구성

첫 번째 단계는 NGINX Plus를 스트리밍 미디어 서버로 구성하는 것입니다. 다음 구성 조각은 ffmpeg 유틸리티를 사용하여 라이브 비디오 스트림을 낮음, 중간 및 높음 비트레이트 변형으로 트랜스코딩합니다. HLS의 경우 변형 스트림이 원본 스트림과 함께 게시됩니다. MPEG‑DASH의 경우 원본 스트림만 게시됩니다.

rtmp {
    server {
        listen 1935;

        application app {
            live on;

            exec ffmpeg -i rtmp://localhost/src/$name
                  -c:a libfdk_aac -b:a 32k  -c:v libx264 -b:v 128K 
                  -f flv rtmp://localhost/hls/$name_low
                  -c:a libfdk_aac -b:a 64k  -c:v libx264 -b:v 256k 
                  -f flv rtmp://localhost/hls/$name_mid
                  -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 512K 
                  -f flv rtmp://localhost/hls/$name_hi
                  -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 512K
                  -f flv rtmp://localhost/dash/$name_dash;
        }

        application hls {
             live on;

             hls on;
             hls_path /tmp/hls;      
             hls_nested on;

             hls_variant _low BANDWIDTH=160000;
             hls_variant _mid BANDWIDTH=320000;
             hls_variant _hi  BANDWIDTH=640000;
        }

        application dash {
            live on;

            dash on;
            dash_path /tmp/dash;
            dash_nested on;
        }
    }
}

http {
    server {
        listen 80;

        location /hls {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
            add_header 'Access-Control-Allow-Origin' '*';
        }

        location /dash {
            root /tmp;
            add_header Cache-Control no-cache;
            add_header 'Access-Control-Allow-Origin' '*';
        }
    }
}

2. CORS 활성화 및 crossdomain.xml 생성

다음으로 HTML5를 통한 스트리밍을 지원하는 NGINX Plus 스트리밍 미디어 서버에서 CORS(Cross‑Origin Resource Sharing)를 활성화하고 Flash 기반 스트리밍을 활성화하기 위해 도메인 간 정책 파일(crossdomain.xml)을 추가합니다. 일부 구형 브라우저 및 디바이스에서는 여전히 MPEG-DASH 또는 HLS를 재생하기 위해 Flash가 필요합니다. 토론을 보려면 CORS 및 crossdomain.xml에 대한 블로그를 참조하십시오.

다음은 간단한 crossdomain.xml 파일의 내용입니다.

<?xml version="1.0"?>
<cross-domain-policy>        
<allow-access-from domain="*" to-ports="80,443" secure="false"/>         
<site-control permitted-cross-domain-policies="master-only" />    
</cross-domain-policy>

3. RTMP를 NGINX Plus로 푸시하는 방법 선택

NGINX Plus는 푸시된 RTMP 스트림을 변환합니다. RTMP 스트림을 NGINX Plus로 푸시하기 위한 몇 가지 옵션이 있습니다. FFmpegOpen Broadcaster와 같은 클라이언트 또는 Elemental, Envivio(현재 Ericsson의 MediaFirst 콘텐츠 처리 제품에 통합됨), Cisco 및 RTMP 푸시를 지원하는 기타 인코더와 같은 인코더를 사용할 수 있습니다.

3-1. FFMPEG

이 샘플 ffmpeg 명령은 RTMP 비디오 스트림을 NGINX Plus로 푸시합니다.

# ffmpeg -re -i input_file -c copy -f flv rtmp://nginx_server_url:1935/app

3-2. Broadcaster 열기

RTMP 스트림을 NGINX Plus로 푸시하도록 Open Broadcaster를 구성하려면 다음을 수행하십시오.

1. Broadcast 설정으로 이동합니다.

2. 모드 드롭다운 메뉴에서 라이브 스트림을 선택하고 스트리밍 서비스 메뉴에서 사용자 지정을 선택합니다.

3. FMS URL 필드에 NGINX Plus 서버의 RTMP 푸시 URL을 입력합니다. Play Path/Stream Key 필드는 NGINX Plus에서 생성된 재생 목록 또는 manifest 파일의 이름을 지정합니다(HLS용 .m3u8 파일 및 MPEG‑DASH용 .mpd 파일).

Open Broadcaster에서 라이브 비디오 스트리밍 을 위해 NGINX Plus에서 만든 재생 목록의 이름을 정의합니다.

4. 인코딩으로 이동합니다. 코덱 드롭다운 메뉴에서 인코더AAC에 대한 x264 라디오 버튼을 선택합니다.

Open Broadcaster에서 라이브 비디오 스트리밍 을 위한 인코딩 및 코덱 유형을 정의합니다.

5. 비디오로 이동합니다. FPS 필드에 bitcodin 인코딩 프로파일과 동일한 값을 설정하십시오. 그렇지 않으면 오디오와 비디오의 동기화에 문제가 있을 수 있습니다. 인코딩 프로필에 프레임 속도가 설정되지 않은 경우 BITMOVIN은 입력 스트림을 기반으로 프레임 속도를 자동으로 선택합니다.

Open Broadcaster에서 라이브 비디오 스트리밍을 위한 BITMOVIN 비트코딘 인코딩 프로필과 동일한 FPS(초당 프레임 수) 값을 설정합니다.

4. BITMOVIN 적응형 비디오 스트리밍 플레이어 설정

BITMOVIN Adaptive Streaming Player를 설정하려면 이 섹션의 단계를 수행하십시오.

1. 무료 회원가입.

BITMOVIN 포털에서 등록하세요. 작성 당시 무료 요금제에는 다음과 같은 모든 기능을 갖춘 BITMOVIN 플레이어에 대한 5000회의 무료 노출이 포함되어 있습니다.

회원가입 후 활성화 이메일을 확인하고 로그인합니다.

2. 플레이어 다운로드.

BITMOVIN 적응형 스트리밍 플레이어를 다운로드하세요. 필요한 모든 정보와 플레이어 자체는 BITMOVIN 포털의 플레이어 개요 탭에서 찾을 수 있습니다.

NGINX Plus로 라이브 비디오을 위한 BITMOVIN Adaptive Streaming Player 다운로드

3. 도메인을 지정합니다.

개요 페이지는 모든 관련 정보와 문서를 제공합니다(Private Player Key 아래). 플레이어와 함께 사용할 도메인을 지정하려면 스크린샷에 표시된 대로 새 도메인 추가 버튼을 클릭합니다.

NGINX Plus 라이브 비디오 미디어 서버와 함께 BITMOVIN Adaptive Streaming Player를 사용할 도메인 정의

4. 샘플 페이지를 준비합니다.

플레이어 설정을 보여주는 미리 구성된 샘플 페이지를 다운로드하십시오. 스크린샷에 표시된 대로 Embed 탭에서 Download Code 버튼을 클릭합니다.

라이브 비디오용 BITMOVIN Adaptive Streaming Player 샘플 페이지 다운로드

NGINX Plus 서버로 플레이어를 구성하려면 플레이어 구성 개체를 변경합니다(샘플 페이지의 102~104행). dash, hls, progressive 및 poster 필드의 값을 NGINX Plus 서버의 .mpd 및 .m3u8 파일에 맞게 바꿉니다. 필요하지 않은 필드는 제거할 수 있습니다.

5. 게시

NGINX Plus 서버에 샘플 페이지를 업로드합니다. 페이지를 열면 시작 지연이 적고 버퍼링이 없으며 최상의 품질로 비디오가 재생되는 것을 볼 수 있습니다.

5. 라이브 비디오 스트리밍 결론

모든 사용자에게 비디오 스트리밍 을 완벽하게 제공하기 위해 NGINX Plus 및 BITMOVIN을 설정하는 단계를 자세히 설명했습니다. 솔루션을 직접 사용해 보려면 NGINX Plus 무료 30일 평가판무료 BITMOVIN Adaptive Streaming Player에 등록하십시오.

사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.