Bitmovin

Bitmovin은 고객 중심의 제품 개발에 대한 자부심을 가지고 있습니다. 로드맵을 통해 사용자에게 보다 더 나은 기능을 제공 하며 세계 최초의 상용 HTML5 MPEG-DASH 플레이어를 도입하였습니다. 이후로 Bitmovin은 업계에서 가장 빠른 API 기반의 클라우드 비디오 인코딩 서비스 와 MPEG-DASH 및 HLS 용 HTML5 플레이어를 개발하여 모든 기기에서 재생 가능한 적응형 콘텐츠를 제공 함으로써 온라인 비디오 업계에서 선두주자로 빠르게 자리 매김 했습니다.

개요

 

PallyCon 멀티DRM 서비스는 ‘인크립티드 미디어 익스텐션'(Encrypted Media Extensions, 이하 EME)과 ‘MPEG 공통 암호화'(MPEG Common Encryption, 이하 CENC) 규격을 통해 다양한 HTML5 기반 웹 플레이어들과 쉽게 연동됩니다. HTML5 웹 플레이어를 이용하면 엣지, 크롬, 파이어폭스, 사파리 등 EME 표준을 지원하는 주요 웹 브라우저들에서 별도의 플러그인 없이도 DRM으로 보호된 동영상 또는 오디오 콘텐츠를 스트리밍 재생할 수 있습니다.

 

EME, CENC 등 멀티DRM 관련 HTML5 표준과 오디오 콘텐츠를 멀티DRM으로 보호하는 사례에 대한 자세한 내용은 아래 링크의 자료들을 참고하시기 바랍니다.

본 자습서에서는 HTML5 기반 플레이어 제품 중에서 국내외 여러 동영상 서비스에서 사용되는 Bitmovin 플레이어를 연동하는 과정을 단계별로 설명합니다. Bitmovin 플레이어는 PC/모바일 웹 브라우저 뿐만 아니라 iOS와 안드로이드를 지원하는 네이티브 앱용 플레이어 SDK를 제공하므로, 웹 브라우저와 모바일 앱, 그리고 스마트TV 등 HTML5 기반 OTT 플랫폼까지 동일한 연동 방식으로 지원 가능합니다.

About PallyCon

PallyCon 포렌식 워터마킹과 멀티DRM 서비스는 잉카엔트웍스에서 개발 및 제공하는 클라우드 기반 콘텐츠 보안 서비스입니다.  PallyCon 멀티DRM은 PlayReady, Widevine, FairPlay Streaming DRM의 라이선스 관리 서비스를 제공하며, 다양한 인코더/트랜스코더 솔루션과 플레이어 솔루션에 연동되어 쉽고 빠르게 온라인 비디오 콘텐츠를 멀티DRM으로 보호할 수 있습니다.

About Bitmovin

Bitmovin은 동영상 인코더, 플레이어, 분석 등의 동영상 관련 소프트웨어 솔루션을 제공하는 글로벌 솔루션 업체입니다. Bitmovin 플레이어는 웹 브라우저와 모바일, 스마트TV 등 다양한 플랫폼에서 HLS와 MPEG-DASH 형식의 스트리밍 재생을 지원합니다.

본 자습서는 아래와 같은 세 가지 단계로 구성되어 있습니다. 가장 간단하고 빠르게 따라할 수 있도록, PallyCon CLI 패키져와 라이선스 토큰 연동으로 DRM 콘텐츠를 플레이어에서 재생하는 방법을 설명합니다.

  • 1단계: PallyCon, Bitmovin 트라이얼 계정 가입
  • 2단계: PallyCon CLI 패키져를 이용한 DRM 콘텐츠 패키징
  • 3단계: Bitmovin 플레이어와 PallyCon 라이선스 토큰 연동을 통한 DRM 콘텐츠 재생

PallyCon CLI 패키져와 라이선스 토큰 연동에 대한 상세 설명은 다음 링크를 참고하시기 바랍니다.

1단계: PallyCon, Bitmovin 트라이얼 계정 가입

자습서 진행을 위해서는 PallyCon과 Bitmovin 사이트에 각각 트라이얼 계정이 있어야 합니다. 다음과 같은 과정을 통해 계정을 생성합니다.

1-1. PallyCon 멀티DRM 트라이얼 가입

PallyCon 콘솔 사이트 로그인 페이지에 접속해 ‘회원 가입’ 버튼을 클릭합니다. 아래와 같이 가입 양식을 입력하고 ‘회원 가입’ 버튼을 클릭합니다.

1-2. PallyCon 계정 이메일 인증 및 트라이얼 사이트 생성

가입 시 입력한 이메일로 가입 환영 메일이 발송됩니다. 해당 메일의 ‘인증하기’ 링크를 클릭해 이메일 인증을 수행합니다. 이메일 인증 후에는 트라이얼을 위한 사이트 정보가 자동으로 생성됩니다.

1-3. 트라이얼 사이트 정보 확인

PallyCon 콘솔 사이트에 로그인 하여 ‘사이트 설정’ 메뉴의 ‘연동 설정’ 화면으로 이동합니다. 아래와 같은 화면에 표시되는 ‘사이트ID’, ‘사이트 키’와 ‘액세스 키’ 값을 메모장과 같은 곳에 별도로 복사해 둡니다. 이 값들은 이후 단계에서 DRM 연동에 사용됩니다.

1-4. Bitmovin 사이트 트라이얼 가입

Bitmovin 사이트에 접속해 ‘Sign up’ 링크를 클릭합니다. 아래와 같은 가입 양식을 통해 트라이얼 계정을 생성합니다.

PallyCon과 마찬가지로 가입 환영 메일이 발송됩니다. 해당 메일의 ‘Activate your account’ 버튼을 클릭해 이메일 인증을 수행합니다.

1-5. 플레이어 라이선스 설정에 테스트용 도메인 추가

3단계의 재생 테스트에서 사용될 테스트 웹 서버의 도메인을 Bitmovin 플레이어의 라이선스 설정에 추가합니다.

  • 생성된 트라이얼 계정으로 Bitmovin 사이트에 로그인해 ‘Player > Licenses’ 화면으로 이동합니다.
  • 트라이얼용으로 생성된 라이선스키 링크를 클릭해 라이선스 상세 정보 화면으로 이동합니다.
  • 테스트용 웹 서버 도메인을 아래와 같이 입력하고 ‘Add’ 버튼을 클릭해 추가합니다.

추가된 도메인 정보가 적용되려면 몇 분 정도 걸릴 수 있습니다.

2단계: PallyCon CLI 패키져를 이용한 DRM 콘텐츠 패키징

플레이어에서 DRM 콘텐츠 재생을 테스트하기 위해서는 우선 원본 영상에 DRM을 적용하는 패키징 과정이 필요합니다. 다음과 같은 과정을 통해 DRM 콘텐츠 패키징을 수행합니다.

2-1. CLI 패키져 다운로드 및 설치

PallyCon 개발자 가이드 사이트의 패키져 / 샘플 다운로드 페이지에서 ‘PallyCon Packager 다운로드’ 버튼을 클릭해 CLI 패키저를 다운로드 합니다. 콘텐츠 패키징을 수행할 테스트 PC 또는 서버에 임의의 폴더를 생성하고, 다운받은 패키져 압축파일 내 ‘bin’ 폴더의 OS별 실행 파일을 복사합니다. (예: ~/pallycon-test/PallyConPackager )

PallyCon CLI 패키져는 64비트 기반의 윈도우즈와 리눅스(Ubuntu, CentOS) CLI(Command Line Interface) 환경을 지원합니다. 리눅스 환경의 경우, gcc와 g++ 라이브러리 6.0 버전 이상이 설치되어 있어야 합니다.

2-2. 원본 MP4 영상을 MPEG-DASH로 패키징

DRM 패키징과 재생 테스트에 사용할 MP4 (H264 AVC) 동영상 파일을 패키져 실행 파일이 저장된 폴더에 복사합니다. 아래 링크된 PallyCon 소개 영상을 다운로드 받아 사용하셔도 됩니다.

PallyCon 소개 영상 : https://pallycon.com/docs/files/pallycon-intro.mp4
PallyCon CLI 패키져는 멀티DRM용 DASH-CENC(Widevine, PlayReady), HLS-AES(FairPlay) 패키징과 NCG(Netsync Content Guard) DRM을 위한 NCG, NCG-HLS 패키징 기능을 지원합니다. 본 자습서에서는 간략한 테스트를 위해 DASH-CENC 패키징만 진행합니다.

아래와 같은 명령을 실행해 DASH 패키징을 수행합니다. 패키징 명령의 각종 입력값들에 대한 설명은 아래 표를 참고하시기 바랍니다.
./PallyConPackager --site_id --access_key --content_id --dash -i -o

파라미터입력 값규격예시
–site_id 1단계에서 PallyCon 콘솔 사이트의 ‘연동 설정’ 화면에 표시된 트라이얼 사이트 ID네자리 영대문자 ABCD
–access_keyPallyCon 콘솔 사이트의 ‘연동 설정’ 화면에 표시된 액세스 키32자리 문자열 H24FS8wdo3C7CWr
SjcIhPYWpYaFu6Lh3
–content_idDRM 패키징과 라이선스 발급 시 각 콘텐츠를 구분할 콘텐츠의 고유 아이디. 해당 아이디를 기준으로 DRM 암호화 키와 라이선스가 관리되며, 일반적으로 CMS (Content Management System) 에서 관리하는 콘텐츠 아이디가 입력되도록 연동 구현함. 최대 200 자리 영문/숫자 문자열 pallycon-intro
-i패키징할 원본 MP4 파일명. 패키져 실행 파일과 다른 경로에 있는 경우, 해당 경로를 포함한 파일명 입력파일 경로 규격 ~/pallycon-test/input/pallycon-intro.mp4
-o패키징된 결과물이 저장될 경로 폴더 경로 규격 ~/pallycon-test/output/pallycon-intro/

위 예시된 입력값에 따라 명령을 구성하면 아래와 같습니다. 예시로 표기된 사이트ID와 액세스 키는 실제로는 동작하지 않으며 1단계에서 가입한 계정에 해당되는 값으로 교체하셔야 합니다.
./PallyConPackager --site_id ABCD --access_key H24FS8wdo3C7CWrSjcIhPYWpYaFu6Lh3 --content_id pallycon-intro --dash -i ~/pallycon-test/input/pallycon-intro.mp4 -o ~/pallycon-test/output/pallycon-intro/

패키징이 성공적으로 완료되면 PallyCon 콘솔 사이트의 ‘DRM 패키징 이력’ 페이지에 해당 이력이 아래와 같이 표시됩니다.

2-3. 테스트용 웹 서버에 패키징된 DASH 콘텐츠 업로드

패키징이 완료되면 아웃풋 폴더 내 ‘dash’ 폴더에 mpd 매니페스트 파일과 오디오/비디오 트랙으로 구성된 MPEG-DASH 형태의 결과물이 생성됩니다. 3단계의 DRM 콘텐츠 재생 테스트를 위해서는 해당 폴더를 테스트용 웹 서버에 업로드해야 합니다. CDN과 연결된 스토리지 또는 일반적인 웹 서버에 DASH 콘텐츠를 업로드 합니다.

크롬과 파이어폭스 등의 브라우저는 보안을 위해 미디어 스트리밍과 관련된 모든 URL에 필수적으로 HTTPS를 적용하도록 강제하고 있습니다. 3단계 재생 테스트를 위해서는 테스트용 웹 서버에도 SSL 인증서를 적용해 HTTPS URL을 사용해야 합니다.

3단계: Bitmovin 플레이어와 PallyCon 라이선스 토큰 연동을 통한 DRM 콘텐츠 재생

2단계에서 패키징한 DASH 콘텐츠를 Bitmovin 플레이어를 이용해 재생합니다. 다음과 같은 과정을 통해 DRM 라이선스 연동 및 콘텐츠 재생을 수행합니다.

3-1. Bitmovin 플레이어 샘플 다운로드 및 소스 수정

Bitmovin 사이트에 로그인한 후 ‘Player > Web SDK’ 화면으로 이동합니다. ‘Player Embedding’ 부분의 ‘Sample Page’ 탭을 클릭하고 아래 이미지에 표시된 ‘click here’ 링크를 클릭해 샘플 html 파일을 다운로드합니다.

다운로드 받은 ‘bitmovin-player-samplepage.html’ 샘플 파일을 텍스트 에디터로 열어 수정합니다. 우선 검색 기능으로 ‘.mpd’ 문자열을 검색하면 아래와 같은 부분으로 이동합니다.

var source = {
dash: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd',
hls: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8',
progressive: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4',
poster: 'https://bitmovin-a.akamaihd.net/content/MI201109210084_1/poster.jpg'
};

위 소스의 내용을 테스트 환경에 맞도록 아래와 같이 수정합니다.


var source = {
dash: 'https://test-web-server-url/pallycon-intro/dash/stream.mpd',
drm: {
widevine: {
LA_URL: "https://license.pallycon.com/ri/licenseManager.do",
headers: {
"pallycon-customdata-v2" : "CUSTOM_HEADER_VALUE"
}
},
playready: {
LA_URL: "https://license.pallycon.com/ri/licenseManager.do",
headers: {
"pallycon-customdata-v2" : "CUSTOM_HEADER_VALUE"
}
}
}
};

  • 위 소스 코드의 mpd 파일 URL은 2단계에서 테스트용 웹 서버에 업로드한 DASH 콘텐츠에 해당되는 URL로 교체되어야 합니다.
  • ‘CUSTOM_HEADER_VALUE’ 값은 나중에 아래 과정에서 생성되는 라이선스 토큰 값으로 교체되어야 합니다.
3-2. DRM 라이선스 발급을 위한 라이선스 토큰 생성 및 설정

패키징된 콘텐츠를 재생하기 위해서는 DRM 라이선스 연동을 통해 플레이어에 해당 콘텐츠의 라이선스가 발급되어야 합니다. PallyCon 멀티DRM은 콜백 방식과 토큰 방식의 라이선스 연동을 지원하며, 본 자습서에서는 토큰 방식의 라이선스 연동으로 진행합니다.

라이선스 발급 방식에 대한 상세 설명은 아래 링크된 온라인 가이드를 참고하시기 바랍니다.

라이선스 요청에 사용되는 토큰은 PallyCon멀티DRM이 적용될 동영상 서비스의 서버 사이드(백엔드)에서 정해진 규격에 따라 생성되어 클라이언트의 플레이어 코드에 적용되어야 합니다. 본 자습서에서는 빠른 테스트 진행을 위해 PallyCon 사이트의 ‘개발자 콘솔’ 페이지에서 제공되는 ‘토큰 생성’ 기능을 이용합니다. 아래 링크의 개발자 콘솔 페이지로 접속하여 각 항목들을 입력합니다.

항목입력 값규격예시
USER ID 콘텐츠 서비스 사용자의 권한 확인에 사용되는 고유한 사용자 ID. 토큰 방식의 연동에서는 콘텐츠 서비스 백엔드와 클라이언트 간에 직접 권한 확인이 완료된 후 토큰을 생성해야 함.최대 200자 영문/숫자 문자열 test-user (임의로 입력)
Token Rule 라이선스 발급 시 적용될 각종 DRM 관련 룰 데이터 (상세 내용은 토큰 가이드 참조)JSON 문자열 {
“playback_policy”: {
“limit”: true,
“persistent”: false,
“duration” : 300
}
}
Time stamp 토큰의 유효성 발효 시간. 일반적으로 토큰 생성 시점으로 설정하며, 해당 시점 이후 기본 600초 동안 토큰이 유효함.
(PallyCon 콘솔 사이트에서 설정 가능)
yyyy-mm-ddThh:mm:ssZ
(GMT 시간대 기준)
2019-04-03T08:30:00Z
SITE Key PallyCon 콘솔 사이트의 ‘연동 설정’ 화면에 표시된 사이트 키32자리 문자열 3H24FS8wdo3C7CW
rSjcIhPYWpYaFu6Lh
SITE ID 1단계에서 PallyCon 콘솔 사이트의 ‘연동 설정’ 화면에 표시된 트라이얼 사이트 ID4자리 영대문자 ABCD
DRM Type 재생할 클라이언트(브라우저)에서 지원되는 DRM을 입력widevine / playready / fairplay크롬 / 파이어폭스: widevine, IE11 / 엣지: playready
CID2단계에서 CLI 패키져에 입력한 콘텐츠 ID최대 200자 영문/숫자 문자열pallycon-intro
ACCESS Key PallyCon 콘솔 사이트의 ‘연동 설정’ 화면에 표시된 액세스 키32자리 문자열gktt7xArRiSrWXEvr
ommuBdUD6Ktk3cP

위와 같이 토큰 생성에 필요한 값들을 입력하고 ‘REQUEST TOKEN’ 버튼을 클릭하면 페이지 하단에 토큰 문자열이 생성됩니다. 해당 문자열을 복사해 3-2 단계에서 수정한 Bitmovin 플레이어 샘플 파일의 각 DRM별 ‘CUSTOM_HEADER_VALUE’ 부분에 붙여넣습니다. 최종적인 html 소스의 내용은 아래와 같습니다.


var source = {
dash: 'https://test-web-server-url/pallycon-intro/dash/stream.mpd',
drm: {
widevine: {
LA_URL: "https://license.pallycon.com/ri/licenseManager.do",
headers: {
"pallycon-customdata-v2" : "eyJ0aW1lc3RhbXAiOiIyMDE5LTA0LTAzVDA5OjA4OjAwWiIsImhhc2giOiJRTEUzOGxPQjVJUzZ3cUlYOSt6eWpUR1oxOXVrXC9BVVdFQkxkSjRQZVNiaz0iLCJ0b2tlbiI6IkhCOHVvRXBaTTZ2dEFIVXFLSTQyM0s0amNHTzltU1A5YjJWM2IzaTNEd21cL3dpS1wvSlV2WTVWVVQ4WVNZTUVLZm5PXC9PXC9yTU9hUlZrR0JuQXI0RStSM1FFUVJZandldlNRaGN2cWR6QWN6THFcL1VhaXhRK1J5Z21EMnRDWDFXdFwvdmQ5d1JpeWd4RFgyckt6VWwxeUZyUT09Iiwic2l0ZV9pZCI6IjE3WUwiLCJkcm1fdHlwZSI6IndpZGV2aW5lIiwidXNlcl9pZCI6InRlc3QtdXNlciIsImNpZCI6InBhbGx5Y29uLWludHJvIn0="
}
},
playready: {
LA_URL: "https://license.pallycon.com/ri/licenseManager.do",
headers: {
"pallycon-customdata-v2" : "eyJ0aW1lc3RhbXAiOiIyMDE5LTA0LTAzVDA5OjA4OjAwWiIsImhhc2giOiI2S0t6dVY2NWFwSnpDSmJxdDRhK1NRUjZJM0ZFRlB4amdJaHNCc3g4OXNJPSIsInRva2VuIjoiSEI4dW9FcFpNNnZ0QUhVcUtJNDIzSzRqY0dPOW1TUDliMlYzYjNpM0R3bVwvd2lLXC9KVXZZNVZVVDhZU1lNRUtmbk9cL09cL3JNT2FSVmtHQm5BcjRFK1IzUUVRUllqd2V2U1FoY3ZxZHpBY3pMcVwvVWFpeFErUnlnbUQydENYMVd0XC92ZDl3Uml5Z3hEWDJyS3pVbDF5RnJRPT0iLCJzaXRlX2lkIjoiMTdZTCIsImRybV90eXBlIjoicGxheXJlYWR5IiwidXNlcl9pZCI6InRlc3QtdXNlciIsImNpZCI6InBhbGx5Y29uLWludHJvIn0="
}
}
}
};

  • 위 샘플 코드의 토큰 문자열은 자습서를 직접 생성한 값으로 대체해야 합니다.
  • 크롬/파이어폭스(Widevine DRM)와 IE11/엣지(PlayReady DRM) 모두에서 재생 테스트를 하려면, 위와 같이 토큰 생성 페이지의 입력 값 중에 ‘DRM Type’ 부분을 각각 ‘widevine’과 ‘playready’로 생성한 두 개의 토큰 문자열을 해당 부분에 입력해야 합니다.
3-3. 수정된 플레이어 샘플 업로드 및 재생 확인

라이선스 토큰 문자열까지 설정이 완료된 플레이어 샘플 html 파일을 2단계에서 DASH 콘텐츠를 업로드한 테스트 용 웹 서버에 업로드합니다. 크롬, 파이어폭스, IE11, 엣지 등 PlayReady 또는 Widevine DRM을 지원하는 웹 브라우저를 실행해 해당 html 파일의 URL로 접속하면 아래와 같은 플레이어 화면이 표시됩니다.

정상적으로 라이선스 토큰이 설정된 경우, 플레이어의 재생 버튼을 클릭하면 해당 토큰을 이용해 PallyCon 클라우드 서버에서 라이선스가 발급되어 콘텐츠가 재생됩니다. 토큰 방식의 라이선스 연동을 실제 서비스에 적용하기 위해서는, 콘텐츠 서비스 사이트의 서버(백엔드)에서 사용자 인증과 콘텐츠 권한 확인 과정 후에 실시간으로 토큰이 생성되어야 합니다. 아래 ‘패키져 / 샘플 다운로드’ 페이지의 ‘토큰 방식 DRM 연동 샘플’과 토큰 연동 가이드를 참고해 주시기 바랍니다.

다음과 같은 경우 콘텐츠 재생이 실패할 수 있습니다.

  • 토큰 유효 기간 만료: PallyCon 콘솔에서 설정된 토큰 유효 기간(기본 10분) 이내에 재생이 시작될 수 있도록 유효 기간을 늘리거나 현재 GMT 시간을 기준으로 토큰을 새로 생성해 주시기 바랍니다. (토큰의 Timestamp 값은 현지 시간대가 아닌 GMT 기준 시간을 입력해야 합니다.)
  • CORS 오류: 플레이어 html 파일과 DASH 콘텐츠 파일이 서로 다른 도메인에 위치한 경우, Cross-Origin Resource Sharing (CORS) 오류가 발생합니다. 해당 오류를 해결하려면 동일 도메인으로 파일을 옮기거나 해당 웹 서버에서 응답 헤더에 Access-Control-Allow-Origin 설정을 해주어야 합니다.

이상으로 PallyCon 멀티DRM과 Bitmovin 플레이어 연동 자습서를 마칩니다. 자습서 내용 진행에 어려움이 있으면 PallyCon 트라이얼 가입 시 생성된 헬프데스크 계정을 이용해 문의하시기 바랍니다.

감사합니다.

본 자습서에서 사용한 CLI 패키져와 Bitmovin 플레이어 외에도 PallyCon 멀티DRM 서비스는 아래와 같이 다양한 파트너 솔루션들과 연동되어 있습니다.

  • 인코더, 트랜스코더, 스트리밍 서버 연동: AWS Elemental (SPEKE API 연동), Harmonic, Anevia, Flussonic Media Server, Wowza Streaming Engine (CPIX API 연동)
  • HTML5 플레이어 연동: Shaka Player, Bitmovin Player, Viblast Player, THEO Player, VideoJS, NexPlayer
  • 네이티브 플레이어 연동: Android ExoPlayer(Widevine, NCG DRM), iOS AVPlayer(FairPlay, NCG DRM), UWP MediaPlayer(PlayReady)

PallyCon 멀티DRM과 각종 연동 솔루션에 대한 보다 자세한 내용은 PallyCon 개발자 가이드 사이트를 참고하시기 바랍니다.