跳到主要内容
SubtitleMatrix

LRC 转 SRT

格式转换歌词(LRC)
或者粘贴字幕文本

选项

当源文件没有结束时间时使用(纯文本、LRC)。输出里的时间轴是在这里生成的,不是转换来的,所以填多少就是多少。

这次转换会改变什么

有 1 项会被丢弃或需要你决定

  • 时间

    字幕条的结束时间——源文件不记录这些时间,因此输出中的结束时间是生成的,而不是转换来的

这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。

LRC 是歌词格式:方括号里一个时间戳,后面一句词。它只记开始、不记结束,因为歌词播放器会把这一行一直留到下一条出现。这一页用“下一行的开始”作为这一行的终点,把歌词变成字幕 cue。

两个细节没有被糊弄过去。第一,多行可以共用一个时间戳——比如原文加译文——它们属于同一组,因此合成一条多行 cue,而不是两条抢同一时刻的字幕。第二,最后一行没有下一行可借终点,于是用页面设定的时长补足,并在报告里说明这个结束时间是生成的。

文件头的元数据会被读取:`[ti:]` 标题与 `[ar:]` 艺人在目标格式有字段时保留,`[offset:]` 偏移原样保留而不应用,因此产物与文件字面一致。被弄坏的行——缺前导零、只有一位小数、没有百分秒——会按能读出的部分解析,读不出的部分进有损记录。

产物是 UTF-8、LF、无 BOM,cue 按开始时间排序,原文件乱序会被纠正。转换在浏览器里完成,不上传、不注册;批量处理串行执行、可以取消,最后打包成一个 ZIP。

示例

一份典型的 LRC 文件转成 SRT

输入

[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.

输出

1
00:00:12,000 --> 00:00:15,300
First line of the song.

2
00:00:15,300 --> 00:00:18,000
Second line.
Second line, translated.

3
00:00:18,000 --> 00:00:21,500


4
00:00:21,500 --> 00:00:23,500
Final line.

产物丢了结束时间;开始时间与文字逐行一致,空歌词行保留。

同一转换遇到一份脏文件

输入

[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]

输出

1
00:00:03,000 --> 00:00:05,500
Out of order.

2
00:00:05,500 --> 00:00:07,000
Leading zero omitted, one decimal.

3
00:00:07,000 --> 00:00:09,000
Second with no centiseconds.
Repeated chorus line.

4
00:00:09,000 --> 00:00:12,000
Repeated chorus line.

5
00:00:12,000 --> 00:00:14,000

真实文件常见的损坏:BOM、混合换行、缺前导零的时间戳、重复的副歌行。解析器不抛异常,读不出的部分记进有损说明。

常见问题

LRC 转 SRT 时,一条歌词的结束时间怎么算?

取下一行的开始,这与歌词播放器推进高亮的规则相同;最后一行没有后继,用页面设定的时长补足。

两行共用同一时间戳的 LRC 歌词会变成几条 SRT 字幕?

一条。它们属于同一组,会合成多行 cue,而不是两条开始时间相同的字幕。

LRC 的 `[offset:]` 在 SRT 产物里被应用了吗?

没有。它被读取并保留,时间按文件字面转换;如果你的播放器之前因为偏移显示得更早或更晚,需要在本页自己加同样的平移。

LRC 转 SRT 后,`[ti:]` 标题和 `[ar:]` 艺人去哪了?

标题在目标格式有字段时会保留,艺人没有对应字段会被记为丢弃;这段转换会写进有损说明。

LRC 转 SRT 时,最后一行凭什么有结束时间?

凭页面上的时长设置,默认 2000 毫秒;报告会注明这一条终点是生成的,因为文件里没有任何值可以借。

LRC 里缺前导零或只有一位小数的时间戳还能转成 SRT 吗?

能。解析器按能读出的部分解释,例如 `[0:03.0]` 当作 3.0 秒;读不出的行会进有损记录而不是中断转换。

LRC 转 SRT 会改变歌词顺序吗?

会按开始时间升序输出;原文件乱序会被纠正,重复的副歌行保持原有先后。

相关工具