Ads 468x60px

2013年12月21日 星期六

DVD Video 解析,VIDEO_TS.VOB、VIDEO_TS.IFO、VIDEO_TS.BUP 檔案內容

DVD Video 解析,VIDEO_TS.VOB、VIDEO_TS.IFO、VIDEO_TS.BUP 檔案內容
video_ts.vob是DVD的視頻管理器(VMG)部分,video_ts.ifo是相應的ifo文件。
都是DVD上面的東西.VOB、IFO、BUP文件這裡會詳細講解。

打開一張DVD光盤的時候你會看到至少兩個目錄:

22.08.2000 03:20 <DIR> AUDIO_TS
22.08.2000 05:53 <DIR> VIDEO_TS

AUDIO_TS 是用作DVDAudio的(目前我還沒見過這種盤)而VIDEO_TS是用來存儲電影數據的。可能還有其他一些給個人電腦使用的包含了dvd-rom特性的目錄。

讓我們看看VIDEO_TS目錄:

22.08.2000 05:53 <DIR> .
22.08.2000 03:20 <DIR> ..
22.08.2000 05:23 12'288 VIDEO_TS.BUP
22.08.2000 05:23 12'288 VIDEO_TS.IFO
22.08.2000 05:23 333'824 VIDEO_TS.VOB
22.08.2000 05:23 59'392 VTS_01_0.BUP
22.08.2000 05:23 59'392 VTS_01_0.IFO
22.08.2000 05:23 8'192 VTS_01_0.VOB
22.08.2000 05:27 1'073'643'520 VTS_01_1.VOB
22.08.2000 05:31 1'073'631'232 VTS_01_2.VOB
22.08.2000 05:32 104'785'920 VTS_01_3.VOB
22.08.2000 05:32 88'064 VTS_02_0.BUP
22.08.2000 05:32 88'064 VTS_02_0.IFO
22.08.2000 05:32 59'379'712 VTS_02_0.VOB
22.08.2000 05:36 1'073'436'672 VTS_02_1.VOB
22.08.2000 05:40 1'073'549'312 VTS_02_2.VOB
22.08.2000 05:45 1'073'502'208 VTS_02_3.VOB
22.08.2000 05:49 1'073'371'136 VTS_02_4.VOB
22.08.2000 05:53 1'073'555'456 VTS_02_5.VOB
22.08.2000 05:57 810'952'704 VTS_02_6.VOB

你可以看到DVD上有三種文件: .VOB、 .IFO、 .BUP


● VOBs - Video OBjects

VOB文件包括數個混在一起的流:視頻、音頻和字幕。視頻流是MPEG-2格式的,音頻流可以是AC3、Linear PCM、Mpeg2多聲道或者Mpeg1 layer2 雙聲道音頻。AC3基本上是標准了,而MPEG-2多聲道只能在很少的盤上看到。(one example is "Inthe line of fire, PAL edition") 雖然這種格式最初是作為2區(歐洲和日本)的標准格式設計的,但是最終還是放棄了這樣的設計。PCM通常出現在音樂DVD和廉價制作的MP2上。PCM是高質量未壓縮的音頻格式,佔據很大的空間。對於一個全長的,需要多語種的電影來說,它很不合適。AC3的比特率在192和448kbit/s之間。192kbit/s是給雙聲道用的,384-448kbit/s是給5.1環繞立體聲用的。

VOB文件可以包含一個主要的視頻流和數個多角度視頻流,使你可以在觀看的時候切換不同視角。這個功能通常是在回放時用來顯示情節串聯圖板(storyboards)或者一些其他的附加功能。視頻流的最大比特率是9.8mbit。視頻流和音頻流加在一起任何時刻都要小於10mbit/s。最多可以加入9個不同的音軌,使你可以在回放的時候切換(這個功能可以在制作DVD的時候屏蔽掉)。最多可以有32個字幕流。字幕是4色的位圖,覆蓋到視頻流上,而不是直接編碼到視頻流內。

讓我們用vStrip來仔細看看VOB文件:

Scanning for stream id's, press control-c to quit...
Found 0xBF = Private 2 [@LBA 0]
Found VOB-ID: 01/CELL-ID: 01 [@LBA 0]
Encountered encrypted sector, attempting key recovery [@LBA 1]
Deduced key: 0xC00374C61C (2/2 vkey(s))
Found 0xE0 = Video 0 [PTS 0:00:00.290 @LBA 1]
Width = 720
Height = 480
Aspect-ratio = [3] 16:9 display
Frame-rate = [4] 29.97 (30000/1001) fps
Found 0xBD = Private 1, sub 0x80 [PTS 0:00:00.224 @LBA 99]
Found 0xBD = Private 1, sub 0x81 [PTS 0:00:00.224 @LBA 100]
Found 0xBD = Private 1, sub 0x82 [PTS 0:00:00.224 @LBA 101]
Found 0xBD = Private 1, sub 0x83 [PTS 0:00:00.224 @LBA 102]
Found 0xBE = Padding [@LBA 117]
Found 0xBD = Private 1, sub 0x20 [PTS 0:00:00.724 @LBA 169]
Found 0xBD = Private 1, sub 0x21 [PTS 0:00:00.724 @LBA 170]
Found VOB-ID: 02/CELL-ID: 01 [@LBA 378]

如前所述通常只有一個視頻流,它的ID永遠是0xE0。PTS是Program Time Stamp程序時間標志,在VOB的開始部分描述一個流在什麼時間開始。你可以看到分辨率是720x480,這是一張NTSC制式的DVD。幀率是29.97。DAR是16:9。有四個音頻流:0x80 - 0x83。注意這都是AC3音頻流。所有的AC3音頻流都在 0xBD 數據流,子數據流0x8x中。DTS流往往ID是 0xBD 0x88 或 0xBD 0x89。PCM流在 0xBD 0xAx,從0xA0到0xA9。MP2在0xCx。這裡有一個PCM和MP2流的例子:

Found 0xBD = Private 1, sub 0xA0 [PTS 0:11:01.479 @LBA 4]
Found 0xC0 = Audio 0 [PTS 0:00:00.440 @LBA 25]

這裡還有兩個子數據流,0x20 和 0x21。所有的字幕流也在0xBD。

另外還有一些填充流(0xBE)但我們不用去關心他們。

你可能注意到VOB ID和Cell(單元) ID。一個Cell是DVD上最小的單位。一張簡單的DVD上可能只有一個章節但是大多數DVD都要復雜得多。如果你對Cell感興趣我建議你學著使用Scenarist,這樣你才能真正了解他們的工作方法。我不知道VOB ID是如何建立的,也不知道他們對應於什麼結構,通常每一個單位都有他自己的VOB ID,比如說電影本身和電影預告。在多角度和多分支盤片中每個角度都有自己的VOB ID。


● IFOs - InFOrmation

IFO文件為播放器提供十分重要的導航信息。比如一個章節從什麼地方開始,一個特定的音頻流或者字幕流在什麼地方,等等。這就是為什麼我們只能用可以讀取這種文件的Ripper軟件來提取部分電影(比如說一個章節)。

vStrip可以做到這一點。我們來看看使用ifo處理的時候的輸出。(命令舉例:vStrip f:\video_ts\vts_02_1.vob -if:\video_ts\vts_02_0.ifo)

Parsing "f:\video_ts\vts_02_0.ifo"...
0. Length: 02:07:15:24 in 15 cell(s).
1. Length: 00:00:01:01 in 1 cell(s).
Scanning for stream id's, press control-c to quit...

你可以看到這裡有兩個PGC(ProGram Chains,故事鏈)。PGC 0展示的是電影本身,而PGC 1是最開始的制片商Logo。這個結構可能非常復雜,不過很好理解。多角度電影有很多相同長度的PGC,而多分支電影有很多不同長度的PGC。為了選擇正確的電影版本你需要選擇正確的PGC。PGC是對應於你播放器裡面顯示的標題數字的。舉個例子:Matrix - follow the white rabbit feature = 標題 6或者說PGC 5,因為pc內部是從0開始計數的。

最後一點,IFO文件是不加密的。


● BUPs - BackUP

BUP文件是IFO的部分備份,也是不加密的。

仔細看看

我們現在已經了解了各種文件格式,讓我們再看看實例:

22.08.2000 05:23 12'288 VIDEO_TS.BUP
22.08.2000 05:23 12'288 VIDEO_TS.IFO
22.08.2000 05:23 333'824 VIDEO_TS.VOB
22.08.2000 05:23 59'392 VTS_01_0.BUP
22.08.2000 05:23 59'392 VTS_01_0.IFO
22.08.2000 05:23 8'192 VTS_01_0.VOB
22.08.2000 05:27 1'073'643'520 VTS_01_1.VOB
22.08.2000 05:31 1'073'631'232 VTS_01_2.VOB
22.08.2000 05:32 104'785'920 VTS_01_3.VOB
22.08.2000 05:32 88'064 VTS_02_0.BUP
22.08.2000 05:32 88'064 VTS_02_0.IFO
22.08.2000 05:32 59'379'712 VTS_02_0.VOB
22.08.2000 05:36 1'073'436'672 VTS_02_1.VOB
22.08.2000 05:40 1'073'549'312 VTS_02_2.VOB
22.08.2000 05:45 1'073'502'208 VTS_02_3.VOB
22.08.2000 05:49 1'073'371'136 VTS_02_4.VOB
22.08.2000 05:53 1'073'555'456 VTS_02_5.VOB
22.08.2000 05:57 810'952'704 VTS_02_6.VOB

VIDEO_TS.*是最先播放的項目。這是在制作時被設定當一張盤被插進播放器時最先播放的東西。通常這些是版權聲明,不過也會有一個選擇菜單語言、電影預告之類的菜單。video_ts.vob包含視頻和音頻,video_ts.ifo包含導航信息,video_ts.bup是video_ts.ifo的備份。

這裡還有兩個ifo文件: vts_01_0.ifo 和 vts_02_0.ifo。文件名中前兩個數字表示標題數,很顯然最多只能有99個標題(不存在以vts_00_開頭的這類文件) 。每個標題下最多可以有10個VOB文件,其中vts_xx_0.vob也就是第一個VOB文件包含那個標題的菜單。每個標題至少有兩個VOB,一個是菜單另一個包括主要功能,還有一個IFO一個BUP。

我們的例子中標題1包含幕後花絮和菜單,標題2包含影片和菜單。

你可以看到,一個VOB文件最大是1GB。雖然這些文件必須小於或等於這個尺寸,但的確是有一些比這個尺寸大,這種VOB文件是不能在電腦上播放的。

最後一個問題:如何在盤上確定主要影片的位置?最大的IFO文件提供了title的數量,接著你需要提取除了菜單VOB以外的所有的VOB文件(當然除非你想要菜單)。大部分Ripper(如果他們不處理IFO文件)都是以這個方法選擇所要復制的主要影片和IFO的。

深入VOB文件

DVD視頻內容被分為titles(影片或唱片)和分塊的titles(章節或歌曲).Titles由cells構成,這些cells 被一個或多個的節目鏈(PGCs)連接起來。cell是dvd上最小的視頻單元。有時一個cell相當於一個章節,但是這樣的情況不常出現。Cells時常由VOB IDs組織在一起。例如華納兄弟(Warner Brothers)電影中每一個layer都有一個VOB ID,對於多視角影片(例如在每一個分支點每一個視角都有自己的VOB ID,當這些視角重新匯集,再命名下一個VOB ID),對於無縫分支影片,影片中由不同回放選項控制的不同部分有不同的VOB ID。

引用 鄒學鋒

0 意見:

張貼留言

Related Posts Plugin for WordPress, Blogger...
 
Blogger Templates