百度首页 | 百度空间
 
查看文章
 
两条命令制作双语SRT字幕{转}
2007-12-29 21:52
平时看avi的电影视频,一般都是外挂字幕的,因为常用的mplayer只能用 j 键切换字幕而不能同时加载两个字幕。而且貌似mplayer只能识别"同名.srt"文件,不能识别"同名.xxx.srt"的字幕文件。所以,切换中英文字幕是比较累的。今天闲逛,发现了一篇日志,真是感叹啊,没有做不到,只有想不到啊,这么简单的两条命令居然就解决了一直困扰的问题。

只要两句话就可以自制一个双语字幕,耗时不会超过五秒。

首先去字幕站下载与你视频版本相对应的中英文srt字幕,国内当然是射手网了,最大最齐,一般都有srt格式的,sub格式的就没办法喽,因为那是图形字幕,没法修改的。

射手的字幕都是压缩打包好的,下载回来后解压开,先要大概对比一下中英文字幕的时间轴是不是一样的,通常来说,同一个字幕组出的字幕时间轴应该是一样的,只是语言不同而已,制作双字幕只是将中英文的两个文件合并为一个文件,对比工具同样推荐命令行的 Vimdiff,如果两个字幕中时间轴存在小的差异的话也很方便用命令修正。

好,先假设我们手上有 mov.chs.srt 和 mov.eng.srt 两个字幕。

第一步,合并差异:
diff mov.chs.srt mov.eng.srt -D diff > mov.ec.srt

-D 参数是合并差异,后面diff为自行添加的差异标识(文字描述,你怎么写都可以),是必须的。man 手册中是这样说的:
-D NAME --ifdef=NAME
Output merged file to show ‘#ifdef NAME’ diffs.

OK,现在我们生成了一个合并好的字幕。但中间凡是差异合并的地方都有以 #ifdef 及 #endif 开头的注释句标识,剩下的工作只要把这样的句子去掉就大功告成了。

第二步,去掉多余的注释,用一条命令把它搞掂:
cat mov.ec.srt |grep -v '^\#.*' > mov.srt

这句比在vim中用正则还要方便点,当然这也是用的正则,重点在 -v 这个参数,help 中有说:
-v, --invert-match select non-matching lines
选择不匹配的行,正是我们想要的。单引号中是正则表达式匹配以#开头的行。


如此,两条命令就合并了两个文件,实现了双语srt字幕。值得鼓掌。

类别:视频音乐 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu