1# 翻译字幕文件 下载视频对应的srt英文字幕后,将其保存成.txt文件,然后载入google翻译进行翻译。但是google翻译文件有个问题,如果文件太长,比如有成百上千行,google后面大部分没有翻译,只有前几个部分翻译。所以取代的办法是:将字幕内容做成网页内容,然后通过google翻译网页的形式能翻译整个网页即可。然后将翻译好的中文复制下来,放进本地的新建的一个srt文件,比如mov.chs.srt 2# 将mov.chs.srt文件中翻译出来的全角标点符号转换为半角 有冒号和箭头是全角的形式,不合英文字幕中的半角一致。 然后查看mov.chs.srt文件开头是不是有多余的东西,或空格之类的,删掉。 3#合并差异: 打开终端,到对应字幕文件夹 diff mov.chs.srt mov.eng.srt -D diff > mov.ec.srt -D 参数是合并差异,后面diff为自行添加的差异标识(文字描述,你怎么写都可以),是必须的。 4# #ifdef 及 #endif 开头的注释句标识 OK,现在我们生成了一个合并好的字幕,但中间凡是差异合并的地方都有以 #ifdef 及 #endif 开头的注释句标识,剩下的工作只要把这样的句子去掉就大功告成了。再用一条命令把它搞定: cat mov.ec.srt |grep -v '^\#.*' > mov.srt 这句比在vim中用正则还要方便点,当然这也是用的正则,重点在 -v 这个参数,help 中有说: -v, --invert-match select non-matching lines 即选择不匹配的行,正是我们想要的。单引号中是正则表达式匹配以#开头的行。 如果很不幸,你下载的中英文字幕的时间轴差别很大,这时按照上一篇的方法制作出来的双语字幕就会出现紊乱。其实这个问题还是可以解决的。以射手网的 srt 字幕为例,每一句字幕由三部分组成:序号、时间轴、字幕文字。由于没有搜到 srt 标准比较官方的资料,只发现对于 srt 字幕来说,时间轴和字幕文字是必须的,也就是说,序号可有可无。那对于时间轴差别很大的两个字幕文件来说,只要按时间顺序将其合并,上面提到的问题就迎刃而解了。