數字電影包

數字電影包（Digital Cinema Package，DCP），又稱數字電影數據包，是一組用來儲存數字電影的圖像、聲音和其他數據流的數字文件集。

DCP最早由數字電影倡導聯盟（DCI）所推廣，該聯盟最初建議將其用於打包數字電影。然而，業界更傾向於將DCP作為打包不同「成分」(composition，這裡指同一DCP中不同的單一媒體文件，例如廣告片、預告片和正片）的方式。一個DCP可能包括一個成分的部分文件（例如單一的圖像或音訊），也可能包括完整的一個成分（例如完整的一部電影），也可能包括多個完整的成分（例如廣告片+預告片+電影正片）。

一個成分包括一個以XML格式儲存的成分播放列表（Composition Playlist，CPL），其指定了一系列不同軌道文件的播放順序。而這些軌道文件經過編碼，包含著音像資訊，以高畫質晰度電視節目素材交換格式（MXF）被包裝。根據電影電視工程師協會（SMPTE）ST429-2標準「數字電影包裝」，一個成分至少要包含兩個軌道文件，一個軌道文件包含圖像，而另一個包含聲音。這個完整的，包含播放列表和相關軌道文件的成分，被打包入DCP進行分發。一個成分通常是一個完整的作品，而DCP則並不一定。儘管如此，業界仍習慣用DCP來代表一個完整的影片，因為DCP需要被方便地交付到每個電影院。

圖像軌道文件使用JPEG 2000進行編碼壓縮，音訊軌道文件則是24位線性PCM未壓縮多通道WAV文件。DCP也可以進行加密以保護其免受未經授權的使用（例如盜版電影），加密通過CBC模式下的128位AES進行。

在實際使用當中，應用了兩個版本的成分模式。原始的版本稱為「互操作DCP」（Interop DCP），現在已較少使用，但仍被部分商業放映伺服器支持。而SMPTE在2009年發布的SMPTE DCP標準（SMPTE ST 429-2），則逐漸取代了前者，並成為了業界推薦使用的DCP標準。

## 技術規範

DCP根文件夾包含了一系列文件，一些用來存儲音影片內容，另一些則用來存放播放列表。

### 圖像MXF文件

圖像內容可以被存放在不同的卷（reels）中，以對應一個或多個MXF文件。根據所選編碼方式不同，每一個卷以JPEG 2000或MPEG-2編碼來儲存圖像內容。但MPEG-2已不再符合DCI規範，所以JPEG 2000是現在唯一可用的壓縮編碼。

- SMPTE（JPEG 2000）
- 24, 25, 30, 48, 50, 60 幀 @ 2K
- 24, 25, 30 幀 @ 4K
- 24, 48 幀 @ 2K 3D
- MXF Interop （JPEG 2000）（過時）
- 24, 48 幀 @ 2K (也可以25幀編碼，但不保證兼容性)
- 24 幀 @ 4K
- 24 幀 @ 2K 3D
- MXF Interop（MPEG-2）（過時）
- 23.976, 24 幀 @ 1920 × 1080
- 最大幀大小 2K - 2048 × 1080 4K - 4096 × 2160 常見制式有：
- SMPTE（JPEG 2000）
- 遮幅（Flat），1998 × 1080 或 3996 × 2160，寬高比 1.85:1
- 寬幅（Scope），2048 × 858 或 4096 × 1716，寬高比約 2.39:1
- HDTV，1920 × 1080 或 3840 × 2160，寬高比 16:9 ≈ 1.78:1（DCI規範中無明確定義，但符合DCI規範 第8.4.3.2節中的規定）
- 全幅（Full，Full Container），2048 × 1080 或 4096 × 2160，寬高比約 1.9:1 （不被影院廣泛接受）
- MXF Interop（MPEG-2）（過時）
- 全幅（Full Frame），1920 × 1080
- 每像素每色12位色深（共36位）
- CIE 1931色彩空間（XYZ'色彩空間，伽馬值2.6編碼）
- 最大比特率 250 Mbit/s （24幀時每幀1.3MB）

### 聲音MXF文件

聲音內容也按照其所對應的圖像內容被存儲在不同的卷中。在有多個不同語言音軌的情況下，不同的語言音軌被存儲在不同的卷中來對應不同的語言。

- 採樣率 48,000 Hz 或 96,000 Hz
- 採樣位深度 24位
- 線性映射（無壓縮）
- 最多16個獨立聲道

### 資產映射文件（Assest map file）

DCP中所有文件的列表。（XML格式）

### 播放列表（CPL）文件的組成

規定了放映時的文件播放順序，以XML格式存儲。每個音影片卷都通過UUID來區分。在下面的例子裡，一個卷同時包括了圖像和聲音。

```xml
<Reel>
  <Id>urn:uuid:632437bc-73f9-49ca-b687-fdb3f98f430c</Id>
  <AssetList>
    <MainPicture>
      <Id>urn:uuid:46afe8a3-50be-4986-b9c8-34f4ba69572f</Id>
      <EditRate>24 1</EditRate>
      <IntrinsicDuration>340</IntrinsicDuration>
      <EntryPoint>0</EntryPoint>
      <Duration>340</Duration>
      <FrameRate>24 1</FrameRate>
      <ScreenAspectRatio>2048 858</ScreenAspectRatio>
    </MainPicture>
    <MainSound>
      <Id>urn:uuid:1fce0915-f8c7-48a7-b023-36e204a66ed1</Id>
      <EditRate>24 1</EditRate>
      <IntrinsicDuration>340</IntrinsicDuration>
      <EntryPoint>0</EntryPoint>
      <Duration>340</Duration>
    </MainSound>
  </AssetList>
</Reel>
```

### 封裝清單（Packing list file）或封裝密鑰列表（Package key list，PKL）

一個成分里的所有文件都會被計算出哈希值，而這些哈希值就會以XML格式被存儲在該文件中。該文件通常被放映伺服器用來驗證DCP文件是否損壞或被篡改。以下是一個MXF影像卷部分的PKL例子，通過`<asset>`標籤來標記：

```xml
<Asset>
  <Id>urn:uuid:46afe8a3-50be-4986-b9c8-34f4ba69572f</Id>
  <Hash>iqZ3X7TdAjAqniOxT2/hj66VCUU=</Hash>
  <Size>210598692</Size>
  <Type>application/x-smpte-mxf;asdcpKind=Picture</Type>
</Asset>
```

這裡的哈希值是SHA-1演算法計算後再經Base64編碼得到的，可以通過下列命令計算：

```
openssl sha1 -binary "FILE_NAME" | openssl base64
```

### 驅動器索引文件

一個DCP可能會被存儲在不同的驅動器上（例如多塊硬碟），該文件`VOLINDEX`被用來標記一個驅動器的序號。

= 3D DCP =

DCP格式也可以被用來存儲立體（3D）內容，用來放映3D電影。這時，每秒鐘會有48幀，24幀是左眼，24幀是右眼。

取決於放映系統的不同，左右眼的圖像可能會在48幀下交替播放（主動快門3D），或者是同時以24幀播放（如IMAX 3D），這時則需要佩戴偏光式3D眼睛。

由於DCP的最大比特率是250 Mbit/s，播放3D影片時一側眼睛的最大比特率就下降到了125 Mbit/s。儘管如此，這所帶來的畫質損失通常肉眼是無法注意到的。

= DCP的製作 =

大多數電影製作者和發行商利用數字電影編碼設備來製作DCP，並完成相應的質檢工作。這些設備通常遵循嚴格的DCI技術規範來確保製作的DCP兼容市面上所有的數字影院放映設備。對於更大的電影製作商，在DCP製作前，通常會先製作數字電影發行母版（DCDM）。

DCDM是電影後期製作中，排在DCP製作之前的一個步驟。這時的影片圖像為XYZ TIFF格式，而且音像均未經過MXF封裝。DCDM可以直接被編碼為DCP，這使得影片存檔和製作多語言電影版本變得格外方便。對於較小的電影製作商，製作DCDM這一步通常被省略，DCP則直接從數字源母版（DSM）編碼得到。由於DSM可能有多種格式和色彩空間，因此在編碼時需要格外注意色彩空間轉換的問題，有時甚至需要使用來對不同版本的DCP和實體賽璐珞膠捲進行色彩一致性調整，以獲得統一的觀影體驗。

要求較低的DCP從HDCAM SR等磁帶格式中編碼而來。對DCP的質檢工作在經過校準的影院中進行，通常由調色師、導演、混音師等人員參加，用來確保成品DCP的圖像與聲音正確。

諸如OpenDCP，DCP-o-matic的軟體使得在個人電腦上自行製作DCP成為可能。