Streaming (Egress Protocols)
Last updated
Last updated
Streaming Settings 페이지에서 OvenMediaEngine이 제공하는 다양한 Egress Portocol을 관리할 수 있습니다.
OvenMediaEngine은 WebRTC를 사용하여 1초 미만의 초저지연 스트리밍을 제공합니다.
WebRTC Streaming Settings 페이지에서는 각 Application
에 사용할 WebRTC/WHIP Protocol 정보와 활성화 상태를 확인하고 수정할 수 있습니다.
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 전송 및 수신에 사용되는 스레드 수를 설정할 수 있는 옵션입니다.
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 전송 및 수신에 사용되는 스레드 수를 설정할 수 있는 옵션입니다.
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 재전송은 추가적인 네트워크 트래픽을 발생시키므로 네트워크 상태와 트래픽 부하를 고려하여 적절히 관리하는 것이 필요합니다.
Retransmission
옵션은 WebRTC/UDP에서는 유용하지만, WebRTC/TCP에서는 효과적이지 않습니다.
UDP FEC
: 위 Retransmission
에서 설명한 것과 같이 UDP를 사용하여 Data를 전송할 때 손실이 발생할 수 있는데, UDP FEC
옵션을 활성화하여 Data를 전송하기 전에 오류 수정 코드를 Data에 추가해 전송하는 Forward Error Correction (FEC) 기능을 사용할 수 있습니다. FEC를 통해 수신자 측에서 일부 Data가 손실 및 손상되었더라도 원본 Data로 복구할 수 있습니다.
FEC
는오류 수정 코드를 추가하기 때문에 전송해야 할 데이터량이 소폭 증가하지만 Packet 재전송 방식이 아니기 때문에 네트워크 대역폭을 보다 효율적으로 사용할 수 있고, 지연 시간 없이 오류를 바로 수정할 수 있습니다.
UDP FEC
옵션은 WebRTC/UDP에서는 유용하지만, WebRTC/TCP에서는 효과적이지 않습니다.
Jitter Buffer
: Audio와 Video가 각기 다른 속도와 조건으로 전송될 때, Jitter Buffer
를 활용하여 Stream Sync를 맞추는 옵션입니다. 예를 들어, Video Packet이 Audio Packet보다 늦게 도착하면 Audio Packet을 잠시 지연시켜 A/V Stream이 동시에 재생되도록 조정할 수 있습니다.
WebRTC Publisher 가이드: https://airensoft.gitbook.io/ovenmediaengine/streaming/webrtc-publishing#publisher
Create Default Playlist
: 사용자는 각 재생 프로토콜 (LL-HLS, Legacy HLS, WebRTC)이 기본적으로 생성하는 Playlist (llhls, playlist, webrtc)의 생성 여부를 제어할 수 있습니다. 자세한 가이드는 기본 Playlist 생성 제어하기를 참고하십시오.
Apple은 확장성을 유지하면서 약 2~6초 정도의 딜레이로 스트리밍을 가능하게 하는 Low-Latency HLS (LLHLS)를 발표했고, OvenMediaEngine은 0.14.0 이상 버전부터 LLHLS를 사용하여 저지연 스트리밍을 제공합니다.
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 전송 및 수신에 사용되는 스레드 수를 설정할 수 있는 옵션입니다.
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에 보관하는 시간을 지정 할 수 있습니다. 자세한 내용은 Origin Cache 제어하기 가이드를 참고하십시오.
Create Default Playlist
: 사용자는 각 재생 프로토콜 (LL-HLS, Legacy HLS, WebRTC)이 기본적으로 생성하는 Playlist (llhls, playlist, webrtc)의 생성 여부를 제어할 수 있습니다. 자세한 가이드는 기본 Playlist 생성 제어하기를 참고하십시오.
Default Query String
: 사용자는 Low-atency HLS (또는 Legacy HLS)의 기본 동작 방식을 <DefaultQueryString>
을 통해 제어 할 수 있습니다. 자세한 내용은 Default Query String 사용하기 가이드를 참고하십시오.
Origin Mode
: 해당 Stream을 Origin으로 지정합니다.
Propagate Query String
: 사용자가 <PropagateQueryString>
을 활성화하면, 최초 Master Playlist 요청에 포함된 Query String이 하위 모든 요청 (Media Playlist, Segment, Partial Segment)에 자동으로 포함됩니다. 자세한 내용은 Query String 승계하기 가이드를 참고하십시오.
ServerTime Based Segment Numbering:
Origin 이중화 설정을 통해 Edge Server 또는 CDN Cache Server는 Primary Origin Server에 장애가 발생하면 Primary Origin Server 대신 Secondary Origin Server를 연결하여 동일한 콘텐츠를 다운로드 받을 수 있습니다. 자세한 내용은 Origin 이중화 설정하기 가이드를 참고하십시오.
사용자는 Server.xml
에서 LLHLS Publisher 내 DVR 옵션을 활성화하여 원하는 만큼 긴 Playlist를 만들 수 있습니다. 해당 옵션을 통해 Player가 Live 중에 Stream을 되감아 재생 (Live Rewind) 할 수 있습니다.
LLHLS Streaming Settings 페이지 내 DVR 항목을 통해 해당 옵션 정보와 활성화 상태를 확인할 수 있습니다.
Storage Path
: 혹여나 너무 긴 Playlist가 생성되어 메모리 과사용 및 과점유를 방지하기 위해Segment를 저장할 경로를 설정합니다.
Max Duration
: Max Duration
에 설정된 시간만큼 Playlist를 저장하며, 단위는 초입니다.
LLHLS Dump는 해당 Stream이 LLHLS로 재생될 때 .m3u8
과 모든 Track Segment를 Dump하여 Live 중일 때에도 Dump된 지점까지 파일을 VoD에 즉시 제공할 수 있는 기능으로 사용자는 Server.xml
에서LLHLS Publisher 내 Dump 옵션을 활성화하여 해당 기능을 사용할 수 있습니다.
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 명을 지정합니다. 사용자는 저장 경로로 지정된 폴더에 대한 쓰기 권한이 있어야 합니다.
Digital Rights Management (DRM)은 디지털 콘텐츠의 무단 사용, 복제, 배포를 방지하기 위해 사용되는 기술로 OvenMediaEngine 0.16.0 이상 버전부터 간단한 설정을 통해 LLHLS Stream에 DRM Vendor (Widevine
,Fairplay
)를 적용할 수 있습니다.
현재 DRM은 H.264 및 AAC 코덱에서만 지원됩니다. H.265 지원은 곧 추가될 예정입니다.
LLHLS Streaming Settings 페이지 내 DRM 항목을 통해 해당 옵션 정보와 활성화 상태를 확인할 수 있습니다. 또, OvenMediaEngine Enterprise는 DRM Vendor 통합 뿐만 아니라 PallyCon DRM 같은 상업 DRM Provider 통합을 지원합니다.
MPEG-2 TS 컨테이너 기반 HLS는 이전 기기 지원을 포함하여 여전히 폭 넓은 호환성을 제공하기 때문에 OvneMediaEngine Enterprise 16.6.0 버전 (2024년 7월 5일 업데이트)부터 MPEG-2 TS 컨테이너 기반 HLS 버전 3+를 지원하기로 결정했습니다.
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 전송 및 수신에 사용되는 스레드 수를 설정할 수 있는 옵션입니다.
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)를 눌러 참고하십시오.
HLS Corss Domain 가이드: https://airensoft.gitbook.io/ovenmediaengine/streaming/hls#crossdomain
Create Default Playlist
: 사용자는 각 재생 프로토콜 (LL-HLS, Legacy HLS, WebRTC)이 기본적으로 생성하는 Playlist (llhls, playlist, webrtc)의 생성 여부를 제어할 수 있습니다. 자세한 가이드는 기본 Playlist 생성 제어하기를 참고하십시오.
Default Query String
: 사용자는 Low-atency HLS (또는 Legacy HLS)의 기본 동작 방식을 <DefaultQueryString>
을 통해 제어 할 수 있습니다. 자세한 내용은 Default Query String 사용하기 가이드를 참고하십시오.
Origin Mode
: 해당 Stream을 Origin으로 지정합니다.
Propagate Query String
: 사용자가 <PropagateQueryString>
을 활성화하면, 최초 Master Playlist 요청에 포함된 Query String이 하위 모든 요청 (Media Playlist, Segment, Partial Segment)에 자동으로 포함됩니다. 자세한 내용은 Query String 승계하기 가이드를 참고하십시오.
ServerTime Based Segment Numbering:
Origin 이중화 설정을 통해 Edge Server 또는 CDN Cache Server는 Primary Origin Server에 장애가 발생하면 Primary Origin Server 대신 Secondary Origin Server를 연결하여 동일한 콘텐츠를 다운로드 받을 수 있습니다. 자세한 내용은 Origin 이중화 설정하기 가이드를 참고하십시오.
Legacy HLS Streaming Settings 페이지 내 DVR 항목을 통해 해당 옵션 정보와 활성화 상태를 확인할 수 있습니다.
Storage Path
: 혹여나 너무 긴 Playlist가 생성되어 메모리 과사용 및 과점유를 방지하기 위해Segment를 저장할 경로를 설정합니다.
Max Duration
: Max Duration
에 설정된 시간만큼 Playlist를 저장하며, 단위는 초입니다.