|
|
Acute
論壇第一大毒王
論壇第一小神童
. 積分: 3281
. 精華: 8
. 文章: 11574
. 收花: 14037 支
. 送花: 3260 支
. 比例: 0.23
. 在線: 323 小時
. 瀏覽: 2250 頁
. 註冊: 8222 天
. 失蹤: 5574 天
|
|
|
|
|
|
|
#1 : 2005-1-22 03:13 PM
全部回覆
|
送花
(7)
送出中...
|
|
|
版主 innison : 阿Q好專業喔,幫叔叔加分
|
評分:+1
|
|
IDX/SUB 字幕, 要編輯, 應該得找DVD 製作軟體嘗試 (必須能編輯字幕的那種)
直接編輯恐怕不可行, 因為SUB 檔案裏面的字幕, 直接是DVD 的字幕抽出, 所以含有字幕ID
直接改變IDX file, 將無法得到正確的ID, 所以還是不會被解釋出來
程式我沒有, 但是我知道如何手動修改, 如果你不怕麻煩的話
DVD 字幕編號從0x20 - 0x3F 最多32 個, 編號位置會變動, 但是, 可以人工解釋, 方法如下:
00 00 01 BA 44 07 0C CE 85 D9 01 89 C3 F8 00 00
01 BD 07 EC 81 81 08 21 01 C3 E7 37 1E 60 3A 20
0E 10 0D F2
00 00 01 BA 表示他是MPEG1/MPEG2 的封包, 每個封包起點位於2048的位置
00 00 01 BD 表示他是字幕 (基本上, SUB 檔案內, 一定是字幕, so, 每2K 出現一次, 呵呵)
重點來了, 00 00 01 BD 往後算第五個bytes, 也就是上面標示08 的位置, 表示header長度, 從該位置往後加該數值+1 的位置, 就是字幕的編號, 也就是藍色標示"20" 的那一個
20 表示字幕ID=0, 21表示字幕ID=1以此類推
例如, 假設你的IDX 內容是:
# Korean
id: ko, index: 0 這個是編號0, 資料用0x20 表示
# Decomment next line to activate alternative name in DirectVobSub / Windows Media Player 6.x
# alt: Korean
# Vob/Cell ID: 1, 1 (PTS: 0)
timestamp: 00:01:21:948, filepos: 000000000
timestamp: 00:01:27:153, filepos: 000001000
timestamp: 00:01:33:059, filepos: 000002000
:
:
# English
id: en, index: 1 這個是編號1, 資料用0x21 表示
# Decomment next line to activate alternative name in DirectVobSub / Windows Media Player 6.x
# alt: English
# Vob/Cell ID: 1, 1 (PTS: 0)
timestamp: 00:00:33:666, filepos: 000247800
timestamp: 00:00:38:271, filepos: 000248800
:
:
現在, 我假設要把Korean 前兩個字幕放到英文裏面的最前面, 所以, IDX 改變的部份是: (注意, 我更動時間了喔, 不然字幕時間重疊會出問題的)
# English
id: en, index: 1
# Decomment next line to activate alternative name in DirectVobSub / Windows Media Player 6.x
# alt: English
# Vob/Cell ID: 1, 1 (PTS: 0)
timestamp: 00:00:21:948, filepos: 000000000
timestamp: 00:00:27:153, filepos: 000001000
timestamp: 00:00:33:666, filepos: 000247800
timestamp: 00:00:38:271, filepos: 000248800
:
:
然後我需要變更檔案0x0000 - 0x1FFF 這8K 的內容(因為第三個起點是0x2000), 每2K 一個單位, 所以, 總共需要改四個
我把四個內容都列出來給你看:
第一個原始資料: (檔案位置: 0x0000)
00 00 01 BA 44 07 0C CE 85 D9 01 89 C3 F8 00 00
01 BD 07 EC 81 81 08 21 01 C3 E7 37 1E 60 3A 20
0E 10 0D F2
變更後的第一個:
00 00 01 BA 44 07 0C CE 85 D9 01 89 C3 F8 00 00
01 BD 07 EC 81 81 08 21 01 C3 E7 37 1E 60 3A 21
0E 10 0D F2
第二個原始資料: (檔案位置: 0x0800)
00 00 01 BA 44 07 0C D3 1C 2B 01 89 C3 F8 00 00
01 BD 06 34 81 00 00 20
變更後的第二個資料:
00 00 01 BA 44 07 0C D3 1C 2B 01 89 C3 F8 00 00
01 BD 06 34 81 00 00 21
PS: 這兒因為header size = 0, 所以, 下一個bytes 就是subtitle ID
第三個原始資料: (檔案位置: 0x1000)
00 00 01 BA 44 07 7E 0F AC 2B 01 89 C3 F8 00 00
01 BD 07 EC 81 80 05 21 01 E1 33 1F 20 08 4A 08
2C
變更後的第三個資料:
00 00 01 BA 44 07 7E 0F AC 2B 01 89 C3 F8 00 00
01 BD 07 EC 81 80 05 21 01 E1 33 1F 21 08 4A 08
2C
第四個原始資料: (檔案位置: 0x1800)
00 00 01 BA 44 07 7E 14 3C D7 01 89 C3 F8 00 00
01 BD 00 6B 81 00 00 20 6D 67
變更後的第四個資料:
00 00 01 BA 44 07 7E 14 3C D7 01 89 C3 F8 00 00
01 BD 00 6B 81 00 00 21 6D 67
這樣子, 就可以在英文字幕撥放時, 看見韓文字幕跑出來嚕
當然, 這個方法絕對是在你只希望讓另一個語文字幕, 有幾個出現的條件下
不然每2K 的位置都得人工改一次, 保證把你累死, 呵呵
另一個方法, 就是自己寫個小程式根據上面的規則, 去變更字幕的編號即可
有程式輔助, 想改幾個字幕都可以 ^^"
IDX/SUB 只要ID 不匹配, 就不會顯示, 所以, 上述改法改過之後的SUB file
韓文字幕將會缺少兩句, 而英文字幕跑出兩句韓文字幕
沒有方法可以讓同一個字幕影像代表兩種或多種字幕的編號!!!!
Acute.
[Acute 在 2005-1-22 03:40 PM 作了最後編輯]
[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
|
|