【影视技术】如何在影片的播放和压制过程中实现双字幕

转自点点 14 年前 回复

, , , , ,

字幕一般分为两大类:
1、文本字幕:如srt、ssa、ass、sub等;
2、图形字幕:如idx+sub、idx+rar等,其中idx是字幕索引,sub是字幕内容,两者必须同时使用;而rar其实就是sub的winrar压缩文档,主要是为了节约些硬盘空间而已;
其中,最常见的字幕类型为srt、ssa和idx+sub这3种字幕,srt和idx+sub字幕一般是影片的对白字幕,而ssa字幕为特效字幕,常用于压制过程中做为水印;
下面以Media Player Classic暴风影音播放器(简称MPC)来讲解,其它播放器可参照此方法进行;
MPC的版本为V5.03.24 正式版,其中ffdshow的版本为20050318,vobsub的版本为2.36;
首先安装DirectX 9.0C,然后安装MPC播放器,建议按照默认安装即可,同时会安装ffdshow解码包和vobsub字幕软件;
先说一下单字幕的实现,如下图:
本例使用的是一部DVDrip的影片,后缀名为avi,影片字幕是idx+sub格式的图形字幕;
把影片和字幕文件改为同名并放到同一文件夹内,用MPC播放即可自动调用Vobsub实现单字幕的播放;
Vobsub的字幕功能几乎可以支持所有类型的字幕格式,因此上图中的字幕类型可以任意变化;
一、利用MPC的内建字幕引擎实现双字幕:
打开MPC的选项,选择“输出”,在DirectShow中选择“VMR9(无转换)”。如果你只安装了低版本的DirectX,而且操作系统是windows xp及以上版本,此处选择“VMR7(无转换)”,然后确定:
退出MPC并重新播放影片,在“文件->载入字幕”中选择需要载入的新字幕,可以选择当前正在播放的字幕文件:
载入双字幕后可能两个字幕会重叠,我们可以分别利用MPC的字幕功能和vobsub的字幕功能进行调整:
MPC的调整如下:
下面调节另外一个用Vobsub所挂的字幕,双击右下角任务栏中的Vobsub绿色箭头小图标进入Vobsub的属性界面,调节如下:
注意:字体和颜色的调节只对文本字幕有效,对图形字幕是无效的;建议字体设置为黑体粗体小二;
播放的效果如下图(中英文字幕):
如果载入的是ssa水印字幕,效果如下图(右上角为ssa水印字幕):
MPC的内建字幕引擎+Vobsub基本可以搞定所有字幕类型的双字幕播放,所以以上的字幕类型可以任意变化;
说明几点:
1、此方法适用于rm、rmvb、mpg和dat等格式的视频;
2、idx+sub字幕如果是多语言字幕,可以用MPC和Vobsub导入同一个idx+sub字幕,然后选择不同的语言,常用于中英文字幕的显示;
3、此方法需要显卡支持D3D硬件加速功能才可以,否则MPC的内建字幕引擎不能启动;
4、此方法只适用于播放时双字幕的实现,而不适用于压制时的双字幕实现;
二、利用ffdshow的“字幕”功能实现双字幕:
用MPC播放影片,然后双击右下角的ffdshow图标,或者进入“暴风影音综合设置”中,选择FFDShow视频设置:
进入ffdshow的设置界面,选择“字幕”项,导入srt文本字幕文件,并根据实际情况做相应的显示位置的调整;
说明几点:
1、此方法适用于ffdshow可以支持的视频格式,如dvdrip、hdtvrip等格式的avi文件;
2、ffdshow的字幕功能不支持有特效的ssa字幕,而且对idx+sub图形字幕的支持有限,导入的图形字幕不能调整显示的位置而且显示的效果不太好,因此建议在ffdshow中只用来挂srt文本字幕;
3、此方法既适用于播放时的双字幕实现,又适用于压制时的双字幕实现;
三、利用ffdshow的Avisynth功能实现双字幕:
首先必须安装Avisynth 2.5.5,此方法是利用avs语句来实现双字幕;如果你对avs语句不了解也没有关系,这里其实只是用到了avs的非常简单的几个语句,照猫画虎就可以了;
进入ffdshow设置界面,选择Avisynth项:
填入如下语句:
LoadPlugin("VSFilter.dll")
VobSub("e:\007.idx")
注意第一个语句是载入字幕滤镜,但必须保证C:\windows\system32目录下有VSFilter.dll这个文件才可以这样写,否则就必须指定该文件的具体路径,如:
LoadPlugin("C:\Program Files\Ringz Studio\Storm Codec\Codecs\VSFilter.dll")
Vobsub的功能是载入图形字幕,后面是字幕的具体位置;当然也可以导入srt和ssa文本字幕,但文本字幕必须用Textsub语句加载,如:
LoadPlugin("VSFilter.dll")
TextSub("e:\film\007.srt")
或者是:
LoadPlugin("VSFilter.dll")
TextSub("e:\mysuiyin.ssa")
也可以同时加载Vobsub和Textsub语句来实现双字幕甚至是多字幕,如:
LoadPlugin("VSFilter.dll")
VobSub("e:\007.idx")
TextSub("e:\film\007.srt")
说明几点:
1、此方法适用于ffdshow可以支持的视频格式,如dvdrip、hdtvrip等格式的avi文件等;
2、此方法既适用于播放时的双字幕实现,又适用于压制时的双字幕实现;
四、直接利用avs语句来实现双字幕:
首先必须安装Avisynth 2.5.5,然后新建一个文本文件,填入如下内容:
LoadPlugin("VSFilter.dll")
DirectShowSource("e:\film\007.avi")
VobSub("e:\film\007.idx")
TextSub("e:\film\mysuiyin.ssa")
保存,并把文本文件的后缀txt改为avs,直接用MPC播放器播放此avs文件就可以显示双字幕;注意最好不要把avs文件跟影片放到同一文件夹内,即使放到同一文件夹内也不要跟影片名重名;
此方法一般不用于播放,因为avs的播放比较占用系统资源,系统配置较低的机子播放起来会很卡;
这种方法一般都用于影片的压制,可以用ERP等软件直接调入该avs文件压制即可;

支付宝打赏微信打赏

如果此文对你有帮助,欢迎打赏作者。

发表评论

欢迎回来 (打开)

(必填)