Streaming (Egress) Settings

Streaming Settings 페이지에서 OvenMediaEngine이 제공하는 다양한 Egress Portocol을 관리할 수 있습니다.

WebRTC/WHIP Streaming 설정하기 | 0.9.0.0+/0.15.1.0+

OvenMediaEngine은 WebRTC를 사용하여 1초 미만의 초저지연 스트리밍을 제공합니다.

WebRTC Streaming Settings

WebRTC Streaming Settings 페이지에서는 각 Application에 사용할 WebRTC/WHIP Protocol 정보와 활성화 상태를 확인하고 수정할 수 있습니다.

Signalling 설정하기

WebRTC에서 SDP를 교환하기 위해 Signalling이 필요하기 때문에, OvenMediaEngine은 WebSocket 기반 Signalling Server가 내장되어 있으며 자체 정의된 Signalling Protocol을 제공합니다. 해당 Settings 페이지에서 사용자는 Signalling에 사용할 Port를 설정할 수 있습니다.

  • Port: Server가 HTTP 요청을 수신하기 위해 사용할 Port를 설정하는 옵션입니다.

  • TLS Port: Web Browser와 Server 간에 TLS (Transport Layer Security) Protocol을 사용하여 Data를 암호화합니다. 해당 옵션에 설정된 Port를 통해 암호화된 Data가 전송됩니다.

  • Worker Count: Stream 전송 및 수신에 사용되는 스레드 수를 설정할 수 있는 옵션입니다.

ICE Candidates 설정하기

Web Browser나 Player에서 WebRTC를 Ingest 할 때, Signalling 단계에서 Ice Candidate를 서로 교환하기때문에, OvenMediaEngine은 WebRTC 연결을 위한 ICE를 제공합니다.

  • IceCandidate Ports: IceCandidate에 설정된 Candidate 정보를 WebRTC Peer에게 전달하고 WebRTC Peer는 해당 Candidate와의 통신을 요청하기 위해 사용하는 IP:Port를 설정하는 기능입니다.

  • TCP Relay Port: WebRTC는 기본적으로 UDP에서 작동하는데, OvenMediaEngine은 WebRTC가 TCP에서 동작할 수 있도록 WebRTC/TCP용 TURN Server가 내장되어 있습니다. Player의 TURN Client가 TURN Server에 연결하는 TCP Session을 그대로 사용하여 Stream을 수신하거나 전송할 수 있으며 이때 통신을 위해 사용하는 IP:Port를 설정하는 기능입니다.

  • TCP Force: WebRTC를 TCP로 전송할 때 ws[s]://<host>[:port]/<app name>/<stream name>?direction=send&transport=tcp와 같은 URL 패턴을 사용하는데, 이때 TCP Force 옵션을 True로 설정하면 URL 패턴에서 transport=tcp 쿼리 문자열을 생략해도 TCP로 동작할 수 있게하는 옵션입니다.

  • Worker Count: Stream 전송 및 수신에 사용되는 스레드 수를 설정할 수 있는 옵션입니다.

WebRTC Publisher 활성화 여부 확인하기

  • Timeout: ICE (STUN 요청/응답) 요청 또는 응답을 기다리는 시간으로 단위는 밀리 초이며, 설정된 시간 동안 요청이나 응답이 없으면 세션이 종료됩니다. 30000으로 기본 설정되어 있습니다.

  • Retransmission: WebRTC는 UDP를 사용하여 Media Date를 전송합니다. UDP에서 데이터를 전송할 때 빠른 속도와 높은 효율성을 보장하기 위해 Handshake 절차를 생략하고, Over Packet 및 Damaged Packet을 버리도록 설계되어 있습니다. Retransmission 옵션을 활성화하여 WebRTC 내 RTCP (Real-time Transport Control Protocol)를 활용하여 Packet 손실을 감지하고 손실 등으로 인해 버려진 Packet을 재전송 할 수 있습니다.

    • Retransmission은 필요한 패킷만을 재전송하므로 전체적인 통신 지연을 줄여 네트워크가 불안정한 환경에서 효과적인 통신을 가능하게하지만, Packet 재전송은 추가적인 네트워크 트래픽을 발생시키므로 네트워크 상태와 트래픽 부하를 고려하여 적절히 관리하는 것이 필요합니다.

  • UDP FEC: 위 Retransmission에서 설명한 것과 같이 UDP를 사용하여 Data를 전송할 때 손실이 발생할 수 있는데, UDP FEC 옵션을 활성화하여 Data를 전송하기 전에 오류 수정 코드를 Data에 추가해 전송하는 Forward Error Correction (FEC) 기능을 사용할 수 있습니다. FEC를 통해 수신자 측에서 일부 Data가 손실 및 손상되었더라도 원본 Data로 복구할 수 있습니다.

    • FEC는오류 수정 코드를 추가하기 때문에 전송해야 할 데이터량이 소폭 증가하지만 Packet 재전송 방식이 아니기 때문에 네트워크 대역폭을 보다 효율적으로 사용할 수 있고, 지연 시간 없이 오류를 바로 수정할 수 있습니다.

  • Jitter Buffer: Audio와 Video가 각기 다른 속도와 조건으로 전송될 때, Jitter Buffer를 활용하여 Stream Sync를 맞추는 옵션입니다. 예를 들어, Video Packet이 Audio Packet보다 늦게 도착하면 Audio Packet을 잠시 지연시켜 A/V Stream이 동시에 재생되도록 조정할 수 있습니다.

  • Create Default Playlist: 사용자는 각 재생 프로토콜 (LL-HLS, Legacy HLS, WebRTC)이 기본적으로 생성하는 Playlist (llhls, playlist, webrtc)의 생성 여부를 제어할 수 있습니다. 자세한 가이드는 Delay Buffer를 참고하십시오.

Low-Latency HLS (LLHLS) 설정하기 | 0.14.0.0+

Apple은 확장성을 유지하면서 약 2~6초 정도의 딜레이로 스트리밍을 가능하게 하는 Low-Latency HLS (LLHLS)를 발표했고, OvenMediaEngine은 0.14.0 이상 버전부터 LLHLS를 사용하여 저지연 스트리밍을 제공합니다.

LLHLS Streaming Settings

LLHLS Streaming Settings 페이지에서는 각 Application에 사용할 LLHLS Protocol 정보와 활성화 상태를 확인하고 수정할 수 있습니다.

  • Port: Server가 HTTP 요청을 수신하기 위해 사용할 Port를 설정하는 옵션입니다.

  • TLS Port: Web Browser와 Server 간에 TLS (Transport Layer Security) Protocol을 사용하여 Data를 암호화합니다. 해당 옵션에 설정된 Port를 통해 암호화된 Data가 전송됩니다.

  • Worker Count: Stream 전송 및 수신에 사용되는 스레드 수를 설정할 수 있는 옵션입니다.

LLHLS Publisher 옵션 확인하기:

  • Chunk Duration: Partial Segment 길이를 소수 단위의 초 (Fractional Seconds)로 설정합니다. Chunk Duration 수치는 Low-Latency HLS Player에 영향을 주기 때문에 OME Eneterprise 팀은 0.2초를 권장합니다.

  • Segment Duration: Segment 길이를 초 단위로 설정합니다. Segment Duration 수치가 작을 수록 Stream이 더 빨리 시작되지만 너무 짧으면 Legacy HLS Player가 불안정해질 수 있기 때문에 Apple은 6초를 권장합니다.

  • Segment Count: Playlist에 나열되는 Segment의 개수를 설정합니다. Segment Count 수치는 LLHLS Player에 영향을 미치지 않으므로 Apple이 권장하는 10를 사용하지만, Legacy HLS Player에서 사용할 때는 5를 추천합니다.

    • 테스트가 아니라면 Segment Count 수치를 3미만으로 설정하지 마십시오.

  • Part HoldBack: 미리 보낼 Segment 길이를 소수 단위의 초 (Fractional Seconds)로 설정합니다.

  • Cross Domain: <CorssDomain>을 통해 Player가 동작하는 도메인을 제어합니다. 자세한 정보는 여기 (LLHLS Cross Domain)를 눌러 살펴보십시오.

  • Cache Control: HTTP Response에 Cache-Control Header를 추가하여 Edge Server 또는 CDN Cache Server에서 콘텐츠를 Cache에 보관하는 시간을 지정 할 수 있습니다. 자세한 내용은 Delay Buffer 가이드를 참고하십시오.

  • Create Default Playlist: 사용자는 각 재생 프로토콜 (LL-HLS, Legacy HLS, WebRTC)이 기본적으로 생성하는 Playlist (llhls, playlist, webrtc)의 생성 여부를 제어할 수 있습니다. 자세한 가이드는 Delay Buffer를 참고하십시오.

  • Default Query String: 사용자는 Low-atency HLS (또는 Legacy HLS)의 기본 동작 방식을 <DefaultQueryString>을 통해 제어 할 수 있습니다. 자세한 내용은 Delay Buffer 가이드를 참고하십시오.

  • Origin Mode: 해당 Stream을 Origin으로 지정합니다.

  • Propagate Query String: 사용자가 <PropagateQueryString> 을 활성화하면, 최초 Master Playlist 요청에 포함된 Query String이 하위 모든 요청 (Media Playlist, Segment, Partial Segment)에 자동으로 포함됩니다. 자세한 내용은 Delay Buffer 가이드를 참고하십시오.

  • ServerTime Based Segment Numbering: Origin 이중화 설정을 통해 Edge Server 또는 CDN Cache Server는 Primary Origin Server에 장애가 발생하면 Primary Origin Server 대신 Secondary Origin Server를 연결하여 동일한 콘텐츠를 다운로드 받을 수 있습니다. 자세한 내용은 Delay Buffer 가이드를 참고하십시오.

LLHLS DVR 활성화 여부 확인하기 | 0.14.18.0+

사용자는 Server.xml에서 LLHLS Publisher 내 DVR 옵션을 활성화하여 원하는 만큼 긴 Playlist를 만들 수 있습니다. 해당 옵션을 통해 Player가 Live 중에 Stream을 되감아 재생 (Live Rewind) 할 수 있습니다.

LLHLS Streaming Settings 내 DVR, DUMP, DRM

LLHLS Streaming Settings 페이지 내 DVR 항목을 통해 해당 옵션 정보와 활성화 상태를 확인할 수 있습니다.

  • Storage Path: 혹여나 너무 긴 Playlist가 생성되어 메모리 과사용 및 과점유를 방지하기 위해Segment를 저장할 경로를 설정합니다.

  • Max Duration: Max Duration에 설정된 시간만큼 Playlist를 저장하며, 단위는 초입니다.

LLHLS DUMP 활성화 여부 확인하기 | 0.14.11.0+

LLHLS Dump는 해당 Stream이 LLHLS로 재생될 때 .m3u8과 모든 Track Segment를 Dump하여 Live 중일 때에도 Dump된 지점까지 파일을 VoD에 즉시 제공할 수 있는 기능으로 사용자는 Server.xml에서LLHLS Publisher 내 Dump 옵션을 활성화하여 해당 기능을 사용할 수 있습니다.

LLHLS Streaming Settings 내 DVR, DUMP, DRM

LLHLS Streaming Settings 페이지 내 DUMP 항목을 통해 해당 옵션 정보와 활성화 상태를 확인할 수 있습니다.

  • Enable: LLHLS Dump 기능의 사용 여부를 설정할 수 있습니다.

  • Target Stream Name: Dump를 진행하고 하는 Stream 명을 기입합니다. 현재 송출중인 Stream 명과 일치하면 Dump를 시작할 수 있습니다. *?를 사용하여 Stream 명을 필터링할 수 있습니다.

  • Playlists: Target Stream에서 함께 Dump할 Master Playlist를 지정합니다. 해당 Playlist가 Dump할 Stream에 속해있어야 하며, 여러 개의 Playlist를 기입할 수 있습니다.

  • Output Path: Dump 된 File을 저장할 경로와 File 명을 지정합니다. 사용자는 저장 경로로 지정된 폴더에 대한 쓰기 권한이 있어야 합니다.

LLHLS DRM 활성화 여부 확인하기 | 0.16.0.0+

Digital Rights Management (DRM)은 디지털 콘텐츠의 무단 사용, 복제, 배포를 방지하기 위해 사용되는 기술로 OvenMediaEngine 0.16.0 이상 버전부터 간단한 설정을 통해 LLHLS Stream에 DRM Vendor (Widevine,Fairplay)를 적용할 수 있습니다.

LLHLS Streaming Settings 내 DRM

LLHLS Streaming Settings 페이지 내 DRM 항목을 통해 해당 옵션 정보와 활성화 상태를 확인할 수 있습니다. 또, OvenMediaEngine Enterprise는 DRM Vendor 통합 뿐만 아니라 PallyCon DRM 같은 상업 DRM Provider 통합을 지원합니다.

Legacy HLS (HLSv3 - TS Container) 설정하기 | 0.16.6.0+

MPEG-2 TS 컨테이너 기반 HLS는 이전 기기 지원을 포함하여 여전히 폭 넓은 호환성을 제공하기 때문에 OvneMediaEngine Enterprise 16.6.0 버전 (2024년 7월 5일 업데이트)부터 MPEG-2 TS 컨테이너 기반 HLS 버전 3+를 지원하기로 결정했습니다.

Legacy HLS Streaming Settings

Legacy HLS Streaming Settings 페이지에서는 각 Application에 사용할 HLS Protocol 정보와 활성화 상태를 확인하고 수정할 수 있습니다.

  • Port: Server가 HTTP 요청을 수신하기 위해 사용할 Port를 설정하는 옵션입니다.

  • TLS Port: Web Browser와 Server 간에 TLS (Transport Layer Security) Protocol을 사용하여 Data를 암호화합니다. 해당 옵션에 설정된 Port를 통해 암호화된 Data가 전송됩니다.

  • Worker Count: Stream 전송 및 수신에 사용되는 스레드 수를 설정할 수 있는 옵션입니다.

Legacy HLS Publisher 옵션 확인하기:

  • Segment Duration: Segment 길이를 초 단위로 설정합니다. Segment Duration 수치가 작을 수록 Stream이 더 빨리 시작되지만 너무 짧으면 Legacy HLS Player가 불안정해질 수 있기 때문에 Apple은 6초를 권장합니다.

  • Segment Count: Playlist에 나열되는 Segment의 개수를 설정합니다. Legacy HLS Player에서 Segment Count 수치는 5를 권장합니다.

    • 테스트가 아니라면 Segment Count 수치를 3미만으로 설정하지 마십시오.

  • Cross Domain: <CorssDomain>을 통해 Player가 동작하는 도메인을 제어합니다. 자세한 내용은 여기 (HLS Cross Domain)를 눌러 참고하십시오.

  • Create Default Playlist: 사용자는 각 재생 프로토콜 (LL-HLS, Legacy HLS, WebRTC)이 기본적으로 생성하는 Playlist (llhls, playlist, webrtc)의 생성 여부를 제어할 수 있습니다. 자세한 가이드는 Delay Buffer를 참고하십시오.

  • Default Query String: 사용자는 Low-atency HLS (또는 Legacy HLS)의 기본 동작 방식을 <DefaultQueryString>을 통해 제어 할 수 있습니다. 자세한 내용은 Delay Buffer 가이드를 참고하십시오.

  • Origin Mode: 해당 Stream을 Origin으로 지정합니다.

  • Propagate Query String: 사용자가 <PropagateQueryString> 을 활성화하면, 최초 Master Playlist 요청에 포함된 Query String이 하위 모든 요청 (Media Playlist, Segment, Partial Segment)에 자동으로 포함됩니다. 자세한 내용은 Delay Buffer 가이드를 참고하십시오.

  • ServerTime Based Segment Numbering: Origin 이중화 설정을 통해 Edge Server 또는 CDN Cache Server는 Primary Origin Server에 장애가 발생하면 Primary Origin Server 대신 Secondary Origin Server를 연결하여 동일한 콘텐츠를 다운로드 받을 수 있습니다. 자세한 내용은 Delay Buffer 가이드를 참고하십시오.

HLS DVR 활성화 여부 확인하기 | 0.16.0.0+

Legacy HLS Streaming Settings 페이지 내 DVR 항목을 통해 해당 옵션 정보와 활성화 상태를 확인할 수 있습니다.

  • Storage Path: 혹여나 너무 긴 Playlist가 생성되어 메모리 과사용 및 과점유를 방지하기 위해Segment를 저장할 경로를 설정합니다.

  • Max Duration: Max Duration에 설정된 시간만큼 Playlist를 저장하며, 단위는 초입니다.