DVD-Video/MPEG 格式內部
MPEG(運動影像專家組)是一系列用於數字影片的格式規範的名稱。DVD-Video 主要基於 MPEG-2,儘管它也允許 MPEG-1 影片。本書不會深入探討 MPEG 的所有細節;它只涵蓋足夠的知識,以便理解它在 DVD-Video 中的使用方式。
MPEG 檔案中的資訊被分成流:影片影像形成一個流,而音訊音軌儲存在另一個流中。DVD-Video 允許使用多個音訊流,例如,可以用於不同語言的音軌(一次只能播放一個音訊流)。每個流都由一個數字標識,其中不同的範圍分配給不同的流型別。MPEG 還允許使用兩個私有流,其格式在 MPEG 中未進一步定義;DVD-Video 將這些用於各種目的
- MPEG 未定義的額外音訊格式(AC-3、DTS、LPCM)(私有流 1)
- 字幕(私有流 1)
- 選單按鈕、時間顯示資訊(演示控制資訊(PCI),私有流 2)
- 用於快進快退和多角度模式的導航資訊(資料搜尋資訊(DSI),私有流 2)
DVD-Video 光碟有兩種主要型別,對應於世界各地用於模擬影片的主要格式:NTSC 和 PAL。NTSC 是第一個彩色電視系統,由美國開發,並用於北美、日本和少數其他地方。PAL 是一種後來的德國開發,用於歐洲和世界大部分地區。(還有一種由法國開發的廣播格式稱為 SECAM,但用於錄製媒體的格式與 PAL 相同。)
在 NTSC 格式中,每個影片幀為 720*480 畫素,以每秒 29.97 幀的速度顯示。在 PAL 格式中,每個幀為 720*576 畫素,顯示速率為 25fps。幀可以以長寬比 4:3 顯示窄屏畫面,或以 16:9 顯示寬屏畫面。請注意,窄屏畫面和寬屏畫面每幀的畫素數沒有區別;影像只是為了寬屏而被拉伸(這被稱為變形寬屏)。
DVD-Video 中允許的解析度為
- 對於 NTSC:720*480、704*480、352*480 或 352*240
- 對於 PAL:720*576、704*576、352*576 或 352*288
不幸的是,DVD-Video 必須從廣播電視中繼承隔行掃描功能。這意味著每個影片幀被分成兩個場,一個包含奇數掃描線,另一個包含偶數掃描線,它們一個接一個地顯示。
每個流的內容被分成資料包,它們被複用—一個流的資料包緊跟著另一個流的資料包,這兩個流在幾乎相同的時間內被呈現—允許播放器按順序讀取和解碼檔案。你會遇到打包基本流(PES)的術語來表示這種方式。特別是,每個資料包都以一個頭部開頭,頭部包含一個標識程式碼,用於指示資料包的型別,後面跟著一個兩位位元組的欄位,用於指示資料包內容的長度。
還有其他額外的“頭部”,它們具有不同的標識程式碼,用於指定各種其他資訊
- 系統頭部提供有關電影檔案中的流數量的資訊。檔案開頭必須至少有一個這樣的頭部。
- PACK 頭部提供有關解碼電影檔案所需的資料速率的資訊,以及一個高精度時鐘參考(以 27MHz 時鐘為單位)。其中一個頭部的存在指示一個“PACK”的開始,它基本上由頭部加上所有後續的 PES 資料包組成,直到下一個 PACK 頭部。DVD-Video 要求每個 PACK 的大小為 2048 位元組。
大多數影片編解碼器嚴重依賴幀間壓縮和幀內壓縮來減小資料大小。I 幀是單獨壓縮的影片幀,不考慮其他幀。使用的編碼方案類似於 JPEG 壓縮。但是,後續幀很可能看起來相似(想想某物或某人移動到靜止背景中的常見情況);因此,與其將它們單獨壓縮為額外的 I 幀,不如將它們編碼為P 幀,它們是相對於前一個參考幀(可以是 I 幀或 P 幀)的差異,或者編碼為B 幀,它們是相對於前一個和後一個 I 幀或 P 幀的差異。
這樣做的缺點是,如果你試圖從不是檔案開頭的某個任意點開始播放,播放器必須向後搜尋,直到找到一個 I 幀,然後才能開始合理地解碼影片。因此,使用更少的 I 幀可以提高壓縮率,但會犧牲對影片流的快速隨機訪問。DVD-Video 規範要求每 36 個 NTSC 場或每 30 個 PAL 場(即至少每 0.6 秒)至少有一個 I 幀。
從 I 幀開始直到下一個 I 幀之前的最後一個幀(換句話說,包含所有以某種方式依賴於起始 I 幀的幀)的幀序列稱為影像組(GOP)。
如前所述,DVD-Video 預計每 2048 位元組看到一個 PACK 頭部。第一個 PACK 的內容必須是一個 PCI 資料包和一個 DSI 資料包;這被稱為“NAV PACK”。接下來將是其他 PACK,包含影片、音訊或字幕流資料包,按適當的順序排列,但 NAV 資訊必須排在最前面,影片資料包應該包含一個或多個完整的 GOP。NAV 和後面的 PACK(直到下一個 NAV PACK)構成了一個影片物件單元(VOBU),它是解碼器可以處理的最小單元。VOBU 的持續時間必須在 0.4 到 1.0 秒之間。
DVD-Video 定義了超出此範圍的額外分組級別;一個或多個 VOBU 構成了一個單元;一個或多個單元構成了一個程式,一個或多個程式構成了一個程式鏈(PGC)。特定的程式可以在檔案結構中被標識為標題的一部分(PTT),對於普通人來說,這被稱為章節。光碟上的實際標題由一個或多個 PGC 組成,而選單是單個 PGC。
分組的額外意義如下
- 單元是跳轉可以定位到的最小單位。
- 單元可以有一個單一的 VM 指令附加,當單元播放完畢時執行。
- 使用播放器遙控器上的下一個/上一個按鈕跳過是按照程式單位進行的,不一定按照章節進行。
- 只有 PTT(章節)可以是從包含 PGC 外部進行跳轉的目標;對單元和(非章節)程式的跳轉只能從包含 PGC 內部進行。
- PGC 可以有一系列 VM 命令,在播放之前執行,以及另一個在播放結束時執行。PGC 還定義了 16 個條目的顏色表,PGC 中的字幕可以從中選擇 4 個以供顯示。
VMG 中有一個特殊的“首次播放”PGC(FPC),當將光碟放入播放器時自動進入;它沒有 MPEG 資料,但它是這裡執行的命令,負責跳轉到初始選單(如果有),播放所有序言序列等等。
有一些單獨的控制轉移命令,用於透過編號定位 PGC,而不是透過編號定位標題。
選單和標題非常相似;兩者都是(由)PGC 組成,兩者都可以有互動式按鈕。但是,只有標題可以有章節,只有標題可以跨多個 VOB 檔案分割(這限制了選單持續時間的最大長度)。此外,只有標題可以有多個音訊和字幕軌道以供不同語言使用,因為選單已經是特定語言的選單組的一部分。
某些選單可以被標記為條目,可以透過播放器遙控器上的專用按鈕直接呼叫。
在 VMG 中,一個選單可以被標記為標題條目,這意味著它可以透過遙控器上的“頂層選單”按鈕呼叫。
在一個標題集中,每個選單都可以被標記為root、PTT(章節)、audio、subtitle 和 angle;“選單”按鈕會顯示根條目,其他條目則由遙控器上的相應按鈕顯示。