---
title: "DRM CLI 패키저 실행 인자 및 에러 코드"
description: "도브러너 DRM CLI 패키저의 실행 명령 형식, 명령어 옵션, 외부 키 옵션과 에러 코드를 정리합니다."
---
> For the complete documentation index, see [llms.txt](https://docs.doverunner.com/llms.txt).

이 문서는 도브러너 DRM CLI 패키저의 명령어 옵션과 에러 코드를 정리합니다. 설치 방법, 연동 구조, 패키징 예제는 [DRM CLI 패키저 가이드](https://docs.doverunner.com/ko/content-security/multi-drm/packaging/cli-packager/)를 참고하시기 바랍니다.

## 패키저 실행 인자

> 아래 옵션에 Shaka Packager의 명령어 옵션들을 추가로 사용할 수 있습니다.

### 실행 명령 형식 (기본)

```
./doverunner-drm-packager --enc_token value --content_id value -i value -o value (--dash || --hls || -cmaf || --ncg || --hls_ncg)
```

:::note 

DRM CLI 패키저 v3.8.1부터는 이전 버전에서 사용하던 도브러너 독자 규격의 키 서버 통신 방식 대신 표준 CPIX API 기반의 KMS(Key Management Server) 통신을 기본 옵션으로 지원합니다. 기존 사용자들을 위해 이전 버전과의 하위 호환성도 지원합니다. (기존과 동일한 파라미터 사용 가능) 자세한 사항은 아래 명령어 옵션 목록을 참고하시기 바랍니다.

:::

### 명령어 옵션 목록

| Name | Type | Required | Description |
| :--- | :---- | :--- | :--------------|
| `--enc_token` | string | Y (CPIX 통신 사용 시) | 도브러너 KMS와의 CPIX API 통신에 사용되는 KMS 토큰 값. 도브러너 콘솔의 `Content Security` > `Multi DRM` > `Settings` 화면에서 확인 가능 (`Retrieve Secret Information` 버튼을 클릭해야 값이 표시됨). |
| `--site_id` | string | Y (기존 독자 방식 통신 사용 시) | 이전 버전의 도브러너 독자 규격 연동에 사용되는 도브러너 서비스 사이트 ID (4바이트). 도브러너 콘솔의 `Content Security` > `Multi DRM` > `Settings` 화면에서 확인 가능 (`Retrieve Secret Information` 버튼을 클릭해야 값이 표시됨). |
| `--access_key` | string | Y (기존 독자 방식 통신 사용 시) | 서비스 사이트에 발급되는 인증 키. `site_id`와 마찬가지로 도브러너 콘솔 사이트에서 확인 가능 |
| `--content_id` | string | Y | 패키징 대상 콘텐츠의 고유 ID. 고객사 CMS에서 관리하는 ID 값을 입력하며, 이후 클라이언트 연동 단계에서 동일한 CID를 사용해야 함. (최대 200 바이트) |
| `--cmaf` | bool | Y (본 옵션 및 아래 네가지 패키징 옵션 중 최소 하나 이상 필수 입력) | 단일 콘텐츠로 세 가지 멀티 DRM(Widevine, PlayReady, FPS)을 지원 가능한 CMAF 패키징 수행. 다른 유형의 패키징과 동시에 처리할 수 없음. |
| `--dash` | bool |  | DASH-CENC(Widevine, PlayReady 지원) 패키징 수행 |
| `--hls` | bool |  | HLS-AES (FPS 지원) 패키징 수행 |
| `--ncg` | bool |  | NCG 패키징 수행 |
| `--hls_ncg` | bool |  | HLS-AES (NCG) 패키징 수행, NCG DRM을 이용하여 키를 보호하는 HLS-AES 콘텐츠 생성. `--dash`, `--hls` 등 다른 유형의 패키징과 동시에 처리할 수 없음. |
| `-i (--input_file)` | string | Y | 원본 파일명, 파일을 2개 이상 입력 시 Adaptive Streaming으로 패키징. <br/> [추가 옵션] 입력파일명 뒤에 `:{key}={value}` 형태로 이어서 입력.<br/> - `:name` 비디오 또는 오디오 트랙명 설정 (예 `:name=1080p` 또는 `:name='한국어 음성'`) 공백, 온점(.), 언더바(_) 외 특수문자는 입력 불가<br/> - `:lang` 오디오 트랙 언어코드(ISO 639-1, 영문 소문자 두자리) 설정 (예 `:lang=ko`)<br/> - `:video_bandwidth` 비디오 트랙 bandwidth (bps 단위) 설정 (예 `:video_bandwidth=5000000`) |
| `-o (--output_dir)` | string | N | Output 폴더명<br/>기본 값: 현재 위치에 output 디렉터리 생성 (폴더 및 파일 덮어쓰기를 허용 할 경우 -f 명령어 추가) |
| `--config_file` | string | N | Site ID, Access key와 같이 고정된 값들을 저장한 파일 주소. Json, XML 규격을 지원하며 기본은 Json (파일 확장자가 xml일 경우 xml 파싱 적용) |
| `--clear_lead` | number | N | 영상 초반에 암호화 비활성화 구간을 적용. 기본 값: 0 (초 단위) |
| `--skip_audio_encryption` | bool | N | 오디오 트랙 암호화 여부. 기본 값: false(오디오트랙 암호화) |
| `--multi_key` | bool | N | 트랙 별로 각각 다른 키로 암호화(멀티키 패키징). 이 옵션 사용 시 오디오 암호화는 기본적으로 skip됨. 오디오 암호화를 활성화하려면 `--encrypt_audio` 옵션을 함께 사용. NCG 패키징에는 적용할 수 없음. |
| `--encrypt_audio` | bool | N | `--multi_key` 사용 시 오디오 트랙 암호화를 활성화. (`--multi_key` 사용 시 오디오 암호화는 기본적으로 skip됨) |
| `--max_sd_height` | number | N | SD 트랙으로 패키징될 최대 해상도 설정. 기본값: 480 |
| `--max_hd_height` | number | N | HD 트랙으로 패키징될 최대 해상도 설정. 기본값: 1080 |
| `--max_uhd1_height` | number | N | UHD 트랙으로 패키징될 최대 해상도 설정. 기본값: 2160 |
| `--fragment_duration` | number | N | Fragment 간격 (초 단위) |
| `--segment_duration` | number | N | Segment 간격 (초 단위) |
| `--on_demand` | bool | N | DASH 패키징 Profile을 on-demand로 설정<br/>미입력 또는 'N'으로 설정 시 live profile로 패키징 |
| `--output_single_file` | bool | N | HLS 패키징 출력을 fMP4 파일 형태로 출력 |
| `--mpd_filename` | string | N | DASH manifest (.mpd) 파일명 |
| `--m3u8_filename` | string | N | HLS master manifest (.m3u8) 파일명 |
| `--subtitle` | string | N | 자막 파일명 <br/> [추가 옵션] 입력파일명 뒤에 `:{key}={value}` 형태로 이어서 입력하며 value에 특수문자는 입력 불가.<br/> - `:name` 자막 언어명 설정 (예 `:name=한국어`)<br/> - `:lang` 자막 언어코드(ISO 639-1, 영문 소문자 두자리) 설정 (예 `:lang=ko`) |
| `--mp4_subtitle` | bool | N | `--subtitle` 파라미터로 자막 입력 시, 출력되는 자막 형식을 `Embedded MP4`로 설정. 해당 파라미터 생략 시 기본 값으로 `Text VTT` 형식 자막이 생성됨<br/> - `:format` MP4 컨테이너 내부 포맷 지정(예  `:format=ttml`또는  `:format=vtt`) |
| `--generate_tracktype_manifests` | bool | N | 멀티키 패키징 시 트랙별 매니페스트(플레이리스트) 파일 생성. SD부터 UHD 트랙까지 포함된 어댑티브 스트림의 경우, 'SD_ONLY', 'SD_HD', 'SD_UHD' 세 가지 매니페스트가 생성됨. |
| `--enable_average_bandwidth_mpd` | bool | N | MPD 파일 내 각 트랙 별 대역폭을 최대 값 대신 평균 값으로 적용 (기본: false) |
| `--show_content_info` | bool | N | 매니페스트 파일(mpd, m3u8)에 콘텐츠 정보를 추가 (기본: false) |
| `--stop_indicator` | bool | N | 패키징 진행 상태 표시기 숨김 |
| `--quiet` | bool | N | 패키징 로그 숨김 |
| `--license_url` | string | N | PSSH를 로컬에서 생성할 때 PlayReady PSSH 및 NCG 헤더에 사용되는 라이선스 서버 URL. <br/>기본 값: https://drm-license.doverunner.com/ri/licenseManager.do |
| `--kms_query_params` | string | N | KMS와 통신할 때 KMS URL에 추가할 쿼리 파라미터. `key=value` 형식으로 입력 (예: `param1=value1&param2=value2`). |
| `--generate_pssh` | bool | N | 해당 옵션 적용 시 키 서버에서 생성한 PSSH 대신 패키저 자체 생성 값을 사용 |
| `--ascending_track_order_in_manifest` | bool | N | 해당 옵션 적용 시, ABR 콘텐츠의 Manifest 내 영상 트랙들을 Bandwidth에 따라 오름차순으로 정렬. 미 적용 시 내림차순 정렬 (기본값) |
| `--wiseplay_drm` | bool | N | 해당 옵션 적용 시 DASH 패키징에 Huawei 기기용 WisePlay DRM을 적용. 반드시 `--dash` 옵션과 함께 사용되어야 함. |

### 외부 키 사용 시 필요한 옵션

도브러너 키 서버에서 생성한 암호 키를 사용하지 않고, 서비스 사이트에서 별도로 관리하는 키를 이용해 패키징하는 경우 사용하는 옵션입니다.

> 외부 키 사용 시에는 도브러너 키 서버와의 통신을 하지 않으므로 `--enc_token`, `--site_id`, `--access_key` 등의 옵션이 사용되지 않습니다.

| Name | Type | Required | Description |
| :--- | :---- | :--- | :--------------|
| `--enable_raw_key_encryption` | bool | Y | External key 사용 여부 |
| `--provider` | string | N | Widevine PSSH 생성을 위한 DRM provider 문자열<br/>기본 값: doverunner |
| `--keys` | string | Y | 암호화 key 와 key ID 쌍 (각각 16바이트 HEX 문자열) <br/>값 형식: label=:key_id=16byte_hex:key=16byte_hex |
| `--ncg_cek` | string | Y (NCG DRM 패키징 시) | 32바이트 NCG 암호화 키 (HEX) |
| `--iv` | string | Y (HLS-FPS 패키징 시) | 16바이트 초기화 벡터 (HEX) |
| `--pssh` | string | N | PlayReady, Widevine PSSH 데이터 수동 입력 |

## 에러 코드

### 결과 포맷

```xml
<?xml version="1.0" encoding="UTF-8"?> 
<doverunner-drm-packager>
    <RESULT>0</RESULT>
</doverunner-drm-packager>
```

> RESULT: 성공이면 '0', 에러가 발생한 경우는 '0'이 아닌 에러 코드 값

### 에러 코드 설명

| Error Code | Description |
|:------- | :------------- |
| 0 | 성공 |
| 1101 | 실행 명령어 뒤에 인자 값들이 하나도 전달되지 않았습니다. |
| 1102 | 잘못된 인자 값이 입력되었습니다. (INFO 참조 바랍니다.) |
| 1103 | 실행 명령어 다음의 인자 값의 개수가 맞지 않습니다. |
| 1201 | 파일이 지정된 경로에 위치하지 않습니다. |
| 1202 | 파일에 접근 할 수 없습니다. (권한 / 파일이름 문제) |
| 1203 | 파일/폴더의 경로가 너무 길어서 생성에 실패 하였습니다. |
| 1204 | 파일/폴더의 이름이 너무 길어서 생성에 실패 하였습니다. |
| 1205 | 저장 용량이 부족하여 파일/폴더 생성에 실패하였습니다. |
| 1206 | 파일의 해당 위치로 이동을 실패하였습니다. |
| 1207 | 파일의 크기를 얻어오는데 실패하였습니다. |
| 2001 | 서버로 요청을 보내는 중 오류가 발생하였습니다. |
| 2002 | 서버로부터 오류가 반환되었습니다. (INFO 참조 바랍니다.) |
| 2003 | 잘못된 블록 사이즈입니다. |
| 2004 | 개인 키가 없습니다. |
| 2005 | 잘못된 개인 키 입니다. |