TA的每日心情 | 郁闷 2016-12-31 01:33 |
---|
签到天数: 6 天 [LV.2]偶尔看看I
星辰大海
- 积分
- 2969739
|
本帖最后由 tonyhsie 于 2023-2-6 02:06 编辑
分享一個自己寫的小程式,主要功能有兩個
1. 一次調整多個字幕檔 (.ass/.ssa/.srt/.idx) 的 時間軸 或 FPS
(也可從 Sushi: 自动调整时间轴工具 所得到的時間資訊來調軸,簡易教學請見 18 樓 及 28 樓)
2. 合併多個字幕檔 (.ass/.ssa 或 .srt) 的時間軸,主要是 BDrip -> BD 原盤用
支援 Unicode 或 BIG5/GB (ANSI)
程式截圖
v211111
v190101
功能 A: 調整字幕時間軸 (圖片範例:將字幕往後平移 5 秒)
功能 B: 合併兩個以上的字幕 (圖片範例:將兩個字幕合併,第 2 個字幕起始時間為 23:42.086)
功能 C: 調整字幕 FPS (圖片範例:將 fps 23.976 影片的字幕轉成 fps 25 的影片用)
更新記錄
v230205
1. 修正一些問題
2. 新增「-NoEgg」參數,不再出現提示信箱的視窗
3. 將字幕檔拖曳穿過時間欄時,不會清空時間欄的文字
4. 時間欄新增支援 .srt 及 .ass/.ssa 的時間行格式,不需要人工計算
如:00:00:05,810 --> 00:00:10,548 (程式會取中間值來計算,也就是 (5810+10458)/2 = 8134 ms)
Dialogue: 0,0:00:25.44,0:00:30.65,TEXT-JP,,600,0,0,,甲乙丙丁 (中間值 = (25440 + 30650)/2 = 28045 ms)
5. 支援 dry run (空運行) 模式 (主要是為了觸發下面另外 *.txt 功能用)
只要在任一時間欄裡填入 d 或 D 再按 "Go!" 即可
6. 不再產生負數時間行,所有小於 0 的時間值都會變成 0
Adjust mode 時間 / FPS 調整模式
1. 將 fps 24.98 當成 25000/1001,以取得更精準的時間值
2. 支援 alass 執行結果的時間格式 (如:shifted block of 1090 subtitles with length 1:26:12.672 by -0:00:09.013)
(就像已支援很久的 Sushi 格式一樣)
3. 目標時間欄 (Target Time) 新增支援相對時間,如 +01:23:45 or -54321,意思是相對於原始時間欄再加 1:23:45 或減 54321 (ms或s)
4. 將字幕裡相鄰且時間重疊的字幕收集起來 (也就是上個字幕還未結束,下個字幕就先開始的情況)
另存為 *.TimeOverlapLines.txt
重疊時間有上限,超過上限者不列入,.ass/.ssa 上限為 100ms,.srt 上限為 1 秒
Append mode 時間合併模式
1. 在合併時間為 0 時,不添加多餘的合併資訊行
2. 不覆寫任何已存在的檔案 (會將舊檔案改名)
v220214
1. 新增參數 "-OldDoubleClick",恢復舊版本,文字框要雙擊才會全選的模式
2. 修改某些檔名的排序規則
3. 合併模式下,最後一句字幕的結束時間可以剛好等於合併時間 (以前的版本不允許)
v211111
1. 拿掉了 Unicode / ANSI 的選擇鈕,改由程式自動偵測 Unicode/GBK/BIG5
2. 增加了字幕快取機制來應對 MB 級的字幕,會快取最近 32 個在程式啟動後使用過的字幕
3. 在 Adjust/Append mode,或是 Adjust Time/FPS mode 之間切換時,一律會重設 Original/Taget 輸入框內的文字
4. 當前後兩句字幕有時間重疊時,會額外產生 "*.TimeOverlaps.txt"。作用是提醒使用者,是否要修改字幕,讓時軸不要重疊
5. 移除 .ass 最後面無意義的空行
6. 程式改為 .NET Framework 4.8 架構
7. 修正一些小 bug,修改一些小地方
Adjust mode 時間 / FPS 調整模式
1. 使用更精確的 FPS 數值來調整時間,如 23.976 的參數,程式內會用最精確的 (24/1.001) 的數值來計算時間
2. FPS 調整模式也可單純拿來放大/縮小字幕的時軸長度,如 Original FPS = 3,Target FPS = 1,則每句字幕的時間點、時長都會變 3/1 = 3 倍
Original FPS = 1,Target FPS = 4,則每句字幕的時間點、時長都會變 1/4 = 0.25 倍
原本有限制 original FPS 最多只能有 3 位小數,現在改為不限
3. 不再產生 "*.sushi.txt", "*.Segment.txt", "*.check.txt" 這些多餘檔案
4. 修改負數的進位方式,讓時間計算更精準
5. "Use [Target Time] as first subtitle start time" 這個功能,是將第一句字幕修改成使用者指定的時間
原先程式是以字幕檔案裡的第一行真正字幕為準來修改時間,現在改為由所有字幕裡,時間最早的字幕為準
Append mode 時間合併模式
1. 支援多個檔案 +1個合併時間的合併方式。例如5個字幕檔案 & 1個合併時間"0:30:00",合併後第2個字幕會在 30 分處開始,第3在 1 小時處開始,依此類推。也可另外指定第1個字幕的開始時間,這時第2、3、...之後的字幕也會根據第1個字幕的開始時間 + 每個字幕的間隔時間來處理
v201010
1. 小 bug 修正
2. 調整一些 hot-keys
3. 新增支援「有兩個以上的 [V4 Styles] 區段」的字幕檔案
4. 改用 decimal 來計算時間長度以避免 double 在四捨五入時的誤差
(double 1.005 四捨五入取兩位為 1.00,而 decimal 會是 1.01)
5. UI 介面調整
for 調整時間模式 (Adjust mode)
6. 如果 input 1 改變了,則移除先前所有的 input files
7. 可直接將程式產生的 Segment.txt 拖曳到時間欄,再次使用同樣時間來作調整
8. 「指定第一句字幕的時間」之前都是以字幕檔第一行的時間為準,無論它是否真的最早出現;
現在改以最早出現的真實字幕時間為準
9. 可直接從 Excel 複製時間資訊貼到「Target Time」上 (ctrl-v),程式會自動填滿「Original Time/Target Time」兩個欄位
也支援拖曳的方式。Excel 時間範例(以時間 或 frames 為單位,將 TV 時軸轉換成 BD 時軸):
10. 在計算 frame 時間時,如果字幕時間要從 M frame 調整成 N frame,
以往都是以「M / fps 的時間之後的字幕」調整為「N / fps 的時間」的方式來計算;
現在改為更精確的「(M-1) / fps + 0.01 秒之後的字幕」調整為「(N-1) / fps + 0.01 秒」的方式來計算;
for 合併字幕模式 (Append mode)
11. 如果字幕位置沒有改變,則不產生確認用的「position.ass」
12. 合併時字幕時,若字幕的預設解析度不同,會自動調整相關 x/y 軸的參數;現在不調整 \blur 所帶的參數了
13. 在輸入的字幕檔案超過兩個時,禁止 Swap
14. 修正「當 input 2 的長度 > input 1 時」會發生的 exception
15. Chapter.txt 現在會記錄各影片的長度,即下圖()內的時間
v200323
1. 小 bug 修正
2. UI 介面調整
for 調整時間模式 (Adjust mode)
3. 對於單一目錄的參數,程式會將它視為多個字幕檔的參數來處理 (主要是為了搭配 Sushi 調軸)
4. 在 Adjust Time/FPS mode 以及 Append mode 之間切換時,程式會視情況重置輸入框的參數 (非必要的話就不會重置)
5. 使用 Sushi 的時間資訊時,可得到跟實際執行 Sushi 一模一樣的時間軸,但速度快很多 (因為不需要重複比對聲音資訊) 在調整多個 "同時間軸" 的 "不同字幕" 時 (如 Webrip -> BDrip) 很好用
for 合併字幕模式 (Append mode)
6. 在合併不同 resolution 的字幕時,會先把字幕作 resize,這版讓 resize 的結果更精確 (增加有效位數)
7. 修正 Resize 時會把 "\clip()" 修改成 "clip(" 的問題
8. 合併字幕時,現在可以指定第一個字幕的起始時間,不再強制一定要從 0:00:00.00 開始
(在少數某些 BD 的播放清單裡,在第一集正片前面,可能會先播別的影片,造成第一集的時間實際上不是從 0 開始,如:小書痴的小剋上)
v191116
1. 小 bug 修正
for 調整時間模式 (Adjust mode)
2. 增加支援 .idx 字幕 (DVD 字幕檔格式),可調整 .idx 的時間軸 / FPS (合併功能不支援 .idx 格式)
3. 可從 Sushi 的時間資訊來調整字幕 例如:在沒有 DVDrip/TVrip/BDrip 影片的情況下,只有 sushi 時間資訊時,也可以將 DVDrip/TVrip 的字幕調整成 BDrip 字幕 (.ass/.ssa/.srt/.idx 皆適用)
4. 可一次丟入 N 個檔案及 N 個 Sushi 時間資訊,產生出 N 個調整後的字幕
5. 調整字幕時間時,刪除行首及行尾的多餘空白
for 合併字幕模式 (Append mode)
6. 合併 .ass/.ssa 字幕時,若字幕檔之間的解析度設定不同,程式會自動調整相關參數 (字型大小、邊界、位置等等)
v191103
1. 小 bug 修正、提升程式效率
2. 程式由 32-bit only 變成 32/64-bit
3. 支援 .srt 的時間格式,如 "00:11:29,669" (也就是秒數後面為逗點的形式)
4. 支援 .idx 的時間格式,如 "00:11:29:669" (也就是秒數後面為冒號的形式)
5. 為所有的文字輸入框,增加 "滑鼠 點第1次 全選,點第2次 取消,點第3次 全選,點第4次 取消....依此類推" 的特性,方便複製
6. 由本程式調整時間後,所產生出來的字幕,檔名會帶有如 "delay 1s" 這種資訊,
原本經多次處理後會變成 "delay 1s.delay 500ms.delay -250ms",
現在改為合併計算,也就是會變成 "delay 1250 ms",不再盲目的重覆增加檔名長度,會合計所有調整時間的資訊,一次呈現
7. 新功能:指定一個時間,把第一句字幕的開始時間,調整成該指定時間,其餘字幕時間則類推
如下圖所示,就是把 "0.srt" 的第一句字幕開始時間調成 "0:01:23.456",其餘字幕時間都類推
v190101
1. 一堆小 bug 修正
2. 時間單位可選擇 毫秒 (Millisecond) 或 秒 (Second)
3. 可改變字幕 FPS (如 23.976 -> 25 之類)
for 調整時間模式 (Adjust mode)
4. Sushi 自動產生的字幕,如果有多個不同的時間區塊,那麼在區塊邊界,Sushi 偶爾會判斷錯誤,需要手動修正
AdjustAssTime 可按照 Sushi 結果來生成 N 個平移了不同時間後的字幕檔,方便來修正 Sushi 的這種錯誤
for 合併字幕模式 (Append mode)
5. 如果合併的字幕,預設解析度不相同時,會根據第一個字幕的解析度來調整後續字幕的字型大小 font size、字幕位置 position、 邊界 magrins 等等跟字幕解析度相關的數據,並產生 "*.position.ass" 用來方便確認更改後的相關字幕是否能正常呈現
6. 可直接把 "chapters.txt" 拖曳到 "Start Time" 欄,直接根據檔案裡紀錄的合併時間來再次合併字幕
v170516
1. 新增支援 .srt 字幕
2. 新增支援編碼為 ANSI (BIG5 或 GB) 的字幕(預設仍為 UTF8)
3. 新增一個合併字幕時可選用的選項:合併時以各字幕檔最後一個有效字幕的時間,來計算字幕合併的時間點 (Calculate next....)
若合併後的字幕,合併的時間點錯誤時,可勾選後再試試
v170111
新版加入兩個功能
1. 可以指定是否只調整某個時間點以後的字幕
例如:01:00 之後的字幕,往後調 5 秒,00:00~01:00 之間的字幕時間保持不變
2. 可以一次合併多個字幕
例如:把各集 BDrip 字幕,合成一個 BD-BOX 用的單字幕檔
簡易教學請見 2 樓
跟 SubResync, Aegisub 相比的話,主要特點在於
1. 簡潔快速的操作,不需在層層選單裡徘徊
2. 完整保留原始字幕檔的一切文字,除了時間軸改變以外,其它文字跟排版都不會變,(SubResync/Aegisub 都會拿掉注釋,排版也可能會變)
3. 支援一次調整多檔的時間軸
4. 合併字幕時,遇到相同 Style,但是不同的字型/字體設定時,兩種 Style 都會保留下來 (Aegisub 只會留其中一個)
操作方式
1. 可直接拖曳字幕檔案或目錄、或是路徑文字到視窗上,或用 "..." 按鈕選取一至多個字幕文件、或手動輸入字幕路徑皆可
2. 時間也可以用拖曳文字的方式輸入,省去打字或複製貼上的手忙腳亂
3. 調整時間軸,可以設定 "Original Time(原始時間)" & "Target Time(調整後時間)" 來調整,程式會自動幫你算兩者的時間差,再去調字幕
簡單說,假設同一句台詞 A,在 TVrip 的時間點是 0:10:35,在 BDrip 的時間點是 0:12:03,分別填入這兩個時間,就可以把 TVrip 字幕調成 BDrip 的時間軸
也可以只填入 "Target Time","Original Time" 保持在 0:00:00.000,那麼程式就會按你所填時間,把字幕時間一律往後(或往前)調整
填入時間的格式,可以是 1:23:45.678 (時:分:秒.毫秒),也可以填入整數 12345678 (毫秒),也可以是負數的時間/整數 (把字幕時間往前調)
4. 合併字幕的話,就只需要填入合併的時間點
例如,BD 影片是第 1 集 + 第 2 集,那就填入第 2 集開始的時間點,然後合併兩集的字幕
5. 按下 Go! 就會產生新的字幕檔,調整(或合併)的時間點也會一併保留在檔名上,如圖
調軸的話,就是單純產生 "原檔名 + Delay 多少時間" 的新字幕檔
合併的話,程式會自動判斷兩個字幕檔檔名的差異,如果像圖中這種有規律性,[01], [02], [03], .... 的
合併的字幕就會是 [01-02], [03-04],檔名最後會加上 "Appended @ 哪個時間點" 以方便辨視
進行多次合併的話,檔名就會像圖中最後一個檔案那樣 [24-25-26] (先合併 24 & 25, 再合併 26)
以下是合併字幕的一些特色
Style 部分,如果有同名的不同 Style 定義,程式會自動更名,Style名稱會加上該字幕檔的編號,如圖中 temp25, Default26 等等
如果有新的 Style,但名稱不衝突,則保留原名,如圖中的 STAFF
合併的兩個字幕檔中間,開頭會有 [Event] + 編號 以供判別
雖然說起來複雜,但實際操作是很直覺不難懂的
有任何建議或想法都歡迎指教,謝謝
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
查看全部评分
|