高级字幕制作与特效.docx
《高级字幕制作与特效.docx》由会员分享,可在线阅读,更多相关《高级字幕制作与特效.docx(33页珍藏版)》请在冰点文库上搜索。
高级字幕制作与特效
声明:
本文内容由Shiner创作,其中部分特效代码使用漫游的《魔法使的注意事项》SSA文件中的特效,引用部分均声明来源,并未作任何修改,其代码创作权归漫游。
其他未声明的代码由Shiner创作,解释权归Shiner所有。
文章所有内容均可转载,但需在显著位置声明原创人为Shiner,标出来源,并加有[转载]字样,转载的任何部分未获得Shiner授权均不能添加删节或修改,本声明部分要同时完整的被转载。
本文涉及到的所有示例,均通过VobSub2.23测试。
因水平问题,文中难免有不妥和疏漏之处,恳请给予批评指正。
同时欢迎感兴趣的朋友探讨特效制作。
联系方式:
MSNshiner527@。
高级字幕制作与特效
WrittenByShiner(编写人:
Shiner。
)
目录
前言3
第一章字幕制作简介4
第一节常见字幕格式4
第二节常用软件5
第三节简单的字幕制作6
第二章SSA格式基础9
第一节几个概念9
第二节格式11
第三节事件12
第三章SSA格式高级篇14
第一节变换滤镜14
第二节跨格式标记15
第三节函数23
前言
平时很爱看电影和动画。
接触动画多了,发现动画的OP和ED部分特效十分华丽,遂对此兴趣倍增。
但翻遍网络,大多文章介绍时间轴字幕的制作,对于特效的介绍少之又少。
几经波折,终于初窥字幕特效制作之门径,突然萌生想法,何不自己动手写一篇这方面的文章呢。
于是本文诞生了!
俗话有云:
“说起来容易,做起来难。
”的确,在写作本文的过程中遇到不少的问题,甚至曾经要放弃这个想法。
拖拖拉拉许多天,总算是完成了。
由于本人也是新手,所以不免有疏漏错误,望达人们在耻笑之余给予批评指正,同时希望对新学者有所帮助。
本文面对的是有一定的字幕制作基础的读者,如果还不清楚字幕制作最基本的时间轴制作,那么请先学习有关字幕时间轴制作的相关文档。
文中有些约定,必须先向各位介绍,否则对内容会产生误解。
文中参数都是用一对尖括号括起来。
<>
可选参数使用一对方括号括起来。
[]
多个选择其中之一用斜杠隔开。
/
示例代码都被框住显示。
第一章字幕制作简介
随着网络的普及,电影和动画也借助网络快速的发展着。
的确,其速度之快令人瞠目结舌,今天首映的大片,明天就可以在某个网站搜到;晚上刚刚播出的动画,几个小时以后就会出现在某知名BT站点。
在我们惊讶其出片速度之快的同时,难道就没有想过更深入的了解一下字幕制作的内幕么?
字幕制作其实一点也不神秘,可分为片源提供、文稿翻译、时间轴、特效、校对、内嵌、压制几个步骤。
而我们将要重点讨论的就是特效部分,其他方面已经有不少相关的文章介绍,在这里就不一一赘述了。
第一节常见字幕格式
字幕文件有很多种,DVD使用的是图形化的字幕,由引导文件引导,相比这是一种低级的字幕形式,但是毕竟是外挂字幕的里程碑。
如图:
图1.1DVD字幕
SRT和SSA字幕是更高级的字幕形式,这种字幕是文本文件,体积小巧,便于传输,修改方便。
SRT只是带有显示时间和字幕文本的外挂字幕,而SSA除了上述SRT的特点外,最重要的是带有格式化文本的功能,这也是制作特效的基础。
下图是外挂SSA字幕的动画:
图1.2SSA字幕
第二节常用软件
工预善其事,必先利其器。
制作字幕就要准备好相应的软件。
SubCreator和SubStationAlpha是两款常用的字幕制作编辑软件。
有很多文章介绍SubCreator的使用方法,这里就不详细说明了,但是我们会在后续的学习中使用到。
而SubStationAlpha的使用又涉及到许多关于SSA字幕格式的知识,所以我们会慢慢的介绍这款软件。
下图是SubStationAlpha的界面:
图1.3SSA界面
第三节简单的字幕制作
学习制作特效字幕之前,简单回顾一下一般字幕的制作方法。
首先需要准备好一些东西:
片源,翻译稿,SubCreator软件。
我以漫游制作的《魔法使的注意事项》第一话为例,简单叙述一下:
首先启动SubCreator,调入魔法使第一话的片源AVI文件和翻译文本,如图:
图1.4调入文本和片源
然后创建时间轴,校对保存成SSA文件格式。
如图:
图1.5创建时间轴
保存SSA文件的时候按照如下设置,字体选择黑体,字号15,四个颜色分别选择&Hffffff、&Hfcc4a5、&H000008和&H000008。
这些颜色的表示使用的是十六进制表示法,格式是&H加上十六进制颜色值,颜色值共6位,以BBGGRR的顺序排列,即头两位表示蓝色色阶,中间表示绿色色阶,最后两位表示红色色阶。
当然,也可以将十六进制颜色值转化为十进制值直接写入,不用加前面的&H。
就SubCreator来说,通过颜色选择而自动生成的代码使用的是十进制的数值,但是为了方便将来手动编写代码,我建议使用十六进制表示法。
十六进制表示颜色值的好处在于可以清晰的看出组成颜色所使用的三元色(光学三元色,即红色、绿色、蓝色)之间的比例关系,甚至熟悉颜色编码的可以直接看出是什么颜色。
其他的设置如图:
图1.6保存成SSA文件
用记事本之类的文本编辑器打开刚刚生成的SSA字幕文件,会出现下面一些内容:
[ScriptInfo]
;ThisisaSubStationAlphav4script.
;ForSubStationAlphainfoanddownloads,
;gotohttp:
//www.eswat.demon.co.uk/
;oremailkotus@eswat.demon.co.uk
;
;Note:
ThisfilewassavedbySubResync.
;
ScriptType:
v4.00
Collisions:
Normal
PlayResX:
384
PlayResY:
288
Timer:
100.0000
[V4Styles]
Format:
Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,TertiaryColour,BackColour,Bold,Italic,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,AlphaLevel,Encoding
;正文字幕
Style:
Default,simhei,15,&Hffffff,&Hfcc4a5,&H000008,&H000008,0,0,1,1,1,2,30,30,10,0,1
[Events]
Format:
Marked,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text
Dialogue:
Marked=0,0:
02:
27.50,0:
02:
31.00,Default,,0000,0000,0000,,这条街上的太阳已经死去
Dialogue:
Marked=0,0:
02:
31.00,0:
02:
33.60,Default,,0000,0000,0000,,天空又狭窄也没有深山
Dialogue:
Marked=0,0:
02:
34.40,0:
02:
37.20,Default,,0000,0000,0000,,映入眼帘的只有灰色的建筑物
Dialogue:
Marked=0,0:
02:
37.20,0:
02:
38.60,Default,,0000,0000,0000,,跟人来人往的人潮
Dialogue:
Marked=0,0:
03:
22.50,0:
03:
24.00,Default,,0000,0000,0000,,好痛
Dialogue:
Marked=0,0:
03:
24.00,0:
03:
25.50,Default,,0000,0000,0000,,好痛…
Dialogue:
Marked=0,0:
03:
25.50,0:
03:
26.10,Default,,0000,0000,0000,,你不要紧吗?
Dialogue:
Marked=0,0:
03:
28.50,0:
03:
29.50,Default,,0000,0000,0000,,你受伤了吗?
Dialogue:
Marked=0,0:
03:
34.20,0:
03:
35.40,Default,,0000,0000,0000,,你想到对面去吧
Dialogue:
Marked=0,0:
03:
37.60,0:
03:
38.60,Default,,0000,0000,0000,,那就跟我来吧
Dialogue:
Marked=0,0:
03:
40.00,0:
03:
40.60,Default,,0000,0000,0000,,那个…
Dialogue:
Marked=0,0:
03:
49.60,0:
03:
50.00,Default,,0000,0000,0000,,危险
Dialogue:
Marked=0,0:
03:
57.60,0:
03:
59.00,Default,,0000,0000,0000,,那是怎么回事?
Dialogue:
Marked=0,0:
03:
59.00,0:
04:
02.10,Default,,0000,0000,0000,,怎么了?
Dialogue:
Marked=0,0:
04:
02.10,0:
04:
04.80,Default,,0000,0000,0000,,骗人的吧
Dialogue:
Marked=0,0:
04:
08.80,0:
04:
10.40,Default,,0000,0000,0000,,轻轻地放下轻轻地…
Dialogue:
Marked=0,0:
04:
23.00,0:
04:
25.50,Default,,0000,0000,0000,,我没想到车子会飞得那么高
Dialogue:
Marked=0,0:
04:
25.50,0:
04:
26.90,Default,,0000,0000,0000,,那是你做的吗?
Dialogue:
Marked=0,0:
04:
26.90,0:
04:
28.10,Default,,0000,0000,0000,,你是魔法使者吗?
我只是截取其中的一小部分作为例子显示出来,由于设置等等的不同,可能你自己所创建的文本与我的稍有差别,这都是正常的。
以上就是SSA代码,我们制作的各种特效都是基于SSA格式代码完成的。
也许看到这里你觉得头晕目眩,不知其所云,没有关系,从现在开始我们就慢慢接触这些怪怪的家伙。
现在,你可以先试一试效果,把字幕文件的名字改成片源的名字,当然扩展名是要区别开的。
然后播放一下试试吧。
注意:
VobSub一定要保持最新的版本,不然一些特效甚至单纯的字幕都播放不出来。
我推荐使用暴风影音,安装一个,一起解决字幕外挂、视频编码等问题。
附加说一点,由于每个人的SubCreator版本不同,可能生成的代码也不同,这一点是至关重要的,因为它意味着有些代码你必须手动编写进去。
不要急,以后我们都是要手写的,没有什么好担心,静一静自己的大脑,开始奇妙的字幕制作旅途吧。
第二章SSA格式基础
在全面学习SSA代码编写特效之前,先介绍几个概念。
SSA文件的结构正是由这些概念所组成的,在以后的SSA代码学习过程中,你会发现这些概念紧紧伴随你左右。
本章简单的介绍了SSA文件的几个重要部分,对其中的信息部分和事件部分又做了进一步的讨论。
结束本章的学习后,你将惊喜的发现,SSA文档已经去掉了神秘感,展现在你眼前的再也不是不知所云的天书了,并且你可以尝试着在上一章例子的基础上做一些改动,使得你的字幕看起来更加可爱。
第一节几个概念
SSA文档结构性很强,从上面的例子中可以看到,第一行有[ScriptInfo]这样的文字。
还有下面有[V4Styles]和[Events]两行,凡是这种行开头用一对中括号括起来的文字都标识着SSA文档的一个部分。
第一个概念,部分。
SSA文档可以分成若干的部分,但是主要的部分只有两个。
下面一一介绍。
[ScriptInfo]信息部分。
这部分保存关于SSA代码脚本总信息。
必须要放在SSA文档的首位。
也是必不可少的一个部分。
[V4Style]格式部分。
这部分定义制作字幕中所用到的格式类型。
[Events]事件部分。
这部分保存具体的字幕显示方式。
[Fonts]字体部分。
对于内嵌字体信息的定义。
[Graphics]图像部分。
对于内嵌图像信息的定义。
其中[Fonts]部分和[Graphics]部分一般不用,所以我就不费笔墨做过多的介绍,以后用到会做介绍的。
一般的SSA文件由前三个部分所组成,尤其是格式定义和事件部分的完美结合,体现了SSA外挂字幕的格式自定义的特点。
这样,又引申出另一个概念,格式。
[V4Styles]
Format:
Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,TertiaryColour,BackColour,Bold,Italic,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,AlphaLevel,Encoding
Style:
Default,simhei,15,&Hffffff,&Hfcc4a5,&H000008,&H000008,0,0,1,1,1,2,30,30,10,0,1
这段代码取自上一章我们使用SubCreator生成的SSA字幕文件,其中第三行由Style字样开始的就是定义格式,在同一个字幕文件中可以定义很多种类不同的格式,用于显示不同用途的字幕,比如可以定义专门显示字幕的主风格,然后再定义一个用来显示歌词文本的字幕格式,定义用来显示制作成员列表的字幕格式,定义用来显示免责声明的文本格式。
但是无论怎样发挥你的聪明才智去定义五花八门的字幕格式,Default格式是必不可少的。
在Style定义的格式中,规定了将来在事件部分中使用此格式的字体名称,字号等等各种各样的属性,Style定义字体的具体介绍会在第二节讲解。
定义了各种格式之后,就要实际应用到字幕显示中,这在事件部分[Events]中实现。
好,介绍第三个概念,也是最重要的概念,事件。
[Events]
Format:
Marked,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text
Dialogue:
Marked=0,0:
02:
27.50,0:
02:
31.00,Default,,0000,0000,0000,,这条街上的太阳已经死去
Dialogue:
Marked=0,0:
02:
31.00,0:
02:
33.60,Default,,0000,0000,0000,,天空又狭窄也没有深山
Dialogue:
Marked=0,0:
02:
34.40,0:
02:
37.20,Default,,0000,0000,0000,,映入眼帘的只有灰色的建筑物
Dialogue:
Marked=0,0:
02:
37.20,0:
02:
38.60,Default,,0000,0000,0000,,跟人来人往的人潮
我截取了上一章生成的SSA文件一小部分事件代码。
从[Events]标注开始的都是事件部分。
发生在同一时间或者时间段内,具有相同或者极其相近属性的事情,称为事件。
SSA规定了对话(Dialogue)事件、注释(Comment)事件、图片(Picture)事件、声音(Sound)事件、影片(Movie)事件和命令(Command)事件这样几类。
这里我们只是使用了对话事件。
从第三行开始,每一行的起始都是Dialogue标记,这就是对话事件。
切记,每一个事件占用一行的文本,所以不能把同一个事件分成多行书写。
在一般的字幕制作中,显示在一个画面的字幕正好对应一个对话事件,所以如果同时显示两行字幕的话,虽然想要使用双行显示,但是由于这两行文本是同时出现在同一个画面里面(即上面所提到的发生在同一个时间段内),而且都是主字幕(即具有相同的属性),应该属于同一个事件,而同一事件不能写成两行,所以输入的字幕文本不能加入回车换行。
解决这类问题要用到跨格式标记(StyleOverride),后面会有大篇幅详细介绍。
注释事件就是一个以分号为行首的文本,例如,我们在上面的例子中在默认的Default格式定义的下面加上一个说明其功能的注释:
[V4Styles]
Format:
Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,TertiaryColour,BackColour,Bold,Italic,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,AlphaLevel,Encoding
;下面的格式定义了主字幕显示时候使用的字体风格
Style:
Default,simhei,15,&Hffffff,&Hfcc4a5,&H000008,&H000008,0,0,1,1,1,2,30,30,10,0,1
其中第三行行首的分号表示本行后面的内容都是注释,注释在脚本执行的时候自动忽略。
对于有编程经验的人来说,理解什么是注释并不困难。
我们只不过是把C++语言中的符号“//”变成分号而已,不过不要忘记这一点。
其他类型的事件在今后用到的时候再提起。
刚才我们讨论对话(Dialogue)事件的时候提到了跨格式标记(StyleOverride),先看下面的代码:
Dialogue:
Marked=0,0:
01:
21.70,0:
01:
30.00,Title,,0000,0000,0000,,{\pos(120,220)\fs28\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}魔法使
Dialogue:
Marked=0,0:
01:
21.70,0:
01:
30.00,Title,,0000,0000,0000,,{\pos(175,220)\fs20\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}的
Dialogue:
Marked=0,0:
01:
21.70,0:
01:
30.00,Title,,0000,0000,0000,,{\pos(140,251)\fs30\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}注意事项
我们刚刚介绍了事件(Events)的概念,这三行代码正好就是对话(Dialogue)事件。
可以看出来这里的对话事件和前面的有所不同,注意每行最后一个逗号后面的文本:
{\pos(120,220)\fs28\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}魔法使
{\pos(175,220)\fs20\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}的
{\pos(140,251)\fs30\fade(255,0,0,0,1000,1600,1700)}{\t(1000,1500,,\1c&Hcdbe91&)}{\t(1500,2000,,\bord0)}{\t(1500,2000,,\1c&H000000&)}{\3c&Heef0b9&\t(2800,4200,,\bord3)}注意事项
和刚才我们自己编写的纯文本并不一样,增加了很多奇奇怪怪的东西,这些就是跨格式标记(StyleOverride)代码,这里的代码使用了漫游提供的《魔法使的注意事项》中动画名称显示特效的代码,我们把它添加在自己创建的SSA文件中的[Events]部分里面。
至于代码是怎样起作用的,以及如何使用代码,不要急,心急吃不了热豆腐。
总结一下,我们介绍了几个概念,也许现在你对于这些概念还是一头雾水,没有关系,头脑里有个大概的印象就可以了,我们一步一步来。
简单重复一遍,SSA文件分为[StyleInfo]信息部分、[V4Stlye]格式部分、[Events]事件部分等;格式部分中以Style为行首标记一行文本定义了一种风格的字幕格式,我们可以定义很多种格式,但是必须有Default格式;[Events]中以Dialogue为行首的一行文本是一个对话事件,用来显示字幕,以分号为行首的是注释,脚本执行的时候会忽略;高级字幕格式设置需要使用被称作跨格式标记(StyleOverride)的代码。
记住它!
第二节格式
我们在本章第一节介绍了格式的有关概念,我们认识到格式是对字幕风格的定义。
具体的定义方法我们还不了解,只能使用SubCreator生成代码,下面我们将自己创建新的格式。
首先我们学习格式的定义方法,介绍定义格式的各个字段及其功能,然后我们利用第一章的例子手动添加新的字幕格式。
字幕格式的定义很简单,在[V4Style]下一行写入Format字样,表示这是格式的内容先看例子:
Format:
Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,TertiaryColour,BackColour,Bold,Italic,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,AlphaLevel,Encoding
Format:
表示定义格式的内容。
这里的冒号不能省略。
这一行必须紧跟在[V4Style]之后,要在所有以Style:
开始的格式定义之前,这样脚本中定义的格式才能被正确识别。
冒号之后跟着若干字段,每个字段之间用逗号分隔。
这些字段的名字是规定好的,不能随意改变,所以在书写的时候一定要保证正确拼写所有的字段。
字段的顺序就是下面定义格式所使用的顺序。
在定义格式之前,必须了解每个字段的含义。
Name定义格式的名称。
比如叫做“SubFont”,表示主字幕所使用的格式。
注意的事情:
叫做“SubFont”和“subfont”名字的表示不同的格式,也就是说这个字段是区分大小写。
前面介绍过,无论SSA文件可以定义多少个格式,但是必须有Defa