请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
查看: 20880|回复: 50

AdjustAssTime: 調整字幕時間軸/FPS 或合併多個字幕 (2020/10/10 更新)

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    40

    主题

    713

    帖子

    5599

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    976008

    卓越贡献

    tonyhsie 发表于 2017-1-1 11:25:30 | 显示全部楼层 |阅读模式
    本帖最后由 tonyhsie 于 2020-10-10 21:55 编辑

    分享一個自己寫的小程式,主要功能有兩個


    1. 一次調整多個字幕檔 (.ass/.ssa/.srt/.idx) 的 時間軸FPS

       (也可從 Sushi: 自动调整时间轴工具 所得到的時間資訊來調軸,簡易教學請見 18 樓 及  28 樓

    2. 合併多個字幕檔 (.ass/.ssa 或 .srt) 的時間軸,主要是 BDrip -> BD 原盤用


    支援 Unicode 或 BIG5/GB (ANSI)


    程式截圖

    v190101

    功能 A:  調整字幕時間軸  (圖片範例:將字幕往後平移 5 秒)




    功能 B: 合併兩個以上的字幕  (圖片範例:將兩個字幕合併,第 2 個字幕起始時間為 23:42.086)




    功能 C:  調整字幕 FPS  (圖片範例:將 fps 23.976 影片的字幕轉成 fps 25 的影片用)




    更新記錄

    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

    评分

    参与人数 17活跃度 +11411 收起 理由
    1928530784 + 100
    tloook + 800 很给力!
    霄月銀牙 + 1000 很给力!
    rohya + 200 非常棒的軟體!
    johoco + 1600
    xddd0999 + 800 赞一个!
    CLANNADAO + 800 <font style="vertical-align: inh
    rikobakudan + 800
    Remaus + 800 很给力!
    lee850220 + 800 很给力!
    qweasdshilk + 111 赞一个!
    lattka + 400
    liyuweiying + 1600
    true + 200
    minyain + 200 赞一个!
    atomsfear + 200 辛苦了
    2222 + 1000

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    40

    主题

    713

    帖子

    5599

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    976008

    卓越贡献

    tonyhsie  楼主| 发表于 2020-5-20 03:02:15 | 显示全部楼层
    本帖最后由 tonyhsie 于 2020-5-20 03:07 编辑

    今天作了個動態 GIF,來展示合併字幕的功能




    詳細說明如下:

    此 GIF 是以合併 飛翔的魔女 BD disc1 字幕為例

    (0) 用 BDInfo 確認正片的 mpls 檔(在 gif 中為 00002.mpls)
    (1) 用 tsMuxer 打開 BD 原盤的 mpls 文件,以獲取章節的時間軸
    (2) 將字幕文件拖曳到 AdjustAssTimes 程式上、將時間軸拖曳(或複製貼上) 到 Start Time 文字框
    (3) 選擇 Append 功能,按下 Go!

    程式便自動生成單一字幕檔,並將時間軸資訊及章節資訊,另存純文本在 Chapters 目錄下
    (以後若要再次合併同一片 BD 的字幕,將章節檔案拖曳到 Start Time 文字框即可,毋需再重複進行上述的 (0)、(1) 步驟)


    (4) 將此合併後的字幕,複製到 BD mpls 資料夾下,並改成跟 mpls 同名(在此例中為 00002.ass)
    (5) 播放 BD 原盤時,選擇播放 index.bdmv 或 00002.mpls 都會自動外掛字幕(MPC-HC 或 MPC-BE 確定沒問題,POT Player 應該也可以)


    各字幕合併的時間點,程式會以章節時間軸自行計算,若各話片長差不多,便毋需自行一一計算時間軸
    大部分動畫都是如此

    (如: Fate/stay night, Charlotte, SHIROBAKO, STEINS;GATE, THE IDOLM@STER, 中二病でも恋がしたい)

    若每一話時間有長有短 (如 Fate/Zero),程式無法準確預估時間
    也可以自行指定時間軸,再拖曳 (或複製貼上) 到 Start Time
    一樣可以輕鬆合併多個字幕


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    40

    主题

    713

    帖子

    5599

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    976008

    卓越贡献

    tonyhsie  楼主| 发表于 2017-1-11 18:30:44 | 显示全部楼层





    更新記錄


    v170111

    新版加入兩個功能

    1. 可以指定是否只調整某個時間點以後的字幕
      例如:01:00 之後的字幕,往後調 5 秒,00:00~01:00 之間的字幕時間保持不變

    2. 可以一次合併多個字幕
      例如:把各集 BDrip 字幕,合成一個 BD-BOX 用的單字幕檔


    以合併白箱 BD-BOX 字幕為例

    (1) 先用 tsMuxer 打開 BD 原盤的 MPLS 文件,以獲取章節的時間軸




    (2) 將字幕文件拖曳到 AdjustAssTimes 程式上、將時間軸拖曳(或複製貼上) 到 Start Time 文字框




    (3) 選擇 Append 功能,按下 Go!


    程式便自動生成單一字幕檔,並將時間軸資訊及章節資訊,另存純文本,以便不時之需





    各字幕合併的時間點,程式會以章節時間軸自行計算,若各話片長差不多,便毋需自行一一計算時間軸
    大部分動畫都是如此

    (如: Fate/stay night, Charlotte, SHIROBAKO, STEINS;GATE, THE IDOLM@STER, 中二病でも恋がしたい)


    若每一話時間有長有短 (如 Fate/Zero),程式無法準確預估時間


    也可以自行指定時間軸,再拖曳 (或複製貼上) 到 Start Time

    一樣可以輕鬆合併多個字幕

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    40

    主题

    713

    帖子

    5599

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    976008

    卓越贡献

    tonyhsie  楼主| 发表于 2017-5-16 07:13:38 | 显示全部楼层
    更新記錄


    v170516

    1. 新增支援 .srt 字幕

    2. 新增支援編碼為 ANSI (BIG5 或 GB) 的字幕(預設仍為 UTF8)

    3. 新增一個合併字幕時可選用的選項:合併時以各字幕檔最後一個有效字幕的時間,來計算字幕合併的時間點 (Calculate next....)
     若合併後的字幕,合併的時間點錯誤時,可勾選後再試試
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34

    主题

    197

    帖子

    0

    VC币

    高级会员

    [s][/s]

    Rank: 4

    积分
    22091
    true 发表于 2017-8-21 05:08:02 | 显示全部楼层
    这工具太厉害了

    点评

    謝謝支持 呵呵  发表于 2017-8-21 09:30
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    VC币

    新手上路

    Rank: 1

    积分
    34
    大帅鸭 发表于 2017-8-23 13:40:43 | 显示全部楼层
    厉害了,LZ好厉害

    点评

    謝謝支持 如果使用上有什麼問題 或是建議 也歡迎告知 ^^  发表于 2017-9-28 02:41
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2019-3-9 23:35
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    0

    主题

    3

    帖子

    0

    VC币

    注册会员

    Rank: 2

    积分
    807
    yukako 发表于 2017-11-18 14:13:25 | 显示全部楼层
    本帖最后由 yukako 于 2017-11-18 14:14 编辑

    请问这个可以单纯合并多个字幕吗?

    我一次合并多个时,字幕档是合并了,可是时间轴未改变,也有勾选过Calculate next,还是一样
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    40

    主题

    713

    帖子

    5599

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    976008

    卓越贡献

    tonyhsie  楼主| 发表于 2017-11-18 22:25:51 | 显示全部楼层
    yukako 发表于 2017-11-18 14:13
    请问这个可以单纯合并多个字幕吗?

    我一次合并多个时,字幕档是合并了,可是时间轴未改变,也有勾选过Calcu ...

    可以合併多個字幕檔,但需要自行指定合併的時間點 (需在 "Start Time" 處填上時間點)


    時間點可接受的格式,可以是 1234567 (=1234.567 秒),或是 01:23:45.670 兩種

    也可以接受多行的輸入

    例如:

    00:00:00.000
    00:02:12.006
    00:03:42.013
    00:11:37.988
    00:21:15.941

    這樣程式才有辦法知道  合併後的字幕要怎麼重新給定時間軸



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2019-3-9 23:35
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    0

    主题

    3

    帖子

    0

    VC币

    注册会员

    Rank: 2

    积分
    807
    yukako 发表于 2017-11-19 00:56:33 | 显示全部楼层
    本帖最后由 yukako 于 2017-11-19 00:57 编辑
    tonyhsie 发表于 2017-11-18 22:25
    可以合併多個字幕檔,但需要自行指定合併的時間點 (需在 "Start Time" 處填上時間點)

    请问喔,你说可多行输入
    00:00:00.000
    00:02:12.006
    00:03:42.013

    是直接复制全部在贴上就行吗?

    那时间轴每行的定义是?
    假设我有档1.ass、档2.ass、档3.ass

    像00:00:00.000是插在哪个顺序?
    像00:02:12.006又插在哪个顺序?
    像00:03:42.013又插在哪个顺序?

    另外建议一下,可否把要合并的档案完全呈现,就是input 2那里,而不是只有一个。


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    40

    主题

    713

    帖子

    5599

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    976008

    卓越贡献

    tonyhsie  楼主| 发表于 2017-11-19 12:12:27 | 显示全部楼层
    yukako 发表于 2017-11-19 00:56
    请问喔,你说可多行输入
    00:00:00.000
    00:02:12.006

    >> 请问喔,你说可多行输入
    >> 00:00:00.000
    >> 00:02:12.006
    >> 00:03:42.013
    >> 是直接复制全部在贴上就行吗?

    是的,直接複製貼上就行

    >> 那时间轴每行的定义是?
    >> 假设我有档1.ass、档2.ass、档3.ass
    >> 像00:00:00.000是插在哪个顺序?

    程式會跳過 0:00:00

    >> 像00:02:12.006又插在哪个顺序?

    合併時,字幕檔2的時間部分,全部會平移 2:12.006

    >> 像00:03:42.013又插在哪个顺序?

    字幕檔3 會平移 3:42.013

    >> 另外建议一下,可否把要合并的档案完全呈现,就是input 2那里,而不是只有一个。

    謝謝建議,我會再想想看怎麼設計會比較好

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2019-3-9 23:35
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    0

    主题

    3

    帖子

    0

    VC币

    注册会员

    Rank: 2

    积分
    807
    yukako 发表于 2017-11-19 14:23:58 | 显示全部楼层
    tonyhsie 发表于 2017-11-19 12:12
    >> 请问喔,你说可多行输入
    >> 00:00:00.000
    >> 00:02:12.006

    如果方便的话,时间轴呈现也可以考虑加入,
    这个软件真方便,我原本还想要手算起始点在用其它软件平移...不过看着那堆数字就觉得头痛了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表