Publisher Extension
OvenMediaEngine의 다양한 Publisher를 활용해 서비스를 운영하는 사용자에게 도움이 될 수 있는 Publisher Extension 기능들을 소개합니다.
#1. 모든 Publishers
Stream에 Delay 추가하기
Stream Delay 기능을 사용하면 모든 <Publishers>
에 Latency를 강제로 추가 할 수 있습니다. 이 기능은 라이브 서비스 운영 시 돌발 상황에 대처하는 데 도움이 될 수 있습니다.
다음과 같이 Server.xml
에서 <Publishers><DelayBufferTimeMs>
값을 설정하십시오:
#2. (LL)-HLS와 WebRTC
기본 Playlist 생성 제어하기
사용자는 각 재생 프로토콜 (LL-HLS, Legacy HLS, WebRTC)이 기본적으로 생성하는 Playlist (llhls, playlist, webrtc)의 생성 여부를 제어하고 싶은 경우, <CreateDefaultPlaylist>
옵션을 사용하여 시스템을 보다 용이하게 관리할 수 있습니다.
Server.xml
내 <Publishers><
LLHLS
><CreateDefaultPlaylist>
( 또는 <Publishers><
HLS
><CreateDefaultPlaylist>
, 또는 <Publishers><
WebRTC
><CreateDefaultPlaylist>
)에서 다음과 같이 설정하여 사용할 수 있습니다:
Element | Value | Description |
---|---|---|
CreateDefaultPlaylsit | true | false * Default: ture | 각 Publisher 내 |
#3. (LL)-HLS
Origin 이중화 설정하기
OvenMediaEngine의 Low-Latency HLS Origin Server (또는 HLS Origin Server)를 이중화로 구성하는 경우, Origin 이중화 설정을 통해 Primary Origin Server와 Secondary Origin Server의 Segment 파일명을 동일하게 만들 수 있습니다. 이를 통해, Edge Server 또는 CDN Cache Server는 Primary Origin Server에 장애가 발생하면 Primary Origin Server 대신 Secondary Origin Server를 연결하여 동일한 콘텐츠를 다운로드 받을 수 있습니다.
다음과 같이 Server.xml
에서 <Publishers><
LLHLS
><ServerTimeBasedSegmentNumbering>
( 또는 <Publishers><
HLS
><ServerTimeBasedSegmentNumbering>
)을 활성화 하십시오:
이 기능은 서버 시간을 기준으로 Segment 파일명을 생성하므로 Primary Origin Server와 Secondary Origin Server의 시간을 동기화 해야 합니다.
Default Query String 사용하기
사용자는 Low-Latency HLS (또는 Legacy HLS)의 기본 동작 방식을 <DefaultQueryString>
을 통해 제어 할 수 있습니다.
다음과 같이 Server.xml
의 <Publishers><
LLHLS
><DefaultQueryString>
(또는 <Publishers><
HLS
><DefaultQueryString>)
에서 설정 할 수 있습니다:
Playback URL에 이미 Query 문자열이 추가 되어 있는 경우 이 설정은 무시됩니다.
Key | Value | Description |
---|---|---|
_HLS_legacy | YES | NO * Default: NO |
|
_HLS_rewind | YES | NO * Default: YES |
|
Query String 승계하기
사용자가 <PropagateQueryString>
을 활성화하면, 최초 Master Playlist 요청에 포함된 Query String이 하위 모든 요청 (Media Playlist, Segment, Partial Segment)에 자동으로 포함됩니다. Query String에 Session Key, Authentication Token 등을 포함시켜 이 기능을 활용한다면, 모든 요청을 CDN에서 검사할 수 있기 때문에 콘텐츠 접근 제어가 용이합니다.
다음과 같이 Server.xml
의 <Publishers><
LLHLS
><PropagateQueryString>
(또는 <Publishers><
HLS
><PropagateQueryString>)
에서 설정 할 수 있습니다:
Query String에 민감한 정보를 직접 포함시키지 않도록 주의가 필요합니다.
#4. LL-HLS
Origin Cache 제어하기
HTTP Response에 Cache-Control
Header를 추가하여 Edge Server 또는 CDN Cache Server에서 콘텐츠를 Cache에 보관하는 시간을 지정 할 수 있습니다.
다음과 같이 Server.xml
의 <Publishers><LLHLS><CacheControl>
에서 설정 할 수 있습니다:
Element | Description |
---|---|
| Master Playlist의 max-age를 지정합니다. 이것은 Stream이 생성되어 있는 동안 변경되지 않습니다. |
| Media Playlist의 max-age를 지정합니다. 이것은 항상 최신 상태의 Media Playlist를 응답해야 하는 URL이며 LL-HLS의 Delivery Directives가 없습니다. 따라서 이것은 가능한 짧게 Cache하거나 또는 Cache하지 않아야 합니다. |
| Low-Latency HLS Delivery Directives가 포함 된 Media Playlist의 max-age를 지정합니다. 현재 지원되는 Delivery Directives는 |
| Segment File의 max-age를 지정합니다. Segment File의 URL은 Stream이 생성되어 있는 동안 유일하며, 같은 URL의 콘텐츠는 변경되지 않기 때문에 오랜 시간 Cache할 수 있습니다. |
| Partial Segment File의 max-age를 지정합니다. Partial Segment File의 URL은 Stream이 생성되어 있는 동안 유일하며, 같은 URL의 콘텐츠는 변경되지 않기 때문에 오랜 시간 Cache할 수 있습니다. |
<CacheControl>
Element의 의미
<CacheControl>
Element의 의미Element | Description |
---|---|
0 |
콘텐츠를 절대 캐시하지 말 것을 지시하여 매 요청마다 새로운 데이터를 Server에서 받아옵니다. |
양수 (0 초과) |
지정된 시간 동안 Cache가 유효하도록 지시합니다. |
-1 |
Origin에서 명시적인 Cache Header를 보내지 않도록 지시합니다. 이 값을 통해 Cache를 사용하지 않거나, CDN이나 Cache 서버의 자체 정책을 적용하거나, Client나 Browser의 기본 Cache 동작을 따를 수 있습니다. |
<CacheControl>
에 0 값 사용 시 서버 부하가 증가할 수 있고, -1 값 사용 시 예상치 못한 캐싱 동작이 발생할 수 있으므로 테스트가 필요합니다.
Last updated