個人資料
正文

影片字幕同步指南 (轉貼)

(2007-06-21 16:17:19) 下一個
影片字幕同步指南

by fr0do 01/26/2001

有時你從WWW上下載了一些字幕,卻發現他們跟你的影片不同步甚至根本無法被你的播放器識別。
這份指南就是來幫助你對付這些糟糕的字幕的,同時它也可用於你自己rip的字幕,如果你發現它們由於某種原因與你的影片不同步的話。

先講一下用到的軟件:能夠完全操控字幕的軟件基本上隻有兩個:Frodo寫的SubAdjuster(v1.41)和Psyche寫的SubAdjust(v1.55)。

由於前者是我自己寫的,在這篇指南裏我就把它當做默認的工具了,當然你也可以用SubAdjust 1.51完成相同的工作,方法基本相同。

>> 閱讀更多
提取字幕

第一步:將字幕轉化為所需格式

你得到了一個字幕文件,卻不知道它是什麽格式怎麽辦?一般來說,字幕主要有五種格式(如果遺漏了你最喜歡的格式請見諒:-):

  • SubRip
  • SubViewer (1 & 2.0)
  • MicroDVD
  • SubStationAlpha
  • Sami


我最喜歡的格式是MicroDVD,因為它不僅精巧,強大(甚至可以做斜體字),易用,而且MicroDVD播放器也是播放字幕的最佳選擇。

我會集中講述MicroDVD,同時也會提供一些SubViewer的使用技巧,這兩個是最常使用的工具。

怎樣確定你得到的是何種格式的字幕呢(請看例子)?通常不能完全相信文件的格式說 明,需要自己查看一下文件的內容:

MicroDVD*.*一個簡潔的文本文件,在每行的開頭用{}標記起始幀和中止幀,換行用|標記
SubViewer*.SUB文件開頭是影片的一些信息。每句字幕均給出起始和中止時間。
SubViewer 2.0*.SUB與舊的SubViewer格式有所不同,每句字幕寫在同一行,換行用[br]標記
SubRip*.SRT給出每句字幕的序號,中止時間和開始時間,精確到毫秒
SubStationAlpha*.SSA格式化的文本文件,每句字幕均以'Dialogue'開頭
Sami*.SMI比較少見的HTML格式文件,每句字幕均給出起始幀數

現在來找出你的影片的實際幀速率:
你可以通過VirtualDub(在AVI-info選項裏,十分精確),SubAdjust(精確)或者media player(在preference菜單裏選擇video rendering,較不精確)取得。
方便敘述起見,在下文中,我們假定你的影片的幀速率均為25fps.

將字幕文件轉化為MicroDVD格式:
如果從SubViewer格式轉化,你可以從命令行運行SubAdjuster

SUB -R25 -CONV

參數 -R 指定你的AVI影片的幀速率,這個值的正確性非常重要,否則你會在後麵的工作中花很多精力來修正字幕。

你也可以用SubAdjust來進行其他格式間的轉化,如果真的需要的話。

完成上述步驟後你應該運行

SUB -FIX

來消除一些提取字幕過程中的小錯誤比如拚寫錯誤(I's而不是l's),空格錯誤(字符間有空格)等等……

(BTW:你可以用批處理文件FIX.BAT來一步完成轉化和修正,命令示例FIX )

這樣你就創建了一個完美的(?)字幕,采用MicroDVD格式並且符合你的影片的幀速率。

第二步:修正糟糕透頂的字幕

當你得到的字幕不是SubViewer或SubRip的格式而是MicroDVD格式,而且幀速率和你的影片不同的時候,你該怎麽辦?
看上去一切都糟糕透了…

基本上來說你有兩種選擇:

  • 你可以直接進行第三步操作,嚐試手動改變幀速率和字幕的延時直到結果令人滿意(建議隻在字幕稍有偏差時使用)
  • 同時也可利用1.4版以上的SubAdjuster進行自動計算和同步處理(這種方法適用於字幕的時間偏差十分嚴重或者你不想手動完成煩瑣的修正過程的時候)

如果你決定使用第二種方法,請按以下步驟來:

  1. 打開字幕文件(MicroDVD格式)看一下第一句字幕(並不要求一定是第一句但是這樣通常最精確)。
    記下它的起始幀數,比如:

    {1025}{1110}The Age of Gods was closing.|Eternity had come to an end.

    開始的幀數是1025.

  2. 查看文件裏最後一句字幕(同樣也不要求一定是最後一句……)並記下起始幀數

    {171740}{171842}Lay down your head upon my breast,|and go to sleep, my love.

    幀數為 171740.

  3. 然後開始觀看影片,直到第一句字幕應該出現的確切時刻(當然應該與字幕文件裏 這一句的內容相同)
    記下盡量確切的秒數,比如120.5 秒。

  4. 再觀看影片的結尾,直到最後一句字幕(當然也要與字幕文件裏的相同)應該出現的地方。
    記下確切的秒數,比如91分鍾40秒=5500 秒。

  5. 檢查你的影片的確切的幀速率。例如你可以借助於VirtualDub。隻需打開AVI文件,並查看file菜單下的信息
    例如 這是一部25fps的PAL製式的影片。


  6. 現在萬事具備,隻需運行如下命令:

    SUB -1F1025 -2F171740 -1T120.5 -2T5500 -R25 -SYNCH

    這些參數分別是:
    -1F文件中第一句字幕出現的幀數(這裏是1025)
    -2F文件中最後一句字幕出現的幀數(這裏是171740)
    -1T 第一句字幕在影片中應該出現的秒數 (這裏是 120.5)
    -2T 最後一句字幕在影片中應該出現的秒數(這裏是5500)
    -R  AVI文件的確切幀速率(這裏是25)

    這樣就可以生成與你的影片同步的字幕了。

如果你發現仍然有一些微小的不同步存在,你可以繼續第八步的操作。

如果仍然有大量字幕不同步,那麽可能是你的參數值設錯了。重新找出確切的值。

如果你確認所有參數都正確給出,但是字幕仍然在某些地方不正常(有時提前 - 有時落後),那麽意味著你的影片和字幕並不相配,因為某些段落被刪節了,可能是影片,也可能是字幕。這樣的話,就很難修正了。
但是並不是不可能的:這意味著你必須先找出被刪節的部分然後從原始的(不是修改過的)字幕文件中刪除它們,然後重複第二步。同時你可以參考第九步,獲得一些有用的提示。

在這種情形下,第三步中的同步過程也很有用,可以容易地找到被刪節的段落。

第三步:手動轉換幀速率(僅針對對MicroDVD格式的字幕)

這兒需要點小技巧,因為幀速率不能從MicroDVD格式的文件中得到確切值,所以我們要加以估算並舍入到最接近的常用幀速率。

一個比較好的估算可按以下步驟進行:

檢查影片的長度,不妨設片長約為102分鍾,然後減去影片開頭第一句對白出現前的時間(通常是兩分鍾)和影片結尾最後一句對白後的時間(大約是5分鍾)。於是我們估算的結果為102-2-5=95分鍾=5700秒。(當然如果你願意可以真正檢查以下第一句和最後一句之間的時間以獲得精確到99%的幀速率)。

現在我們來檢查一下字幕文件:

第一行(應該與第一句對白相同)示例如下:

{1025}{1110}The Age of Gods was closing.|Eternity had come to an end.

最後一行對白(不是指版權信息之類的文字)

{171740}{171842}Lay down your head upon my breast,|and go to sleep, my love.

所以幀數之差為171740-1025=170715

現在我們可以計算一下大概的幀速率:170715 幀 / 5700 秒 = 29.95 fps

很好,這很接近NTSC製式29.97的幀速率,因此我們假設這就是他們創建字幕時使用的的幀速率。
現在要做的是創建一個具有新的幀速率的新文件,使用SubAdjust,執行以下命令:

SUB -O29.97 -N25

這將創建一個幀速率為25的新文件,正是我們想需要的。(參數-N表示新的幀速率 ,參數-O代表舊的幀速率)。其它常用的幀速率為:

  • 23.976 (FILM)
  • 24
  • 25 (PAL)
  • 29.97 (NTSC)
  • 30

但是請謹記:可能幀速率已經在字幕文件中被修正隻是有點延遲 - 那麽最好不要去碰它,保持原有的值不變。例如:
如果你計算出幀速率為30但是你的影片幀速率為29.97那麽你應該先看看幀速率是否已經適合你的影片。在這種情況下接著做第四到第六步,看看是不是每句字幕都已經同步了。

第四步:計算字幕延遲時間

打開影片,等到第一句台詞出現,記下第一句字幕應該出現的時間,不妨設為32秒。

停止播放影片,查看一下字幕文件。第一句字幕應該和你在影片中聽到的相同查看一下時間標記(如果是SubViewer 格式)
Have a look at the timestamp (if it's SubViewer format)

00:00:41.00,00:00:44.40
The Age of Gods was closing.[br]Eternity had come to an end.

或者幀數(如果是MicroDVD格式)

{1025}{1110}The Age of Gods was closing.|Eternity had come to an end.

在SubViewer格式中很容易直接看出延遲長短來因為每個時間標記都是用如下格式給出的:

小時:分鍾:秒.百分秒

所以你可以直接看出在此例中延遲大約是9秒。在MicroDVD格式中你必須從幀速率中計算出時間來:

1025幀被25幀每秒除(在此例中)=41秒。

第五步:把第一句字幕調整到正確的位置

到了使用工具將字幕移位的時候了。如果你使用MicroDVD格式你可以使用一下命令:

SUB -S-9 -R25

意思是你將字幕移動-9秒(讓字幕提前9秒鍾出現)。
或者你可以給出確切的幀數(9秒×25fps=225幀):

SUB -225

如果你使用SubViewer格式,那麽你可以使用SubAdjust工具來調整。

第六步:微調第一句字幕

現在可以打開影片看看調整後的字幕了。將影片拖到第一句字幕出現的地方看它是否已經正常。
如果效果仍然不夠好(通常第一次嚐試不能達到100%的準確)就再將字幕朝需要的方向進行細微的調整(意思是如果字幕太晚則使用負值,字幕太早則使用正值)。

例如將字幕再移動10幀

SUB -235

重複此項操作直到字幕令人滿意。

第七步:調整幀速率

現在第一句字幕已經正常,但是隨著影片的播放越來越多的字幕再次出現時間上的偏差。現在該怎麽辦?

原因在於影片的幀速率並不嚴格與字幕相同。

你隻需跳轉到影片和字幕出現約一秒鍾偏差的地方(當然你可以選擇其他延遲時間,隻要你覺的合適)記下時間。
不妨設這個時間是大約15分鍾=900秒

現在讓我們創建一個新文件:
在900秒的地方相差了一秒,如果字幕提前了,就把900當做舊的幀數,901(+1秒)當做新的幀數,反之落後的話,就用899(-1秒):

SUB -O900 -N901

好的,用你新創建的文件作字幕重新觀看影片,應該大有改善,盡管還不完美,尤其是在影片的結尾處。
讓我們再對它進行進一步的微調。

第八步:微調,微調,再微調……

煩人的部分來了,你必須不斷的嚐試調整各幀重新計算幀速率知道結果令你滿意為止。

首先要再次檢查第一句字幕是否仍然和影片同步。如果不是(這有可能發生,第七步中重新計算幀速率會引起很大的改變)那麽你就必須重複第六步,但是此時使用你在第七步中創建的最新文件並且輕微調整幀數,比如10幀

SUB 10

重複此步驟直到結果令人滿意。

接著要做的就是再次檢查字幕在什麽時候又出現了一秒鍾的偏差。不妨設這個時間是大約一個小時=3600秒,字幕落後畫麵一秒。那麽就用如下命令創建一個新文件:

SUB -O3600 -N3599

再次檢查微調直到你滿意為止(別忘了你也可以使用分數秒,因此可能用3599.23能夠得到最佳效果……)

如果你還是覺得不夠滿意,那麽重複第六步 - 微調延遲時間然後是幀速率直到你心滿意足或者你疲倦到以頭鏘鍵盤的程度。

放輕鬆點:隻要你在此方麵有一點經驗,最壞的情況下也隻需要半個小時來修複一個極度糟糕的字幕。我通常隻用不到10分鍾就可以修複一個字幕。如果是我自己rip的字幕,那麽轉化和糾錯後基本上不用再作進一步調整,至多修正一下時間的延遲(比如開頭有個預告片,但在vob文件中被三剪掉了)。

第9步:字幕忽然與影片失去同步

怎麽回事:本來與影片配合的很好的字幕突然失去同步,或者突然多了許多不必要的部分?

原因在於影片在審核的過程中被剪掉了幾幕。因此在字幕(從另一個版本的影片中rip的)中或者你的影片中有幾幕(或一幕)被刪除了(迄今為止我隻碰到過一次)。

因此找出被剪掉的片斷的確切時間並記下來。
如果字幕有多餘部分(或者在不需要字幕的時候,字幕有個很大的中斷)你可以使用如下命令(比方說在35分鍾的地方被剪掉了10秒長的片斷,影片的幀速率為25):

SUB 52500 52750 -CUT

來從文件中切除那些文字。第一個值(52500)是起始幀(35分鍾×60秒每分×25fps)第二個值是中止幀(52500+10秒×25fps)。

如果是字幕缺失了一部分,當然沒有辦法把它們找回來了,但是你可以把剩餘的字幕重新調整同步。

方法是在被剪掉的片斷處分割字幕文件然後調整第二個文件直到同步(找出字幕和對白的時間差然後據此調整字幕)。
接著就可以把字幕文件重新合並了。

結束語

在我編寫這份指南的時候,我注意到為了得到一個完美的字幕,我們需要完成大量的工作,你會不會懷疑,這麽辛苦值得嗎?
當然這取決於字幕對你的重要性,在我看來字幕可以使影片增色不少。即使你很幸運(?),影片是用你的母語配的音,你可能不需要字幕就能看懂,但是這是學好一門語言的好方法之一。坦率地說 - 配音真的能夠改善影片的品質嗎?我想觀看原始語種的影片可以讓你從影片中得到更多(當然你的外語不能太爛)。
畢竟製作字幕並不是想像中的那麽漫長的過程,越往後製作速度會越快(一個原因是SubRip不斷增加新的特性,另一方麵你的經驗也在逐漸積累。因此盡管初看上去這是個很複雜的工作,但你應該去試一試。

各種字幕格式示例:

隻給出典型的幾行。

MicroDVD:

{1025}{1110}The Age of Gods was closing.|Eternity had come to an end.
{1375}{1460}The heavens shook as the armies|of Falis, God of Light...

SubRip:

1 00:02:26,407 --> 00:02:31,356
Detta handlar om min storebrors
kriminella beteende och foersvinnade.

2 00:02:31,567 --> 00:02:37,164
Vi talar inte laengre om Wade. Det aer
som om han aldrig hade existerat.

SubViewer:

[INFORMATION]
[TITLE]xxxxxxxxxx
[AUTHOR]xxxxxxxx
[SOURCE]xxxxxxxxxxxxxxxx
[FILEPATH]
[DELAY]0
[COMMENT]
[END INFORMATION]
[SUBTITLE]
[COLF]&HFFFFFF,[STYLE]bd,[SIZE]18,[FONT]Arial
00:00:41.00,00:00:44.40
The Age of Gods was closing.
Eternity had come to an end.

00:00:55.00,00:00:58.40
The heavens shook as the armies
of Falis, God of Light...

SubViewer 2.0:

[INFORMATION]
[TITLE]xxxxxxxxxx
[AUTHOR]xxxxxxxxxx
[SOURCE]xxxxxxxxxx
[PRG]
[FILEPATH]
[DELAY]0
[CD TRACK]0
[COMMENT]
[END INFORMATION]
[SUBTITLE]
[COLF]&H00FFFF,[STYLE]no,[SIZE]12,[FONT]Courier New
00:00:07.00,00:00:11.91
THERE IS A PLACE ON EARTH WHERE IT[br]IS STILL THE MORNING OF LIFE...

00:00:12.48,00:00:15.17
AND THE GREAT HERDS RUN FREE.[br]SO WHAT?!

SubStationAlpha:

[Script Info]
Title:
Original Script:
Original Translation:
Original Editing:
Original Timing:
Original Script Checking:
Synch Point:
Script Updated By:
Update Details:
ScriptType: v4.00
Collisions: Normal
PlayResY: 864
PlayDepth: 0
Timer: 100.0000

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,65535,65535,65535,-2147483640,-1,0,1,3,0,2,30,30,30,0,0

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:02:32.85,0:02:34.33,*Default,1,0000,0000,0000,,Bio-readouts are all in the green. Looks like she's alive.

Sami:



Whatever





The Age of Gods was closing.


The heavens shook as the armies of Falis,

原文鏈接:http://www.doom9.cn/index.html?/sub.htm

[ 打印 ]
閱讀 ()評論 (1)
評論
九陽 回複 悄悄話 不錯。不過,如果這麽費事的話,我還不如就看原文的,或者從新到別的地方下載,嗬嗬。
BTW,謝謝你對影壇的巨大貢獻。俺就不留筆名了,哈哈
問個問題,什麽叫密碼,可選項?
登錄後才可評論.