[转]合并多条idx+sub字幕流及自定义字幕语言显示名称

https://www.d4e.org/showthread.php?t=85930

 

【转载+原创】合并多条idx+sub字幕流及自定义字幕语言显示名称
本文发表于DreamLand.
本文中的部分内容自网上学习而来,从roxette兄的贴子
折腾字幕的完整教程
中也受到不少启发,就将这些经验汇集成这个小专题,算是个人的菜鸟经验总结吧。

 

 

一、合并多条idx+sub字幕流
首先解释一下,这里的合并多条,不是指CD1+CD2那种多段字幕追加(Append/join),而是复合(Mux multiple idx+sub subtitle streams)。假如我们有两条sub字幕,一条为中文,另一条为英文,如何将两条字幕合并到为一组?
步驟:
1、修改.idx中的字幕索引号(index)
.idx是一个文本文件,其id结构如下:
langidx: 0 //这个是默认字幕ID,如果要修改默认字幕,改为下文中的ID索引值
# English //前面的#表示注释,以帮助辨识语言种类
id: en, index: 0
{
id: 语言标识,用来设定字幕播放器显示的语言类型,常用的标识有
  – : Unknown 未知 (通常经过软件处理输出的字幕不具有特定的语言标识)
  en : English 英文
  zh : Chinese 中文
  jp : Japanese 日文
  ko : Korean 韩文
index: 索引号,这个是字幕软件识别和处理语种的唯一依据。如果索引号相同,会被认为是同一语言,在合并时会被软件当作同一条字幕处理。
}
我们在此步骤要做的,就是检查两条字幕的index索引号,以避免产生冲突。如果原本索引号就是错开的,则可以忽略此步骤。如有冲突,修改之。
2、修改对应的.sub文件标记
需要更改.sub文件的每一个字幕块的ID标记。每个字幕块起始标记为二进制00 00 01,与.idx对应的标志字节为0x2?。如果.idx中定义了多条索引号,则.sub中通过该标志以辨别对应的语言,例如:
.idx中的第一种语言索引号为0,则相应的字幕块标记为
00 00 01……20
索引号为5,则相应的字幕块标记为
00 00 01……25
因此,如果将.idx中的ID索引号0改为1,则需要将每一个字幕块标记的0x20替换为0x21
00 00 01……20 -> 21

这个修改的工作量是非常大的,幸好网友Diao Ye编写了一个小工具可以自动完成这个工作,名字叫做VobSub ID Adjust,推荐使用。
3、合并字幕流
使用VobSub Joiner(rundll32.exe vobsub.dll,Joiner),将第二条字幕的追加时间(Beginning of Input 2)设为大于第一条字幕的结束时间即可(为了方便,尽管设为5个小时得了,呵呵)

4、修改语言标识ID
现在两条字幕已经合二为一,且具有不同的index,但输出的字幕不具有特定的语言标识,id值为“–”,会被认为是unkown – 火星语,呵呵。需要修改输出.idx中的语言id(注意,不是索引号),否则字幕播放时不会正确显示语言名称。如
# (Not detected)
id: –, index: 1
改为
# Chinese
id: zh, index: 1
请参见第1步相关内容。
5、调整时间
用subresync打开合并后的字幕,切换到第二条字幕,将时间调回即可。

嫌麻烦的朋友建议使用步惊云前辈写的SubJoiner工具,不过这个软件在某些机器上执行合并时可能会产生程序挂起而处理失败的情况。
注:本文用到的软件VobSub ID Adjust和SubJoiner在roxette兄的贴子
折腾字幕的完整教程
中有详细介绍和下载。

二、自定义字幕语言显示名称
我们知道,对于srt/ssa等文本字幕,可以通过“影片文件名.字幕语言名称.srt”的更名方式任意DIY在播放器中的显示的字幕语言名称,以便在切换字幕时更易辨识,如对于“Chinese Simplified”“Chinese Traditional”“Chinese GB”“Chinese BIG5”“Chinese GBK”“Director Commentary”等。
而在idx+sub字幕中,字幕语言名称通常则是千篇一律,这是由于字幕播放器会根据.idx文件中定义的id采用内置的名称方案。我曾见过一个片子有3条“English”(两条不同字体的对白字幕,一条导演评论)4条“Chinese”(对白、导演评 论各简繁)的极端例子,这样选择起来就比较麻烦了。我们可以修改.idx中的alt定义来实现个性化字幕语言名称。找到:
# Chinese
id: zh, index: 1
# Decomment next line to activate alternative name in DirectVobSub / Windows Media Player 6.x
# alt: Chinese
注意这里有一句注释,是说“文档中的下一行用来激活DirectVobSub/Mpalyer中显示的备用名称”,可见,说穿了本文所述不过是一个小技巧,只是平时大家没注意到。
将alt前面的注释符号#去掉,改为:
alt: Chinese Simplified
再播放影片,结果如图:

注:Vobsub经典版界面修正,解决中文系统中文字显示不全的问题,可以在这个贴子中下载:
vobsub223_rip&fix Version

Advertisements
  1. 留下评论

Log in or fill out contact info to leave a reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: