现如今,很多网页播放器都带有弹幕功能,而Bilibili采用的是XML文档解析,通过解析XML文档,渲染到CSS中去或者Canvas.从而实现弹幕功能.
如果我想直接保存为ASS文件(一种高级的字幕文件格式),需要如何解析呢?JavaScript代码的编写思路是??
一些桌面播放器(如:Potplayer,SMplayer等),都可以解析外挂字幕,其中用到的技术是?
ASS字幕文件格式,如下:
Dialogue: 0,0:18:20.37,0:18:23.70,CN,NTP,0000,0000,0000,,我去下妈妈那边 饭热下再吃啊
Dialogue: 0,0:19:20.39,0:20:25.36,CN,NTP,0000,0000,0000,,这是第二行
HTML5在线播放器,如何逐行读取并按照时间顺序播放?Javascript代码如何写,或者思路是怎样的?请教。
(非科班程序员,所以有很多东西不懂,希望得到思路,然后到网上找相应的解决方案.谢谢.)
根据下面的格式,就是写对应的解析,大概来说就是如图,获取到了内容,再决定如何去显示.我网上看了看也有现成的东西
[[Events]部分的对话行Dialogue][2]
Dialogue类型的行(对话行)包括字幕对白, 时间轴信息, 以及对白的显示方式.
在对话行出现前必须有一条格式行Format: 来对逗号分隔的每个字段进行定义, 该格式行中的每一个字段必须拼写准确, 内容如下:
Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
最后的一个字段永远都是对白文字的字段, 因此可以包含逗号. 前面的字段顺序可以改变.
字段1: Marked. 值为0表示该行为”未标识”行, 值为1表示该行为”标识”行
字段1: Layer. ASS的这个字段名是Layer(图层), 可以为任意的整数. 图层不同的两条位置/时间有重叠的字幕不被视为有冲突,图层号码大的字幕显示在图层号小的上方.
字段2: Start. 事件开始的时间, 格式为0:00:00:00(时:分:秒:百分数), 注意小时只有一位数
字段3: End. 事件结束的时间. 格式为0:00:00:00(时:分:秒:百分数), 注意小时只有一位数
字段4: Style. 该条字幕所使用的风格. 风格的具体信息在[V4+ Style]这一部分中进行定义
字段5: Name. 角色名, 指出对白是由影片中哪位演员所说的. 字幕加载时不显示, 只为了编写时理解方便.
字段6: MarginL. 使用新的与左边缘的距离, 为4位数字代表的像素值. 0000代表使用当前Style定义的值.
字段7: MarginR. 使用新的与右边缘的距离, 为4位数字代表的像素值. 0000代表使用当前Style定义的值.
字段8: MarginV. 使用新的垂直距离, 为4位数字代表的像素值. 0000代表使用当前Style定义的值. 具体说明参见上面[v4+ Style]里的说明
字段9: Effect. 过渡效果. 可以为空值, 或者为三种过渡效果之一.
效果名称区分大小写, 必须拼写准确. 且不加任何引号:
“Karaoke” 是卡拉OK效果, 每个字依次高亮显示. 注: 在ASS中该效果已经废弃不用.
“Scroll up;y1;y2;delay[;fadeawayheight]” 滚动效果, 指文字/图片向上滚动. 各参数以分号分隔.
y1与y2是屏幕垂直区域的像素值, 位置可以互换. 当这两个值都为0时则全屏幕内滚动
delay可取值1-100, 代表滚动速度的降低值. 当其为0时滚动速度最快.
“Banner;delay”横幅效果. 所有文字被合并到单行, 并从右至左横向移动.
delay的值可由1到100, 代表横幅移动速度的降低值. 当其为0时移动速度最快.
“Scroll down;y1;y2;delay[;fadeawayheight]” 向下滚动
“Banner;delay[;lefttoright;fadeawaywidth]”
注意红字为ASS新增功能.
lefttoright可取值0或1, 为可选, 默认为0(右出左进)
当delay值大于0时, 移动速度为(1000/delay)像素每秒
(注意: Avery Lee的字幕插件阅读滚动效果的顺序为: delay;y1;y2)
fadeawayheight以及fadeawaywidth可令效果边缘的像素呈现透明.
字段10: Text. 为对白字幕区域, 是最终出现在屏幕上的字幕. 任何位于第9个逗号后的内容均被看作是对白字幕, 所以本身可以包含逗号.
在这一个字段中可以包含n, N, h这三种分行/空格代码, 以及其它在大括号{ }内的风格覆写控制代码. 详情参看附A.