切换到宽版
  • 1888阅读
  • 0回复

动态字幕的制作 [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 使用道具 0 发表于: 2007-04-13

动态字幕的制作

标题:SSA字幕特效制作方法
出处:幸福的小淼
作者:xiaomiao


内容:
关于SSA字幕文件可以用SubCreator来生成,然后用记事本打开有如下的形式:

[Script Info]
ScriptType: v4.00
Collisions: Normal
PlayResY: 480
PlayResX: 640
PlayDepth: 0
Timer: 100.0000

[v4 Styles]
Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,TertiaryColour,BackColour,Bold,Italic,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,AlphaLevel,Encoding
Style: New Style,幼圆,30,16777215,4227327,8404992,16744448,0,0,1,1,2,2,30,30,12,0,134


[Events]
Dialogue: Marked=0,0:00:00.20,0:00:03.30,New Style,NTP,0000,0000,0000,,UC0079年12月24日
Dialogue: Marked=0,0:00:05.30,0:00:08.30,New Style,NTP,0000,0000,0000,,我們要跟這艘戰艦共存亡
Dialogue: Marked=0,0:00:09.30,0:00:12.30,New Style,NTP,0000,0000,0000,,但我們不可讓你們白死
Dialogue: Marked=0,0:00:13.30,0:00:17.30,New Style,NTP,0000,0000,0000,,直至完成任務為止
Dialogue: Marked=0,0:00:18.40,0:00:20.40,New Style,NTP,0000,0000,0000,,差不多了
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,別慢吞吞

前面的[Script Info]可以先放着不管,[v4 Styles]中可以直接用我给出来的,红字部分12是代表字幕在垂直方向的位置如果觉得12太低了话

可以将数值改大如果想将字幕置顶的话就改成440试试吧; 134是代表的GB字库,136好像是BIG-5字库。 0是代表字幕的透明度,取值范围0~255。

[Events]就不用说了,就是正式的字幕,动态效果就在这里进行设置。先用为快

我给出几个范例(用上面的字幕进行修改):

滚动字幕:
Dialogue: Marked=0,0:00:00.20,0:00:03.30,New Style,NTP,0000,0000,0000,Banner;30;0;50,UC0079年12月24日
Dialogue: Marked=0,0:00:05.30,0:00:08.30,New Style,NTP,0000,0000,0000,Scroll up;0;240;30;20,我們要跟這艘戰艦共存亡
第一个是横向滚动,30是速度、0代表右->左(改成1就是左->右)、50代表在屏幕边缘的透明度,值越大,字幕就...(不好形容自己试试就知道了,这个参数可以缺省设置)
第二个是纵向滚动,0和240代表Y轴坐标(可缺省)、30是速度、20是透明度(同上),另外,把UP改为DOWN就是上->下滚动

旋转字幕:
Dialogue: Marked=0,0:00:09.30,0:00:12.30,New Style,NTP,0000,0000,0000,,{\t(\fry720)}但我們不可讓你們白死
其中,“y”代表沿y轴转,“x”“z”均可、720代表的是度数,旋转快慢由你所定义的动作时间而定(时间长,旋转慢;反之则快。)。要想饶XYZ三轴转就分别添加{\t(\frx__)}{\t(\frz__)}(__填上你想要的速度)

任意坐标移动
Dialogue: Marked=0,0:00:13.30,0:00:17.30,New Style,NTP,0000,0000,0000,,{\t(\move(32, 48, 200, 320))}直至完成任務為止
32,48代表起始位置坐标200,320表示终止位置坐标。

卡拉OK效果
Dialogue: Marked=0,0:00:18.40,0:00:20.40,New Style,NTP,0000,0000,0000,,{\k94}差{\K48}不{\ko80}多{\k150}了
大写的K=从左至右填充色彩(SecondaryColour为底色;PrimaryColour为填充色); ko=outline高亮显示(不推荐) ;数字是表示填充时间,单位:10ms

淡入淡出效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{\fad(300,550)}別慢吞吞
300-淡入时间,550-淡出时间 ,单位:毫秒(ms)。

强制字体效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{\fn宋体)}別慢吞吞
无特别提示。

强制颜色效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{\c&H00ffff&}別慢吞吞
关于颜色的代码,请见第二讲的内容。

强制透明度效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{1\a&H50&}別慢吞吞
1是代表第一颜色的透明度,2、3、4以此类推,透明度取值:00~FF。

以上就是一些常用的字幕特效,怎么样?还是很简单吧。
先用为快,以上的例子都是写简单的,不想深入的朋友,用上面的足够了。
下面将对SSA的参数的设置做一个比较详细的解说。

想要深入研究的朋友可以看看这里了。这次先从Script Info 讲起。Script Info——

脚本信息,顾名思义就是你所制作的字幕文件的一些信息,具体格式因所使用的编辑器不

同而不同,但却要遵守一个原则:就是要在开头用“[Script Info]”来标记。下

面是用SubCreator编辑时的脚本信息:

[Script Info]
Title: 08ms team 12
ScriptType: v4.00
Collisions: Normal
PlayResY: 480
PlayResX: 640
PlayDepth: 0
Timer: 100.0000

其中红字部分是重要部分,它会影响到后面的设置:比如ScriptType: v4.00会影响字幕特

效的相关命令(有一部分命令是要在v4.00+中才会实现的,因为V4+的代码是基于V4基础上

的有相似点,所以在此还是先介绍v4.00);

640 480则会影响字幕定位时的坐标。

接着,我们来看看v4 Styles,在这部分,我们要做的

就是设置字幕的各种属性简单的说就是设置全局参数。还是先放上例子再来说明吧:

[v4 Styles]
Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,TertiaryColour,BackColour,Bold,Italic,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,AlphaLevel,Encoding
Style: New Style,幼圆,30,16777215,4227327,8404992,16744448,0,0,1,1,2,2,30,30,12,0,134
Style: TITAL,宋体,40,13777215,2327327,5404392,14744448,0,-1,1,1,2,2,15,15,270,0,134

format是在说明各参数的含义:
name:你给这种风格的字幕所起的名字;
Fontname:字体类型;
Fontsize:文字大小;
PrimaryColour:第一字幕色——字幕首选色;
SecondaryColour:第二字幕色(目前本人仅知道在卡拉OK效果时会用上);
TertiaryColour,BackColour:字幕边缘色,阴影色;
Bold,Italic:粗体(B),斜体(I) 0为关闭,-1为开启;
BorderStyle;字幕显示方式:1=Outline + drop shadow, 3=Opaque box;(不好用中文表述,就采用原话,推荐用1)
Outline,Shadow:当上面的设置是1时,就可以设置文字的边框和阴影的粗细了,可取值:0,1,2,3,4;
Alignment:设置文字的对齐方式:1=左对齐,2=中对齐,3=右对齐,4=置顶,8=置中,5=1+4=置顶左对齐,6=2+4,11=3+8,应该知道是什么了吧;
MarginL,MarginR,MarginV:字幕距左、右以及垂直方向的距离,(会影响字幕的垂直方向的坐标和一排能显示的字幕个数,超出则会自动换行)推荐值:10,10,12底端,顶端不好定,只有编出来后再来调整;
AlphaLevel: 字幕的Alpha值,简单的说就是字幕的透明度,取值范围0-255;
Encoding:字幕的编码方式,没什么多说的:具体代码:0=ANSI,1=DEFAULT,2=SYMBOL,128=SHIFTJIS,129=HANGEUL,134=GB2312,136=CHINESEBIG5,255=OEM,130=JOHAB,177=HEBREW,178=ARABIC,161=GREEK,162=TURKISH,163=VIETNAMESE,222=THAI,238=EASTEUROPE,204=RUSSIAN,77=MAC,186=BALTIC;(红字部分为常用的)

注意
字幕风格可以设置多种,只要名字不同就可以在同一时间执行不同风格的字幕事件,

Dialogue: Marked=0,0:00:00.20,0:00:03.30,New Style,NTP,0000,0000,0000,,UC0079年12月24日

红字部分就是你所用的某种风格的字幕的名称。

接下来,说说字幕的颜色。 .......其实也没什么说的,本想直接编一个小程序自动

显示所选色彩的颜色代码,但最近学习真的很忙,没那精力,就在这里说说吧。小学时就学

过RGB三原色,其他颜色也就是这三种原色搭配而产生的,在WINDOWS里,三原色也有相应的

值以16进制编译,三种色都定义了256种色彩深度也就是0-FF,任何颜色按RGB表示出来假如说

是56F49E,在SSA中就要以BGR形式表示出来,即:9EF456。色彩代码要注意的就只有这一点

关于色彩的代码获得可以在WINDOWS的绘图工具中找自定义颜色然后把三原色的10进制数值转换

成16进制按BGR顺序排列就可得到。


关于用SUBCREATOR生成的SSA字幕时间轴不准确的问题:

看到有人提到这个问题,因为是整体有偏差,所以可以用vobsub附带的subresync来调整,方便些。

具体做法就看这里吧


特效码一览

格式修改: [在字幕中插入,例如: 今天的天气\n好晴朗啊]

\n........................空格(是当字幕在一行显示不完时会换行,但是对于双字节的字符无法判断是否超出屏幕)
\N........................强制换行
\h........................强制空格

在{...}之间加入的特效码: <>内表示可用的参数,[]内表示可选参数,在具体使用时不用加 <>,[]
\a <alignment>...........................................强制字幕在屏幕上的对齐位置:具体见关于alignment说明
\b <0/1/weight>..........................................字体加粗
\i <0/1>.................................................斜体字
\u <0/1>.................................................下划线
\s <0/1>.................................................删除线
\bord <width>............................................字体加宽
\shad <depth>............................................阴影深度
\be <0/1>................................................边角模糊
\fn <name>...............................................强制字体类型
\fe <charset>............................................强制字幕编码
\fs <size>...............................................强制字幕大小 例如:\fs34
\fsc <x/y> <百分比>........................................字体比例[fscx代表横向比例fscy代表纵向,单位:百分比]
\fsp <pixels>............................................字间距
\fr[ <x/y/z>] <角度数>.....................................旋转[x,y,z轴三个方向]
\fe <charset>............................................字符编码
\c&H <bbggrr>&...........................................强制字幕色
\ <1/2/3/4>c&H <bbggrr>&..................................主/次/外框/阴影 字幕色设定
\alpha&H <aa>&...........................................透明度
\ <1/2/3/4>a&H <aa>&......................................主/次/外框/阴影 透明度
\k[ <f/o>] <duration>.....................................卡拉OK效果 (f-从左至右添充[未填充时显示次要色,填充后显示主色], o-字幕外框高亮显示?)
\K......................................................跟 \kf 同样效果(填充效果)
\r[ <name>]..............................................强制加载名为“name”的预设风格 ["[v4 Styles]"定义的]
\t([ <t1>, <t2>,][ <加速度>,] <特效码>)...................动态显示, 加速度: 0~1减速, 大于1加速(方括号内的可以却省设置)
\move( <x1>, <y1>, <x2>, <y2>[, <t1>, <t2>]).........移动(方括号内的可以却省设置)
\pos( <x>, <y>)...........................................强制定位
\clip( <x1>, <y1>, <x2>, <y2>)...........................字幕裁剪
\fad( <t1>, <t2>).........................................淡入淡出[t1-开始时间,t2-结束时间]
\q <num>.................................................换行方式:0智能换行,1行尾换行,2无换行,3智能换行(尽量使下一行宽于上一行)


所谓后加工,主要也就是添加特效代码,修改字体大小颜色等工序。
基本字幕的制作目前有很多工具都能办到。
上面列举的也并不是SSA的全部,另外还有SSA的加强格式ASS,
因为支持更多的控制代码,所以合理的搭配可以玩出更很多花样。

关于ASS,实在没多大精力重新解说了。
因为80%的都与SSA相同,加之现在的字幕插件里面都附带
了ASS的说明文件的,只要仔细阅读,就能轻松掌握。
还是多留些想像空间给各位爱好者吧

一些需要注意事情:

 1.要想在外 挂字幕的时候能看到动态效果;请务必关闭VSFILTER的Pre-buffer subpictures

 2.注意字幕文件的保存格式,有ANSI和UNICODE之分,针对不同的系统以及不同版本的VSFILTER,选择不同的保存方式。(如果用ANSI方式保存不能正常显示,就换UNICODE来保存)另外要注意字体名称不要写错了。

ssa字幕特效
学习ssa字幕特效,应该在掌握压制原则和技巧的基础上,如此达到锦上添花的效果。不要为了特效而去特效。加载特效字幕流,码率不要低于280k。

我这个特效技巧不包括卡拉ok和绘图命令,侧重于常用的几个语法和时间轴嵌套。入门参见我之前发的那个普通教程。

一,滚动和移动

横幅滚动 :Banner;
Dialogue: Marked=0,0:00:01.30,0:01:28.90,Default,,0000,0000,0000,Banner;28;0;60,郑重声明:本作品之片源、字幕均来自互联网,版权归原电影公司所有。任何组织和个人不得公开传播或用于任何商业盈利用途,否则一切后果由该组织或个人承担!本站和制作者不承担任何法律及连带责任!请自觉于下载后24小时内删除。如果喜欢本片,请购买正版!{\move(20, 20,20,20}

或者:
Dialogue: Marked=0,0:00:01.34,0:00:50.35,mine,,20,20,260,Banner;28;0;60,本作品来自互联网,仅供个人影视制作学习交流之用,任何组织和个人不得公开传播或用于任何商业盈利用途……

这2个的效果都是在影片的顶部从右到左的滚动出现免责信息。Banner之前的260是方位,表示显示在顶部,改成10或者下面的那个{\move(20, 20,20,20}去掉即显示在屏幕的底部,根据爱好确定部位好了。Banner之后的3个参数分别表示:28是滚动的速度,越小速度越快;0是从右到左,改成1就是从左到右;60是淡出,你将这个数值改成100再看看效果即可明白!

从下往上
Dialogue: Marked=0,0:00:00.20,0:00:10.10,Default,,0000,0000,0000,Scroll up;0;300;40;70,往上滚动

从上往下
Dialogue: Marked=0,0:00:00.20,0:00:10.10,Default,,0000,0000,0000,Scroll down;0;300;40;70,往下滚动

0;300表示移动的距离 40;是移动的速度,越小就越快 70是淡出

二,淡入淡出

vobsub的ssa语法
\fade(,,,,,, ) fadein: t1 -> t2, fadeout: t3 -> t4
\fad(, ) fadein: start -> start+t1, fadeout: end-t2 -> end

1,简单的淡入淡出
{\fad(1000,100)}和{\fad(100,1000)}
前者表示淡入(逐渐出现),后者表示淡出(逐渐消失)
小数据一般是灰度值,0-255。如果超过255,那么数值代表淡出的时间,不再表示灰度值,效果就是最简单的淡入淡出
大数据表示时间轴定义范围内效果的梯度显示及0-255灰度变化的时间范围。

2,控制性淡入淡出
{\fade(255,0,255,100,4000,8500,10000)}

一般前3个数值不要改动,表示逐渐出现(即灰度从0~最大的255),然后逐渐消失(即灰度从255~0),逐渐消失的时间控制由后面的4个数值控制。在定义的时间轴内(如这例,11秒),100-4000表示从0.1秒开始逐渐出现(效果的控制时间为到第四秒结束,即3.9秒),8500-10000表示从第8.5秒开始开始逐渐消失(效果控制的时间为1.5秒)

三,几个时间嵌套控制语法应用详解

vobsub的ssa语法
\fs size
\fsc scale
\fsp spacing
\fr[] rotation
\c&H& primary color

加入 \t(,\) 的时间控制参数,可以控制性的来显示特效显示,另外可以层层嵌套,实现难度较大的特效,如抖动、闪烁、变色等
\t(10,800,30,\...)里面前2个个数值分别表示(时间轴规定的时间范围内)出现时间和效果显示时间。第三个数值可以不要,但要保留后面的逗号,个别特效需要第三个数值来控制。...又可嵌套,但是需要注意后面的括号数目

1,字体控制性缩放{\t(\fs)}

控制性放大:{\fs15}{\t(0,800,\fs30)}或者{\fs15\t(0,800,\fs30)}
控制性缩小:{\fs30\t(0,800,\fs15)}
控制性缩小放大:{\fs30\t(0,800,\fs15)}{\t(2000,2800,\fs24)}或者{\fs30\t(0,800,\fs15\t(2000,2800,\fs24))}

表示在定义的时间轴范围内,先立即缩小(字体从30号缩小到15号),缩小的控制时间为800ms;然后在第2秒的时候再放大,放大的控制时间也是800ms。也就是说完成这个特效时间轴至少需要3秒的时间,如果时间轴超过3秒,那么3秒以后的显示效果就是最后一个特效完成后的状态,如,该例就是最终字体保持在24号

2,字体变形缩放{\t(\fscx)},{\t(\fscy)}

字体变长:{\t(0,500,\fscx500)}
字体变高:{\t(0,500,\fscy500)}
字体变长变高:{\t(0,500,\fscx500,\fscy300)}
极端效果:{\t(0,500,1,\fscx0,\fscy500)}和{\t(0,500,1,\fscx1000,\fscy0)}
默认大小是fscx100,fscy100。极端的效果是将字体无限拉长或者压扁,如此结合时间轴控制可以实现光影,如牛过的rmvb特效

3,字体间距缩放{\t(\fsp)}

一般是作成先放大间距再缩小间距的特效,比较动感。
{\t(0,800,\fsp20)}{\t(800,1300,\fsp5)}或者{\t(0,800,\fsp20\t(800,1300,\fsp5))}
一般结合{\move()}语法一起使用

4,旋转的特效{\t(\frx)},{\t(\fry)},{\t(\frz)}

旋转的特效变化比较多,稍微复杂些

x,y,z分别表示绕x轴,y轴和z轴旋转的角度,建议使用90的倍数,默认一般是右手螺旋或逆时针旋转

{\t(\frx1440)}绕x轴旋转4圈
{\t(\fry1440)}绕y轴旋转4圈
{\t(\frz1440)}绕z轴旋转4圈(风车旋转)

按一定方向旋转。为了好理解,以z轴旋转为例,大家想象成在一个钟面上

{\frz90\t(30,500,\frz0)}0点到3点
{\frz0\t(30,500,\frz90)}3点到0点
{\frz270\t(30,500,\frz180)}6点到9点
......套用即可

不加\t的情况表示沿坐标轴旋转一个角度,用于字体排版,抖动的特效就是嵌套这个语法而来的
如一个简单的抖动效果:(注意后面的括号数)
Dialogue: Marked=0,0:00:01.00,0:00:5.30,jrvs,,0000,0000,0000,,{\frz360\fs20\t(51,100,\frz390\t(100,150,\frz360\t(150,200,\frz330\t(200,250,\frz360\t(250,300,\frz390\t(200,250,\frz360\t(300,350,\frz330\t(350,400,\frz360)))))))))}♀抖动

结合字体缩放等实现一些简单的组合特效
如常用的字体Y轴旋转放大,
{\fs10\fry180\t(0,1500,\fry0\fs25)}

如结合淡入淡出和移动显示
Dialogue: Marked=0,0:00:01.00,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(60,160,30,160,10,300)}{\fry90}{\t(0,300,\fry0)}欢
Dialogue: Marked=0,0:00:01.20,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(80,160,50,160,10,300)}{\fry90}{\t(0,300,\fry0)}迎
Dialogue: Marked=0,0:00:01.40,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(100,160,70,160,10,300)}{\fry90}{\t(0,300,\fry0)}光
Dialogue: Marked=0,0:00:01.60,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(120,160,90,160,10,300)}{\fry90}{\t(0,300,\fry0)}临
注:只要时间轴上先定义时间差即可,这里是20秒的间隔,里面的复制即可

5,变色{\t\c&HFF80FF&}

颜色的语法并不难,难的是颜色的选择和过度。
Dialogue: Marked=0,0:00:02.20,0:00:02.50,mine,,0000,0000,0000,,{\pos(290,220)}{\fs60}{\t(0,300,\fs20)}{\c&HFF80FF&}{\fe130\fnComic Sans MS}JRvS
Dialogue: Marked=0,0:00:02.50,0:00:03.10,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:03.10,0:00:03.30,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:03.30,0:00:03.50,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:03.50,0:00:04.10,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:04.10,0:00:04.30,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:04.30,0:00:35.00,mine,,0000,0000,0000,,{\pos(290,220)}{\c&HFF80FF&}{\t(30,1500,\fry720)}{\fad(100,1000)}{\fe130\fs20\fnComic Sans MS}JRvS