Lab
  • DRM 패키징 튜토리얼코스
  • 멀티 DRM 기술에 대해 알아야 할 5가지코스
  • DoveRunner Anti Piracy 시작하기코스
  • DoveRunner 포렌식 워터마킹 시작하기코스
  • DoveRunner 모바일 앱 보안 시작하기코스
  • DoveRunner 멀티DRM 시작하기코스
  • DoveRunner Transcoding & Packaging 시작하기코스
  • DRM CLI Packager로 콘텐츠 패키징하기레슨 · DRM 패키징 튜토리얼
EN

AWS Elemental MediaLive와 MediaPackage로 라이브 멀티DRM 패키징하기

AWS Elemental MediaPackage v2와 SPEKE v2로 라이브 CMAF 스트림에 DoveRunner 멀티DRM을 적용하고, 멀티키와 키 로테이션까지 설정하는 과정을 실제 작업으로 보여줍니다.

레슨 36분

DRM: —상태: 대기 중

만들어 볼 것

AWS에서 라이브 스트리밍을 하고 있다면, 인코더를 바꾸지 않고도 DoveRunner 멀티DRM을 추가할 수 있습니다. 이 레슨에서는 라이브 피드 대신 영상 파일을 AWS Elemental MediaLive에서 반복 재생합니다. MediaLive는 스트림을 AWS Elemental MediaPackage(v2)로 보내고, MediaPackage는 들어오는 스트림을 바로 암호화합니다. 암호화 키는 SPEKE v2 프로토콜로 DoveRunner 키 서버에 요청합니다. 엔드포인트는 두 개로, DASH는 PlayReady와 Widevine, HLS는 FairPlay를 지원합니다. 플레이어는 DoveRunner에서 라이선스를 받습니다.

이 작업으로 만든 스트림은 Playground > Multi-DRM live stream demo에서 볼 수 있습니다.

시작하기 전에

  • AWS 계정: IAM, MediaLive, MediaPackage를 사용할 수 있어야 합니다
  • DoveRunner Console 계정 (console.doverunner.com): KMS 토큰 확인용이며, 키 로테이션 권한이 켜져 있어야 합니다. 아직 켜져 있지 않다면 DoveRunner 지원팀에 요청하세요
  • 콘텐츠 ID(CID): 원하는 값을 정합니다. MediaPackage에서는 Resource ID로 입력하며, 라이선스 토큰에도 같은 CID를 씁니다
  • S3에 올려 둔 원본 영상 (이 레슨은 Big Buck Bunny 사용)

1. KMS 토큰 확인하기

DoveRunner Console에서 Multi DRM > Settings로 이동해 Retrieve Secret Information을 선택합니다. KMS Token 행에 KMS 토큰이 표시됩니다. 비밀번호처럼 다루세요. MediaPackage의 키 서버 URL 외에는 입력하지 않습니다.

MediaPackage v2는 CENC, CBCS 엔드포인트 모두 SPEKE v2 키 서버 URL을 씁니다.

https://drm-kms.doverunner.com/v2/cpix/getKey?enc-token=<KMS token>

2. IAM 역할 만들기

MediaPackage가 키 서버를 호출하려면 역할이 필요합니다. IAM에서 Custom trust policy로 역할을 만들고, MediaPackage 서비스 주체가 이 역할을 맡을 수 있게 합니다. MediaPackage v2에서는 mediapackage.amazonaws.com과 mediapackagev2.amazonaws.com을 모두 넣어야 합니다. v2 주체가 없으면 엔드포인트를 만들 때 "unable to assume the IAM role" 오류가 납니다. AmazonAPIGatewayInvokeFullAccess를 연결하고 역할 이름을 SPEKEAccess로 입력합니다.

3. MediaPackage 채널 만들기

MediaPackage를 열고 Live v2로 이동합니다. Channel group을 만들고, 그 안에 입력 유형이 CMAF인 Channel을 만듭니다. MediaLive가 이 채널로 출력을 보냅니다. MediaLive가 같은 계정에서 실행되면 채널 정책은 필요 없습니다.

4. DASH 엔드포인트 (PlayReady + Widevine, 멀티키)

컨테이너가 CMAF인 Origin endpoint를 추가하고 Encrypt content를 켭니다.

  • Encryption method: CENC, PlayReady와 Widevine
  • Resource ID: CID
  • Key server URL: 1단계의 SPEKE v2 URL
  • Role ARN: SPEKEAccess
  • SPEKE version: 2.0
  • Video preset: 2 (멀티키: SD와 HD 비디오가 서로 다른 키 사용)
  • Audio: 이 레슨에서는 암호화하지 않음

DASH 매니페스트를 추가합니다.

5. 키 로테이션

Additional configuration에서 Key rotation interval을 설정합니다. MediaPackage v2는 300초 이상만 허용하므로 이 레슨은 300초를 씁니다. 그다음 키 서버 URL 끝에 &key-rotation=true를 붙입니다. 두 설정이 맞지 않으면 재생이 실패할 수 있습니다. 라이선스 토큰에도 키 로테이션을 켜야 합니다. 로테이션마다 모든 시청자가 새 라이선스를 받으므로, 대규모 라이브 이벤트라면 이 점을 미리 고려하세요.

6. HLS 엔드포인트 (FairPlay)

Safari용 두 번째 엔드포인트를 추가합니다. 컨테이너는 다시 CMAF, 암호화 방식은 CBCS로 하고 FairPlay를 추가합니다. Resource ID, 키 서버 URL, 역할은 같은 값을 씁니다. Video preset은 1로 설정해 비디오에 키 하나만 쓰게 합니다. Safari 테스트를 단순하게 하기 위해서입니다. HLS 매니페스트를 추가하고, 플레이어가 두 엔드포인트에 접근할 수 있도록 공개 접근 정책은 켜 둡니다.

7. MediaLive 입력

MediaLive에서 유형이 MP4인 입력을 만들고 영상의 S3 위치를 입력합니다. 실제 라이브 스트림이라면 RTMP, SRT 같은 라이브 입력을 씁니다. 입력을 채널에 연결할 때 Source end behavior를 Loop로 설정합니다.

8. MediaLive 채널과 출력

  1. 비용을 줄이려면 Single pipeline 채널로 만듭니다. IAM 역할은 콘솔에서 만들 수 있는 MediaLiveAccessRole을 씁니다. 역할을 지정하지 않으면 채널을 시작할 수 없습니다.
  2. 입력을 연결하고 Audio selector를 추가합니다.
  3. 출력 그룹으로 CMAF Ingest를 추가하고("MediaPackage" 유형은 v1용), Destination에 MediaPackage 채널의 ingest URL을 붙여 넣습니다.
  4. 출력으로 720p 비디오, 360p 비디오, 오디오를 추가합니다. CMAF Ingest에서는 출력 하나에 트랙 유형 하나만 담을 수 있으므로 오디오는 별도 출력이 필요합니다.

여기서 MediaLive는 아무것도 암호화하지 않습니다. 암호화는 MediaPackage가 합니다.

9. 채널 시작

채널을 만들고 Start를 선택합니다. 1분쯤 지나면 상태가 Running으로 바뀝니다. 이제 영상이 라이브 스트림으로 반복 재생되고, MediaPackage가 이를 암호화합니다.

10. 출력 확인하기

  • DASH: Widevine과 PlayReady의 ContentProtection 항목과 cenc 스킴, 비디오 트랙별 KID
  • HLS: FairPlay 키 항목(skd://). 로테이션마다 새 항목이 추가되므로 시간이 지나면 여러 개가 보입니다

플레이리스트에는 키를 가리키는 정보만 있고, 키 자체는 들어 있지 않습니다.

11. DoveRunner 라이선스로 재생하기

DoveRunner Lab의 Playground > DRM playback tester를 열고 Custom content를 선택합니다. Chrome이나 Edge에서는 DASH 매니페스트 URL, Safari에서는 HLS 매니페스트 URL을 붙여 넣습니다. License policy & token tools에서 CID에 대해 키 로테이션을 켜고 SD와 HD 트랙 정책을 넣은 토큰을 만듭니다. 토큰을 붙여 넣고 스트림을 불러온 뒤 재생합니다. Token 탭에서 키 로테이션이 켜져 있는지, Timeline에서 로테이션마다 새 라이선스 요청이 생기는지 확인할 수 있습니다.

작업이 끝나면 MediaLive 채널을 중지하세요. 실행 중에는 계속 요금이 부과됩니다.

다음 단계

  • 모든 필드와 옵션은 DoveRunner Docs의 AWS Elemental MediaPackage 가이드를 참고하세요.
  • AWS에서 파일 기반(VOD)으로 패키징하려면 이 코스의 MediaConvert 레슨을 보세요.