AWS Elemental MediaConvert로 멀티DRM 패키징하기
AWS Elemental MediaConvert 작업 하나로 DoveRunner 멀티DRM이 적용된 DASH와 HLS를 만드는 방법을 실제 작업 과정으로 보여줍니다.
만들어 볼 것
이미 AWS Elemental MediaConvert로 영상을 패키징하고 있다면, 같은 작업에 DoveRunner 멀티DRM을 추가할 수 있습니다. MediaConvert는 S3의 원본 파일을 읽고, 출력마다 SPEKE 프로토콜로 DoveRunner 키 서버에 암호화 키를 요청합니다. 그런 다음 암호화된 DASH와 HLS를 S3에 씁니다. DASH는 PlayReady와 Widevine, HLS는 FairPlay를 지원하며, 플레이어는 DoveRunner에서 라이선스를 받습니다. 위 영상은 이 레슨의 작업으로 만든 결과물입니다.
시작하기 전에
- AWS 계정: IAM, S3, MediaConvert를 사용할 수 있어야 합니다
- DoveRunner Console 계정 (console.doverunner.com): KMS 토큰 확인용
- 콘텐츠 ID(CID): 원하는 값을 정합니다. MediaConvert에서는 Resource ID로 입력하며, 라이선스 연동에도 같은 CID를 씁니다
- S3에 올려 둔 원본 영상
- MediaConvert의 DRM 암호화는 MediaConvert 작업 설정의 Pro 기능입니다
| DRM 시스템 | System ID |
|---|---|
| PlayReady | 9a04f079-9840-4286-ab92-e65be0885f95 |
| Widevine | edef8ba9-79d6-4ace-a3c8-27dcd51d21ed |
| FairPlay | 94ce86fb-07ff-4f43-adb8-93d2fa968ca2 |
1. KMS 토큰 확인하기
DoveRunner Console에서 Multi DRM > Settings로 이동해 Retrieve Secret Information을 선택합니다. KMS Token 행에 KMS 토큰이 표시됩니다. 비밀번호처럼 다루세요. MediaConvert 작업의 Key provider URL 외에는 입력하지 않습니다.
Key provider URL은 다음 형식입니다.
https://drm-kms.doverunner.com/v1/cpix/getKey?enc-token=<KMS token>
2. IAM 역할 만들기
MediaConvert가 S3 버킷을 사용할 수 있도록 권한을 줍니다. AWS IAM 콘솔에서 Roles > Create role로 이동해 AWS service를 선택하고 사용 사례로 MediaConvert를 고릅니다. 이 사용 사례는 AmazonS3FullAccess와 AmazonAPIGatewayInvokeFullAccess를 미리 연결해 두므로 따로 고를 것이 없습니다. 역할 이름을 MediaConvert-role로 입력하고 생성합니다.
3. 작업 만들기와 입력 지정
MediaConvert 콘솔에서 Jobs > Create job으로 이동합니다. Input에 원본 영상의 S3 URL을 입력합니다. 출력이 원본의 해상도와 화면 비율을 그대로 유지하도록 Follow source는 켜 둡니다.
4. DASH 출력 그룹 (PlayReady + Widevine)
- Add output group을 선택하고 DASH ISO를 고릅니다.
- 그룹 이름을 입력하고, Destination을 출력 버킷의 경로로 지정합니다. 예:
s3://<bucket>/lab-contents/<cid>/dash/stream - 기본으로 생성된 출력 두 개(H.264 비디오, AAC 오디오)를 그대로 둡니다. Widevine은 비디오와 오디오가 별도 파일이어야 합니다.
- DRM encryption을 켜고 다음을 설정합니다.
- Resource ID: CID
- SPEKE version: 1.0
- System ID: PlayReady와 Widevine ID를 한 줄에 하나씩 입력(최대 2개)
- Key provider URL: 1단계의 URL
- Certificate ARN: 비워 둠
- Playback device compatibility: CENC v1
5. HLS 출력 그룹 (FairPlay)
두 번째 출력 그룹으로 Apple HLS를 추가하고 별도의 Destination(예: .../<cid>/hls/master)을 지정합니다. DRM encryption을 켜고 암호화 방식은 Sample AES, 키 제공자 유형은 SPEKE를 선택합니다. Resource ID와 Key provider URL은 같은 값을 쓰고, System ID에는 FairPlay ID를 입력합니다.
이 HLS 출력은 CENC가 아니라 FairPlay(Sample AES)로 보호됩니다. FairPlay 재생에는 Safari/Apple 클라이언트와, DoveRunner 쪽 FairPlay 설정이 필요합니다.
6. 서비스 역할과 자주 만나는 오류 두 가지
AWS integration에서 Use an existing service role을 선택하고 MediaConvert-role을 고른 뒤 Create를 선택합니다. 다음 검증 오류가 날 수 있습니다.
maxBitrate is a required property: 각 H.264 출력에 Max bitrate를 설정합니다(이 레슨은 5,000,000 bits/s)nameModifier is a required property: HLS 출력에 Name modifier(예:_1080p)를 설정합니다
두 가지를 고친 뒤 작업을 다시 생성합니다.
7. 작업 실행
작업 상태가 Submitted, Progressing, Complete 순서로 바뀝니다. 12분 길이의 원본을 트랜스코딩하는 데 약 5분이 걸렸습니다. 원본에 색상 메타데이터가 없다는 경고 두 개(230001, 230005)가 보일 수 있지만 작업은 중단되지 않습니다.
8. 출력 확인하기
출력 버킷에 dash/와 hls/ 폴더가 생성됩니다.
- DASH (
dash/stream.mpd): PlayReady와 Widevine의ContentProtection항목과cenc스킴 - HLS (
hls/master.m3u8):#EXT-X-KEY:METHOD=SAMPLE-AES와 FairPlay 키 형식com.apple.streamingkeydelivery
9. DoveRunner 라이선스로 재생하기
DoveRunner Lab의 Playground > DRM Tools > DRM playback tester를 엽니다. Custom content를 선택하고, 출력의 DASH 매니페스트 URL과 같은 콘텐츠 ID의 라이선스 토큰을 입력한 뒤 Load custom content를 선택합니다. Chrome에서는 Widevine으로 재생되며, 인스펙터에서 라이선스 요청과 키 상태를 확인할 수 있습니다.
다음 단계
- 하나의 출력 그룹에서 DASH와 HLS를 함께 만들려면 AES-CBC(CBCS) 암호화를 적용한 CMAF 출력 그룹을 사용하세요. 가장 다양한 클라이언트 환경을 지원합니다.
- 모든 필드와 옵션은 DoveRunner Docs의 AWS Elemental MediaConvert 가이드를 참고하세요.