FWM Hybrik 전처리기 가이드
도브러너 FWM Hybrik 전처리기는 Dolby Hybrik 서비스를 통한 동영상 트랜스코딩 과정에서 포렌식 워터마킹 전처리를 수행할 수 있는 모듈입니다.
전처리기 모듈이 적용된 Hybrik 인코더를 통해 A/B 버전 (0/1 버전) mp4 영상을 만들어내고 각각의 파일을 DASH 또는 HLS로 패키징할 수 있습니다. 포렌식 워터마크와 DRM을 모두 적용하는 경우, Hybrik DRM 연동 가이드를 참고해 CPIX API를 통한 DRM 패키징도 함께 적용할 수 있습니다.
sequenceDiagram participant A as 콘텐츠 서비스 사이트
(고객사) participant B as 고객사 S3 스토리지 participant C as 고객사 EC2 인스턴스
(Hybrik 실행) participant D as Dolby Hybrik 콘솔
또는 API participant E as 도브러너 서비스 A ->> D: AWS Credential 등록 (S3, EC2 권한 부여) A ->> B: 원본 영상 업로드 A ->> D: 트랜스코딩/패키징 작업 등록 D ->> C: Hybrik 인스턴스 생성 B ->> C: 원본 영상 복사 C -->> C: 인코딩/트랜스코딩 Note right of C: A/B 전처리 (FWM
Hybrik 전처리기) C -->> C: DASH/HLS 패키징 opt 멀티DRM 적용 C ->> E: 암호화 키 요청 (CPIX 연동) E ->> C: 암호화 키 전달 C -->> C: 콘텐츠 암호화 end C ->> B: 전처리 및 패키징 결과물 Note right of B: DASH / HLS 콘텐츠
(각각 A/B 두 벌)
Dolby Hybrik 미디어 프로세싱 서비스에 대한 자세한 정보와 가이드는 아래 링크들을 참고하시기 바랍니다.
샘플 다운로드
Section titled “샘플 다운로드”연동 방법
에서 설명된 전체 설정에 대한 예제 JSON 파일을 아래 링크에서 다운로드할 수 있습니다. (우클릭 후 다른 이름으로 저장)
1. 서비스 가입 및 키 획득
Section titled “1. 서비스 가입 및 키 획득”도브러너 서비스 가입 후 wm key file
과 access key
를 획득합니다.
2. FWM 전처리기 인증 정보 설정
Section titled “2. FWM 전처리기 인증 정보 설정”FWM 전처리기의 인증 정보를 다음과 같이 설정합니다.
{ "definitions": { ... "wm_key_file_base64": "yxFNjptzCUNHE5d/gJ5g+fWZHi0XUFuZxHuFD0ycQCZvuVpQUMZO79OqVat5VMp9gZIRTrC63Lf3otykHBL9sVyEDr3jAqDnEBXD9JPiNne9bFf1k1hH1hUiIrj1YeYRtfNVdDstmC2JMBzApHdGjGPSRBE=", "wm_access_key": "FOR_INKA_FORENSIC_WATERMARK_TEST", ... }, ...}
3. 인코딩 및 FWM 전처리기 설정
Section titled “3. 인코딩 및 FWM 전처리기 설정”Hybrik에서 FWM 전처리기를 사용하려면 트랜스코딩 작업의 일부 영상 속성을 다음과 같이 지정해야 합니다.
target/container/kind: "fmp4"
target/container/segment_duration_sec: 2
target/video/codec: "h264"
또는"h265"
target/video/use_scene_detection: false
target/video/use_closed_gop: true
지원 사양에 따라 다음 FPS를 지원하며, FPS별로 target/video/idr_interval/frames
를 다음과 같이 지정해야 합니다.
FPS | target/video/idr_interval/frames |
---|---|
23.976, 24 | 48 |
25 | 50 |
29.97, 30 | 60 |
47.952, 48 | 96 |
50 | 100 |
59.94, 60 | 120 |
세그먼트 랜더링을 사용할 때에도 "duration_sec"
은 IDR 길이에 따라 2초, 혹은 2.002초의 배수로 지정해야 합니다.
각각 0
과 1
에 해당하는 워터마크 심볼이 적용된 A/B 버전 파일을 생성해야 하므로, 동일한 원본 영상에 대하여 트랜스코딩을 두 번 수행해야 합니다. 이 때, Akamai CDN과 호환되도록 반드시 B
버전 (심볼 1) 파일명은 A
버전 (심볼 0) 파일명 앞에 b.
가 추가된 형태, 즉 b.<A 버전 파일명>
이어야만 합니다. (Unlabeled A variant 방식)
다음은 A 버전 파일명이 "{source_basename}{default_extension}"
인 경우의 예시입니다. 해당 파일명은 예시와 다른 값으로 변경 가능하지만, 이 경우 B 버전 파일명도 동일하게 변경 후 맨 앞에 b.
을 추가해야 합니다.
A
버전 (심볼 0) 파일명 -target/file_pattern: "{source_basename}{default_extension}"
B
버전 (심볼 1) 파일명 -target/file_pattern: "b.{source_basename}{default_extension}"
또한 0
또는 1
심볼을 전처리하기 위하여 FWM 전처리 플러그인을 연결한 후 아래 속성들을 지정합니다.
target/video/filters/kind: "plugin_docker"
target/video/filters/payload/docker_image/image_urn: "public.ecr.aws/pallycon/wm_plugin_pub:latest"
target/video/filters/payload/docker_image/registry/kind: "ecr"
target/video/filters/payload/config/wm_key_file_base64: "{{wm_key_file_base64}}"
target/video/filters/payload/config/wm_access_key: "{{wm_access_key}}"
target/video/filters/payload/config/wm_fwm_symbol: 0
또는1
다음은 위 내용을 적용한 FWM 전처리 설정 예시입니다.
{ ..., "payload": { "elements": [ ..., { "uid": "transcode_video_wm0_task", "kind": "transcode", "payload": { ..., "targets": [ { ..., "container": { "kind": "fmp4", "segment_duration_sec": "2" }, "video": { ..., "use_scene_detection": false, "use_closed_gop": true, "frame_rate": "30000/1001", "idr_interval": { "frames": 60 }, "filters": [ { "kind": "plugin_docker", "payload": { "docker_image": { "image_urn": "public.ecr.aws/pallycon/wm_plugin_pub:latest", "registry": { "kind": "ecr" } }, "config": { "wm_key_file_base64": "{{wm_key_file_base64}}", "wm_access_key": "{{wm_access_key}}", "wm_fwm_symbol": 0 } } } ] }, ... } ] } }, { "uid": "transcode_video_wm1_task", "kind": "transcode", "payload": { ..., "targets": [ { ..., "container": { "kind": "fmp4", "segment_duration_sec": "2" }, "video": { ..., "use_scene_detection": false, "use_closed_gop": true, "frame_rate": "30000/1001", "idr_interval": { "frames": 60 }, "filters": [ { "kind": "plugin_docker", "payload": { "docker_image": { "image_urn": "public.ecr.aws/pallycon/wm_plugin_pub:latest", "registry": { "kind": "ecr" } }, "config": { "wm_key_file_base64": "{{wm_key_file_base64}}", "wm_access_key": "{{wm_access_key}}", "wm_fwm_symbol": 1 } } } ] }, ... } ] } } ], ... }}
4. DASH / HLS 패키징 설정
Section titled “4. DASH / HLS 패키징 설정”생성된 A/B 버전 mp4 파일을 각각 DASH 및 HLS로 패키징합니다. 패키징 시 다음 사항에 유의해야 하며 기타 사항은 HLS and DASH Packaging Tutorial을 참고하시기 바랍니다.
- A/B 버전 미디어 세그먼트들은 동일한 디렉토리에 위치해야 합니다.
- 미디어 재생 시 사용자는 A 버전 매니페스트를 재생해야 하며, B 버전 매니페스트를 재생하면 안됩니다. 패키징 시 B 버전 매니페스트가 A 버전 매니페스트를 덮어쓰지 않도록 주의하세요. 이를 위하여 B 버전 매니페스트 파일의 위치와 이름을 A 버전 매니페스트와 상이하게 하고 패키징 후 삭제하는 것이 좋습니다.
- A 버전 매니페스트를 재생할 것이므로, 오디오는 A 버전에만 포함시키면 됩니다.
segmentation_mode
는 반드시segmented_mp4
또는segmented_ts
여야만 합니다.
5. 작업 연결
Section titled “5. 작업 연결”트랜스코딩 작업과 패키징 작업을 연결합니다. A 버전(0)
의 트랜스코딩 결과물은 A 버전 DASH/HLS 패키징으로, B 버전(1)
의 결과물은 B 버전 패키징으로 각각 연결해야 합니다.
위에서 예시로 든 작업을 연결하면 다음과 같습니다.
{ { ..., "connections": [ { "from": [ { "element": "source" } ], "to": { "success": [ { "element": "transcode_video_wm0_task" }, { "element": "transcode_video_wm1_task" }, { "element": "transcode_audio_task" } ] } }, { "from": [ { "element": "transcode_video_wm0_task" }, { "element": "transcode_audio_task" } ], "to": { "success": [ { "element": "dash_seg_mp4_wm0" }, { "element": "hls_seg_ts_wm0" } ] } }, { "from": [ { "element": "transcode_video_wm1_task" } ], "to": { "success": [ { "element": "dash_seg_mp4_wm1" }, { "element": "hls_seg_ts_wm1" } ] } } ] }}
6. 작업 시작 및 결과 확인
Section titled “6. 작업 시작 및 결과 확인”위 과정을 통해 설정한 트랜스코딩 및 패키징 작업을 Hybrik 콘솔 또는 API를 통해 실행합니다. 해당 작업의 결과물은 출력 스토리지로 지정한 S3 버킷에서 확인할 수 있습니다.
Hybrik 전처리기 연동을 통해 생성된 A/B(0/1) 버전의 DASH 또는 HLS 콘텐츠는 세션 매니저 API와 CDN 연동을 통해 재생 시점에 실시간으로 워터마크를 적용할 수 있습니다. 자세한 사항은 해당 가이드를 참고하시기 바랍니다.