SSA 转 LRC
或者粘贴字幕文本
这次转换会改变什么
有 5 项会被丢弃或需要你决定
- 时间
字幕条的结束时间(输出格式只记录字幕条何时开始)
- 样式
全部样式(粗体、斜体、颜色、描边、阴影)
- 定位
屏幕定位(每条字幕条都会回到默认位置)
- 卡拉 OK
卡拉OK计时(逐音节高亮)
- 格式专有内容
源格式保留在字幕条之外的内容(非字幕块、文件头文字、单条字幕的设置、被注释掉的事件)——目标格式没有地方存放它们
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
这一页把 SSA 转成 LRC 歌词文件。输入一份脚本,输出一行一句、带方括号时间戳的文本;转换在浏览器里完成,不上传。
丢的是脚本本身。LRC 不记结束时间,播放器会让一行一直显示到下一条开始,所以每条 SSA 的 end 都被丢掉;样式表、屏幕定位、卡拉OK 计时和 [Script Info] 的其余设置也都没有落点。强调标记({\i1} 这类)会被去掉,正文按纯文本写出。
有一件事会过去:标题。SSA 的 Title 写成 LRC 的 [ti:] 标签,其余全局键不会。时间戳的精度正好对得上——SSA 只到百分秒,LRC 也只到百分秒,[00:04.13] 不需要四舍五入。
一条两行的字幕在 LRC 里写成两行、共用同一个时间戳,这是 LRC 表示“这两句一起出现”的方式。产物按起始时间升序,UTF-8、Unix 换行、无 BOM;可以批量转换后打包下载。
示例
一份典型的 SSA 文件转成 LRC
输入
[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines
输出
[ti:Example SSA]
[00:01.00]Hello there.
[00:05.00]Italic line.
[00:09.00]Two
[00:09.00]lines
这份产物丢掉了结束时间、样式、定位与卡拉OK;时间戳与文字逐行一致。
同一转换遇到一份脏文件
输入
[Script Info]
Title: Dirty SSA
ScriptType: v4.00
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.输出
[ti:Dirty SSA]
[00:01.00]Bold and underlined.
[00:05.00]A soft
[00:05.00]break and a {\p1}mystery{\p0} code.
真实文件里常见的损坏:混合换行、散落的空白、留空的字段。可以对照上面那份干净样例,看看解析器能容忍到什么程度。
常见问题
SSA 转 LRC 后,每条字幕的结束时间去哪了?
LRC 只记录一行开始的时间,播放器会让它一直显示到下一条开始,所以结束时间没有字段可写。每条 SSA 的 end 都被丢掉,start 原样保留。
SSA 转 LRC 后,[V4 Styles] 里的粗体和颜色还在吗?
不在。LRC 不存任何样式:样式表里的字体、字号、颜色,以及正文里的 {\i1} 这类覆写标记,全都没有落点;每行按纯文本写出,字本身不动。
SSA 转 LRC 后,屏幕定位和卡拉OK 计时呢?
都丢。\pos、\an、\move 决定画在画面哪里,\k、\kf、\ko 决定每个音节什么时候亮,而 LRC 既没有位置也没有行内时刻,这些指令都被去掉。
SSA 转 LRC 时,标题会保留吗?
会。SSA 的 Title 写成 LRC 的 [ti:] 标签;[Script Info] 里的其他键、样式表、Comment: 行与内嵌字体图形都不会过去。
SSA 转 LRC 的时间戳需要四舍五入吗?
不需要。SSA 写到百分秒,LRC 也写到百分秒,0:00:04.13 直接写成 [00:04.13],不丢精度也不平移。
SSA 转 LRC 后,一条两行字幕怎么表示?
写成两行,共用同一个时间戳。LRC 靠时间相同来表示这两句属于同一条字幕,播放器会一起显示。