发表回复  发表主题 
DVD製作隨筆[BC大原创]
作者 内容
lsj8610
Member
***


发贴数: 177
组别: Registered
注册: Oct 2009
状态: 离线
名誉: 0
post: #1
DVD製作隨筆[BC大原创]

字幕的設定
很多時都會有人問怎樣去設定預設的字幕,使我們播放DVD時不必再作設定,便可以播放我們需要的字幕。我看過一些教導在IfoEdit設定的方法,但從我的經驗,只簡單地 設定一些旗號未必可以解決問題…
每片DVD都有不同的方法去設定預設的字幕和聲軌,最普通的就是顯示第一個字幕。有些會測試DVD機的語言去設定,亦有些有其他的方法去做…
要知道DVD是怎樣設定字幕的,應從程式本身著手,而PgcEdit就是最理想的處理程式。以下是一些實際例子,是我一些操作的記錄,希望對大家有幫助。
通常用PgcEdit打開DVD後,便要進入Trace Mode(按右上角的藍色圖形),最好把Watch同時顯示,以便監察register使用的情況。而左下角你可以看到現在的字幕(SubPic)和聲軌(Audio)的 狀況。

1. Le Samourai (1967)
這是一部法國電影,由亞龍狄龍主演。原DVD只有英文字幕。加了中文字幕後,便有兩個字幕,0是英文,1是中文。
用Step來逐行觀察,很快便到了這一行…

(SetSTN) Set Sub-picture stream = 0, on

這裏設定預設的字幕是0(第一個),狀態是on(開啟)。
看來這個很容易解決,只要把0改為1便把預設字幕改成英文。

(SetSTN) Set Sub-picture stream = 1, on

更改後,重新開啟DVD,然後在Trace Mode下按Next PB正至到主選單,跟著選擇播放主電影,但virtual player卻顯示影片正顯示英文字幕,於是便要再次找尋還有什麼地方出現問題…

再由頭逐行檢視,果然有新發現…
在較後的地方有這一行…

(SetSTN) Set Audio stream = gprm(11) ; Set Sub-picture stream = gprm(10)

而觀察gprm(10)和gprm(11),正好是64和0…
於是重新載入DVD,找尋那裏設定這兩個數值…

Set gprm(11) =(mov) 0
Set gprm(10) =(mov) 64

把64改成65,再重新測試,預設的中文字幕便跑出來了!
當然我們應先儲存DVD後用播放器正式測試。

2. Finding Forrester (2000)
原DVD有兩個字幕(0-En、1-Fr),我加入的字幕是2-Zh。
在很前的地方找到這些設定…

********** pre commands:
1 (SetSTN) Set Sub-picture stream = 2, on (這行是我加入的)
2 Set gprm(9) =(mov) 1
3 if ( gprm(9) == 1 ) then { Goto line 6 }
4 Set gprm(14) =(mov) 43690
5 (JumpSS) Jump to VMGM PGC 1
6 if ( gprm(12) == 1 ) then { Goto line 8 }
7 Set gprm(12) =(mov) 0
8 Set gprm(1) =(mov) sprm(5:Title number in VTS)
9 Set gprm(1) &=(and) 127
10 Set gprm(2) =(mov) sprm(2:Sub-picture stream number)
11 Set gprm(2) &=(and) 127
12 Set gprm(3) =(mov) sprm(2:Sub-picture stream number)
13 Set gprm(3) &=(and) 63
14 Set gprm(4) =(mov) sprm(1:Audio stream number)
15 Set gprm(4) &=(and) 15
16 Set gprm(5) =(mov) sprm(3:Angle number)
17 Set gprm(5) &=(and) 15

第10行和第12行都和字幕設定有關,它們都把播放器內的字幕軌的資料(sprm(2))記錄,所以第一行便把(sprm(2)作出適當的設定,所以如不作任何其他選擇D VD便會顯示中文字幕了。
只要選擇正確,作出些少便可以了。

3. Thank You For Smoking (2006)
原片有(0-En、1-Es)音軌和(0-En、1- Es、2-Fr)字幕。
1 Set gprm(8) =(mov) 1
2 Set gprm(12) =(mov) 0
3 Set gprm(13) =(mov) 0
4 Set gprm(0) =(mov) sprm(16:Preferred audio language)
5 Set gprm(1) =(mov) sprm(18:Preferred sub-picture language)
6 if ( gprm(1) == 25971 ("es") ) then { Set gprm(13) =(mov) 65 }
7 if ( gprm(1) == 26226 ("fr") ) then { Set gprm(13) =(mov) 66 }
8 if ( gprm(0) == 25971 ("es") ) then { Set gprm(12) =(mov) 1 }
這裏用了gprm(12)和gprm(13)來記錄音軌和字幕的數值。第二和第三行把它們設定為0,即英文音軌和字幕。
第四行從DVD播放器尋找音軌,第五行尋找字幕。
第六行如果是西班牙語便將gprm(13)設為65(西班牙字幕)。
第七行如果是法語便將gprm(13)設為66(法文字幕)。
第八行如果是西班牙語便將gprm(12)設為1(西班牙語)。
至於第九行,由於沒有法語音軌,故只再一次去做設法文字幕(和第七行一樣,可以說是多餘的)。

而到播放主電影,便會遇到這一行來設定音軌和字幕:-
13 (SetSTN) Set Audio Stream = gprm(12) ; Set Sub-picture Stream = gprm(13)

這個情況下,我們可以這樣去修改程式。
if ( gprm(1) == 31336 ("zh") ) then { Set gprm(13) =(mov) 67 }
將這行加到第七行後,以便測試播放器為中文時設定中文字幕。
若果我們不想要這些自動功能,也可索性直接改為
Set gprm(13) =(mov) 67

4. The Return of the Pink Panther (1975)
和上例一樣,英文字幕是0,西班牙字幕是1,法文字幕是2,而我們加入的中文字幕為3。因此設定時sprm(2)應為 en = 64, es = 65, fr = 66, zh = 67

這是和語言字幕設定的地方:-
1 Set gprm(3) =(mov) 0
2 Set gprm(6) =(mov) 6
3 (SetSTN) Set Audio stream = 0
4 (SetSTN) Set Sub-picture stream = 0, off
5 Set gprm(0) =(mov) 25971 ("es")
6 if ( gprm(0) == sprm(16:Preferred audio language) ) then { (SetSTN) Set Sub-picture stream = 1, on }
7 Set gprm(0) =(mov) 26226 ("fr")
8 if ( gprm(0) == sprm(16:Preferred audio language) ) then { (SetSTN) Set Sub-picture stream = 2, on }

首先第四行設定沒有字幕。第五行將西班牙的code放進gprm(0),然後第六行和sprm(16:Preferred audio language) )比較,如果是便設定為西班牙字幕。
第七和第八行用來設定法文的。所以我們應加入兩行來設定中文,Sub-picture stream = 3。

當設定字幕後,程式會從內部字幕儲存sprm(2)抽取存於 gprm(2)
5 Set gprm(2) =(mov) sprm(2:Sub-picture stream number)
6 Set gprm(2) &=(and) 67

在主電影播放時,會根據 gprm(2) (mask 67, 使數值不大於67)的數值而設定字幕
8 Set gprm(2) &=(and) 67
9 (SetSTN) Set Sub-picture stream = gprm(2)

所以在修改這些程式時,要留意這些mask,如果我們的中文是用68的話,和67 and 後,便會變成64了。

5. Four Weddings and a Funeral (1994)
這個DVD一開始便有三個語文選擇(en、fr、es),以後便會只出現那個語言的選單。當選了英文後
1 Set gprm(15) =(mov) 0
2 Set gprm(5) =(mov) 0
3 Set gprm(13) =(mov) 0
4 Set gprm(12) =(mov) 0
5 (SetSTN) Set Audio stream = 0 ; Set Sub-picture stream = 0, off
當然我們最關心便是第五行,設定英文語言和關閉了英文字幕。只要修改這一行,便可以出現我們要顯示的字幕了。
不過要留意,當DVD播放完畢,程式另一處會再執行第五行的設定,所以如果要更徹底,便要把那行都一併修改。

善用search功能,找尋SetSTN可以更快地找到可能影響的地方。

6. Men of Honor (2000)
這個應該是R3版本的,不過應該給人修改過,包含(0-Zh)(粵語)和(1-En)的字幕(每個字幕有兩組,給wide和letterbox用),其他國語,韓語和泰語字幕都被移除了。那DVD有很多extras的片段,而差不多每一個都有這個指 令
(SetSTN) Set Sub-picture stream = 1, off
經測試,如果不作字幕選擇而直接播放,程式便會選了英文字幕(但沒開啟)。
在字幕選單的第一選項是英語,第二是粵語,第三是韓語,第四是國語,而最後是泰語。所以最後決定重新安排字幕位置為(0- En)、(1- Zh) (粵語)和(2- Zh)國語(重射手網找的idx+sub檔)。由於下載的字幕只有letterbox格式,參考原來的字幕,便將那son字幕(由SubResync把idx+sub檔轉 的)內的字幕位置由
Display_Area (0 2 719 479) 改為Display_Area (0 8 719 479)(即向下6行),便可以建立兩組字幕給國語了。並將那些設定字幕的行都通通改為on。

7. G.I. Blues (1960)
這個DVD本身只有一個英文字幕,使用了字幕0-ws和2-lb,而我加的中文字幕用了1-ws和3-lb。Trace不久後看到這些行:-
1 Set gprm(15) =(mov) 99
2 Set gprm(12) =(mov) 1
3 Set gprm(13) =(mov) 0
4 Set gprm(1) =(mov) sprm(18:Preferred sub-picture language)
5 Set gprm(0) =(mov) sprm(16:Preferred audio language)
6 (JumpSS) Jump to VTSM 2, Angle menu (TTN 1)
似乎DVD是參照播影機的設定的,把gprm(1)給字幕作設定。但心裏有個疑問,這個DVD只有一個字幕,為什麼還要這樣做呢?再看下去…
1 Set gprm(0) =(mov) gprm(13)
2 Set gprm(0) |=(or) 64
3 (SetSTN) Set Sub-picture stream = gprm(0)
4 (SetSTN) Set Audio stream = gprm(12) ; Set Sub-picture stream = gprm(13)
5 Set gprm(0) =(mov) 1
6 if ( gprm(7) == gprm(0) ) then { LinkPGCN PGC 1 }
7 (JumpSS) Jump to VMGM PGC 5
原來先前給gprm(0)的設定是沒用的,gprm(13)才是儲存字幕的地方。跟著改用Next PB加快檢視速度,進入Main Menu,然後進入Set Up,選擇英文字幕,然後返回Main Menu,按Play直至到達Title 1(主電影),然後看看gprm(13)的數值,gprm(13)的數值是64。

所以我便把Set gprm(13) =(mov) 0 改為Set gprm(13) =(mov) 65便弄妥了!
照我估計,那些從DVD播放機取的數值是預留給另一些版本(多語言和字幕)用的,而且它的字幕使用了0和2兩個stream,應是留空1和3給另一些字幕的。


最后的回复由09:30 PM 修改于 12-23-2011 lsj8610 .

12-23-2011 09:18 PM
寻找这个用户的所有文章 引述在回复的这则消息
发表回复  发表主题 

这个帖子的回复
DVD製作隨筆[BC大原创] - lsj8610 - 12-23-2011 09:18 PM

查看帖子的简化版本(方便打印)
发送这个贴子给朋友
订阅这个帖子 | 增加这个帖子到收藏夹

论坛跳转:

返回顶端 | 回到正文 | 简化模式 | Powered by mybb