20110120

为DV视频及其转制的格式制作时间码软字幕

Author:  WinkCategories:  DC/DV, MultimediaNo Comments »

是否在使用磁带式DV?是否经常采集视频之后要将其转成其它编码格式?是否希望转制后的视频也能有时间码?是否又不希望时间码是硬嵌在视频内的?如果您觉得以上这些问题都说到点子上了,那么您和我一样,以下这些内容非常适合您阅读。

不好意思,刚才有点犯病,我再用正常的中文描述一下这篇文章的主旨。通常,您可以利用很多视频处理软件,无论通过不同的形式,将DV录制时的时间码(Time Code)硬嵌在视频中——请注意,是硬嵌,代表永久地、无法逆转地嵌入了处理过的视频中。的确,我们需要时间码,这样在后期观看这些视频时,可以知道是什么时候录制的,毕竟记忆有时候会模糊。但是,“将时间码硬嵌在视频中”这种做法往往让人觉得不很完美:很多时候我们在看这些视频时,并不希望看到它!有没有一种方法,可以让时间码像现今流行的软字幕一样,是外挂的、可选择为隐藏的、又可后期修改的呢?没错,就像SRT、SSA、ASS等一样。这也一直是困扰我的问题,现在终于有了解决方法,啊不对,是我终于找到了解决方法,其实老外早已解决了这个问题,只是我才寻觅到。

废话说的太多了。下面进入正题。该方案基于“Overlay Time & Date Code On MPEG-2 File”讨论帖。

通过IEEE 1394采集得来的DV AVI,是包含了视频录制时的时间码的。但是一旦将DV AVI转换为其它编码或格式的视频文件时,(目标文件)会丢失这些时间码信息,这就造成处理后最终得到的视频文件没有记录视频录制时间的能力。解决的思路是:首先从最初的DV AVI文件中提取出这些时间码信息并保存为特定格式的文件,然后将该文件转为字幕文件。

这些步骤,其实只要通过一个工具即可简单地完成:DV Sub Maker,可以访问VideoHelp.com获得。

解压压缩包后执行“DVSubMaker.exe”,界面如下:

Get Time Code

“DV avi file”一栏指定需要制作时间码字幕的DV AVI文件,注意,一定要是采集后未经处理的DV AVI源文件!“DV DT file”一栏选择生成的中间文件的保存位置,然后点击“Start”开始处理。一般几分钟后即可完成,视源文件大小及电脑性能而定。这时在窗口最下方可以看到正在处理的视频帧的日期时间在不断变化。

然后点击“2. Make Subs”标签。格式默认即可;“DV DT file”默认即为刚才生成的中间文件;“Subtitle file”一栏需指定如何保存生成的Sub字幕文件。“Subtitles format”可以指定字幕中如何显示时间码。然后点击“Start”开始生成字幕文件,这个过程很快,只需几秒钟便完成了。

Make Subs

生成的SUB文件即为软字幕文件。使用DirectShow Filters便可在任何使用DirectShow的播放器上加载该时间码字幕。至于如何使用DirectVobSub,相信经常看电影的基本上都了解。

但是,还有一个问题需要解决,这也是“Overlay Time & Date Code On MPEG-2 File”讨论帖遗留下来的。DV Sub Maker很方便,不过有个bug,生成的时间码SUB字幕文件大概是这样的形式:

{1}{8}19:35:01|14.01.2011
{9}{9}19:35:02|14.01.2011
{10}{19}19:35:03|14.01.2011
{20}{44}19:35:04|14.01.2011
{45}{69}19:35:05|14.01.2011
{70}{93}19:35:06|14.01.2011
{94}{118}19:35:07|14.01.2011
{119}{143}19:35:08|14.01.2011
......

它会产生这样一个问题:播放的时候时间码在不停地跳动!这是因为字幕文件的时间轴不连贯造成的,按理说,刚才的文件应该是下面这样:

{1}{9}19:35:01|14.01.2011
{9}{10}19:35:02|14.01.2011
{10}{20}19:35:03|14.01.2011
{20}{45}19:35:04|14.01.2011
{45}{70}19:35:05|14.01.2011
{70}{94}19:35:06|14.01.2011
{94}{119}19:35:07|14.01.2011
{119}{143}19:35:08|14.01.2011
......

其实差别不大,就是第二个大括号里的数字需要和下一行第一个大括号里的数字一致。恰恰是因为DV Sub Maker生成的SUB字幕文件不一致,导致了播放时字幕的跳动。

手动修改起来很繁琐,于是写了页面来纠正这个错误。打开DV Sub Maker生成的SUB文件时间码修正页面,上传有问题的SUB文件,页面会自动生成改好的时间代码,复制下来替换掉SUB文件的内容即可。

到这里,这篇文章基本上算是写完了。接下来要做的一般都是剪辑视频等,相应地,字幕文件也需要剪切调整。这个工作可以利用Vobsub工具(点击下载),解压之后,在该目录下运行命令“rundll32 vobsub.dll,Cutter”或“rundll32 vobsub.dll,Joiner”,可分别打开剪切或合并字幕的工具窗口。另外,也可以用刚才压缩包中的“Subresync”工具来将SUB文件转为SRT、SSA、ASS等其它软字幕格式。

Subs Cutter

Subs Joiner

后记:网上流传着一个名为DvPlusTimeCode的软件,同样可以实现对DV Sub Maker生成的字幕跳动问题的修正,所以DV Sub Maker生成的SUB文件时间码修正页面这个页面,便不会再维护了。

You can follow any responses to this entry through the RSS 2.0 feed. Responses are currently closed, but you can trackback from your own site.

Comments are closed.

Back to Page Top