멀티DRM 콘텐츠, CMAF으로 단일화할 수 있을까
온라인 비디오 서비스에 DRM이 적용되기 시작한 초창기에는, 각 서비스 업체마다 하나의 DRM 솔루션을 선택하여 적용하는 ‘싱글 DRM‘이 주로 사용되었습니다.
많은 서비스 사업자들은 단일 포맷(HLS, Smooth Streaming, HDS 등)으로 패키징된 콘텐츠에 단일 DRM을 적용하여, 해당 DRM을 지원하는 플러그인 또는 SDK를 이용해 여러 플랫폼에 서비스를 제공하였습니다.
이 때에도 넷플릭스와 같은 서비스는 최대한 많은 플랫폼을 지원하기 위해서 거의 모든 포맷과 여러 DRM을 적용해 여러 벌의 콘텐츠를 준비했습니다. 지금도 넷플릭스는 여러 비디오 포맷과 코덱, 해상도, 그리고 비트레이트의 조합으로 한 편의 콘텐츠를 수백 가지 버전으로 패키징한다고 합니다.
‘싱글 DRM‘은 브라우저 플러그인을 설치해야 하는 불편함과 제한적인 플랫폼 지원 등의 문제를 가지고 있었습니다. 이를 해결하기 위해 현재는 각 플랫폼마다 자체적으로 DRM을 지원하고 이 ‘멀티 DRM‘으로 여러 플랫폼을 지원하는 방식이 대중화되었습니다.
멀티 DRM을 통해 사용자의 불편을 해소하고 보다 많은 플랫폼을 지원할 수 있게 되었지만, 서비스 사업자들은 멀티 DRM을 지원하기 위해 하나의 콘텐츠를 두 가지 포맷(DASH와 HLS)으로 준비해야 하는 상황이 되었습니다.
본 포스팅에서는 ‘CMAF‘이라는 새로운 표준을 통한 ‘멀티 DRM 콘텐츠 단일화‘에 대해서 알아보겠습니다.
DRM 콘텐츠의 쌍두마차 – DASH와 HLS
멀티 DRM을 이용해 가능한 많은 플랫폼을 지원하기 위해서는 다음 두 가지 스트리밍 방식으로 콘텐츠를 패키징해야 합니다.
Http Live Streaming (HLS)
애플에 의해 만들어진 HLS 프로토콜은 전체(DRM, Non DRM 포함) 온라인 스트리밍의 약 70%를 차지할 정도로 가장 많이 사용되는 스트리밍 방식입니다.
특히 iOS와 macOS 등 애플 기기에서의 프리미엄 콘텐츠 보안에 필수적인 `FairPlay Streaming` DRM를 적용하기 위해서는 반드시 HLS로 콘텐츠를 패키징해야 합니다.
HLS는 다음과 같은 특징이 있습니다.
- m3u8 플레이리스트와 MPEG2-TS 컨테이너 형식의 미디어 청크로 구성 (fMP4 지원 추가됨)
- H.264(AVC) 또는 H.265(HEVC) 코덱 지원
- FairPlay Streaming 적용 가능 (Widevine DRM 지원 추가됨)
- DRM 적용 시 미디어 청크 암호화에 AES CBC 모드 사용
MPEG-DASH (Dynamic Adaptive Streaming over Http)
MPEG에서 표준화한 MPEG-DASH 포맷은 HLS 다음으로 많이 사용되는 스트리밍 유형입니다. DASH 콘텐츠는 `CENC(Common Encryption)` 표준을 지원하여 PlayReady와 Widevine DRM을 하나의 콘텐츠에 적용할 수 있습니다.
DASH는 다음과 같은 특징이 있습니다.
- mpd 매니페스트와 MP4 또는 MPEG2-TS 컨테이너 형식의 미디어 청크로 구성 (fMP4 지원 추가됨)
- 코덱에 대한 제한 없이 AVC, HEVC, VP9 등 다양한 코덱 사용 가능
- PlayReady와 Widevine DRM 적용 가능
- DRM 적용 시 미디어 청크 암호화에 AES CTR 모드 사용 (CBC 모드 지원 추가됨)
멀티 DRM 콘텐츠의 문제점
HLS와 DASH로 구성된 멀티 DRM 콘텐츠는 단일 콘텐츠에 비해서 아래와 같은 단점이 있습니다.
- 스토리지 비용 증가: 동일한 콘텐츠에 대해 두 벌의 콘텐츠를 저장해야 하므로 스토리지 비용이 증가합니다.
- CDN 캐싱 효율 저하: 클라이언트 플랫폼에 따라서 서로 다른 미디어 파일이 전달되므로 단일 콘텐츠에 비해 캐싱 효율이 떨어져 결과적으로 CDN 비용이 증가하게 됩니다.
- 라이브 인코딩 성능 저하: 라이브 콘텐츠의 경우, 실시간으로 두 가지 포맷의 패키징이 이루어져야 하므로 지연 시간을 줄이기 위해서는 더 높은 사양의 서버가 필요합니다.
이러한 멀티 DRM 콘텐츠의 문제들을 해결하기 위해, 관련 업체들은 동영상 코덱과 컨테이너, 암호화 방식, 그리고 스트리밍 프로토콜까지 여러 단계에서 단일 콘텐츠 표준을 만들기 위한 노력을 해왔습니다.
Common Media Application Format (CMAF)
2016년 2월, 애플과 마이크로소프트는 Moving Pictures Expert Group(MPEG)에 CMAF 규격을 제안합니다. CMAF 표준은 MPEG에 의해 2018년 1월에 정식으로 발표되었습니다.
CMAF은 다음과 같은 세 가지 목적을 위해 만들어졌습니다.
- 동일 콘텐츠를 여러 방식으로 패키징하고 저장하는 데 따르는 비용을 절약
- 콘텐츠 워크플로우를 단순화하고 CDN 효율성을 높임
- 청크 방식의 인코딩과 전송을 통해 비디오 지연 시간을 최소화
위 CMAF의 목적 중에서 비디오 지연 시간 최소화는 Ultra Low Latency라는 기술로 불리우며, 최근 라이브 스트리밍 업계에서 가장 큰 화두가 되고 있습니다.
CMAF을 이용한 Ultra Low Latency 스트리밍에 대해서는 별도의 포스팅에서 자세히 알아보겠습니다.
CMAF은 단일 규격으로 만들어진 미디어 청크를 HLS의 m3u8 플레이리스트 또는 DASH의 mpd 매니페스트에서 참조하는 방식으로 구성됩니다. 클라이언트에 따라 DASH 또는 HLS 형태로 재생이 되지만 미디어 파일은 한 벌로 지원할 수 있게 됩니다.
이를 위하여 애플, 마이크로소프트, 구글 등 관련 업체들은 아래와 같은 부분에서 협의를 해왔습니다.
컨테이너 포맷
CMAF 단일 콘텐츠에는 `fMP4(Fragmented MP4)` 컨테이너 포맷이 사용됩니다.
DASH 규격에는 지난 2015년부터 fMP4 컨테이너가 추가되었으며, 애플이 2016년에 iOS/tvOS 10 버전과 macOS 10.12 버전에서 HLS fMP4 형식의 HLS를 지원함에 따라 단일 컨테이너의 적용이 가능해졌습니다.
암호화 방식
기존에 멀티DRM 콘텐츠의 미디어 청크를 암호화하는 AES 암호화 방식은 아래와 같이 두가지로 나뉘어졌습니다.
- DASH (Widevine, PlayReady): AES-128 CTR 모드
- HLS (FairPlay Streaming): SAMPLE-AES CBC 모드
CMAF 규격은 두 가지 암호화 모드를 모두 지원하지만, 단일 콘텐츠 포맷을 위해서는 둘 중 하나가 기본이 되어야 합니다.?이를 위해 각 플랫폼 및 DRM 제공 업체들은 아래와 같이 CMAF 지원을 위한 업데이트를 진행해왔습니다.
- 구글: 안드로이드 N(7.1) 버전과 크롬 브라우저 68버전부터 CBC 모드 지원
- 마이크로소프트: XBox One 기기에서 AES-128 CBC 모드 지원 (PlayReady 4.0)
CMAF 기반 DRM 단일 콘텐츠의 현주소
위에서 알아본 것과 같이 관련 업계의 노력으로 CMAF 단일 콘텐츠는 현실화를 눈 앞에 두고 있습니다. CMAF 멀티 DRM 콘텐츠를 서비스하기 위해서는 아래와 같은 조건들을 만족시켜야합니다.
- DRM 라이선스 서버: PlayReady 4.0 버전 지원 필요
- DRM 콘텐츠 패키져: AES-128 CBC 암호화된 fMP4 미디어 청크와 두 개의 플레이리스트(mpd, m3u8)를 생성하는 기능 필요
- DRM 클라이언트: DASH 또는 HLS 재생과 AES-128 CBC 모드 복호화 기능, 그리고 코덱(주로 H.264) 지원 필요
위 조건 중에서 라이선스 서버와 패키져는 DRM 솔루션 업체의 업데이트로 해결이 가능하지만, 클라이언트 기기의 CMAF 지원에는 아직 많은 한계가 있습니다.
우선 안드로이드는 7.1 버전 이후의 기기들만 지원되는데, 아직도 시장에는 7.0 이전 기기들이 상당 수 존재합니다.
그리고 윈도우즈 PC의 경우 OS에서 아직 CBC 모드를 지원하지 않아서 CBC로 암호화된 PlayReady DASH 콘텐츠를 재생할 수 없으며, 대신 크롬 브라우저를 이용해 소프트웨어 기반의 Widevine DRM을 적용할 수 밖에 없습니다.
CMAF 지원 플랫폼에 대한 자세한 사항은 PallyCon Docs 사이트의 해당 페이지를 참고하시기 바랍니다.
또한 아직 CMAF이 지원되지 않는 HTML5 플레이어가 있기 때문에, 웹 브라우저를 지원하는 서비스의 경우에는 사용하는 HTML5 플레이어의 CMAF 지원 여부도 확인해야 합니다.
PallyCon의 CMAF 지원과 권장 사항
PallyCon에서는 CMAF 지원을 위해 `CLI 패키져` 3.3.0 버전부터 CMAF 단일 콘텐츠 패키징을 지원합니다.
패키징 시 `–cmaf` 옵션을 통해 AES-128 CBC 모드로 암호화된 단일 미디어 청크들과 DASH(mpd), HLS(m3u8) 플레이리스트를 생성할 수 있습니다. (CLI 패키져 가이드 참고)
또한 안드로이드와 애플 기기 용 PallyCon 모바일 SDK 제품은 CMAF으로 패키징된 단일 콘텐츠의 재생을 지원합니다. (지원 가능 기기인 경우)
모바일 대상 서비스에 대한 권장 사항
iOS의 경우에는 2019년 현재 90%가 넘는 기기들(iOS 10 이상)이 CMAF을 지원합니다.(참고) 하지만 지난 2018년 10월 기준으로 아직 절반 이상의 안드로이드 기기들(7.0 이전)이 CMAF을 지원하지 못하고 있습니다.(참고) 따라서 모바일을 대상으로 하는 서비스에는 아직 CMAF 멀티DRM 콘텐츠 적용을 권장하지 않습니다.
PC (브라우저) 대상 서비스에 대한 권장 사항
PC 브라우저만을 대상으로 하는 서비스의 경우에는 크롬과 사파리 브라우저를 통해 대부분의 윈도우즈와 맥OS 기기에 CMAF 콘텐츠를 서비스할 수 있습니다. 하지만 이 경우에도 윈도우즈(크롬)에 적용되는 Widevine DRM이 소프트웨어 기반이기 때문에 헐리우드 스튜디오 영화와 같은 프리미엄 콘텐츠에는 적합하지 않으며, 엣지 또는 IE11과 같은 윈도우즈 기본 브라우저를 지원하지 못하는 단점이 있습니다.?이 문제는 향후 마이크로소프트에서 윈도우즈 OS에 CBC 모드 지원을 추가하면 해결될 수 있습니다.
UHD 콘텐츠에 대한 CMAF 적용
HD/FHD 콘텐츠에 주로 사용되는 H.264(AVC) 코덱은 대부분의 기기에서 지원되기 때문에 CMAF 콘텐츠도 AVC 코덱이 기본으로 사용됩니다.
하지만 4K/UHD 콘텐츠에는 각 플랫폼에 따라 HEVC 또는 VP9 코덱이 사용됩니다.
- HEVC 지원: 애플 기기(iOS/tvOS 11.0, macOS 10.13 이후), 안드로이드 5.0 이후 기기, 윈도우즈 10 PC(엣지 브라우저 또는 UWP 앱), 각종 OTT 기기 (게임 콘솔, 스마트TV 등)
- VP9 지원: 안드로이드 4.4(KitKat) 이후 기기, 엣지/크롬/파이어폭스 브라우저, 각종 OTT 기기
안드로이드의 경우는 각 기기의 사양에 따라 HEVC 또는 VP9 코덱이 지원되지 않을 수도 있습니다.
VP9 코덱으로는 애플 기기를 지원할 수 없고 HEVC는 크롬과 파이어폭스 등의 브라우저에서 지원되지 않으므로, 하드웨어 레벨의 보안이 필요한 UHD 콘텐츠에는 HEVC 코덱을 이용한 CMAF 패키징을 권장합니다.
결론
DASH와 HLS 등 여러 스트리밍 방식이 함께 사용됨으로 인해서 온라인 비디오 서비스 업체들은 복잡한 패키징 과정과 스토리지/CDN 비용 증가 등의 어려움을 겪고 있습니다.
이러한 문제를 해결하기 위해 만들어진 `CMAF` 표준은 단일 콘텐츠를 이용한 효율적인 서비스와 Ultra Low Latency를 지원하는 라이브 스트리밍이 가능하게 합니다.
하지만 멀티 DRM 적용이 필요한 서비스의 경우에는 클라이언트 기기들의 CMAF 미지원 이슈로 인해 대부분의 멀티 플랫폼 서비스에서 CMAF 도입이 어려운 상황입니다.
현재로서는 DRM 콘텐츠에 CMAF 적용을 권장할 수 없지만, 향후에 지원 클라이언트의 비중이 높아지면 대부분의 스트리밍 콘텐츠는 CMAF으로 단일화될 것입니다.
`효율적인 워크플로우`와 `라이브 지연 최소화`라는 장점으로 온라인 스트리밍의 혁신을 이끌고 있는 `CMAF` 표준에 지속적으로 관심을 가져 주시기 바랍니다.