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: 2target/video/codec: "h264"또는"h265"target/video/use_scene_detection: falsetarget/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 연동을 통해 재생 시점에 실시간으로 워터마크를 적용할 수 있습니다. 자세한 사항은 해당 가이드를 참고하시기 바랍니다.