LRC 转 JSON
或者粘贴字幕文本
选项
当源文件没有结束时间时使用(纯文本、LRC)。输出里的时间轴是在这里生成的,不是转换来的,所以填多少就是多少。
这次转换会改变什么
有 1 项会被丢弃或需要你决定
- 时间
字幕条的结束时间——源文件不记录这些时间,因此输出中的结束时间是生成的,而不是转换来的
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
LRC 转 JSON 输出结构化数据:`version`、可选 `title`,以及 `cues` 数组;每个 cue 有 `start`、`end`(整数毫秒)和 `lines`。适合再喂给脚本或做批量处理。
结束时间由下一行开始推断,最后一行用页面设定时长补,报告会标明这是生成值。多个同时间戳的歌词行会进入同一个 cue 的 `lines`,因此双语歌词不会被拆成两条。
`[ti:]` 写入 JSON 的 `title`;`[ar:]` 艺人与 `[al:]` 专辑没有对应字段,会丢;`[offset:]` 读取但不应用。产物按开始时间升序,原文件乱序会被纠正,空歌词行会保留成 `lines` 为空的 cue。
输出 UTF-8 JSON,转换在浏览器里完成,不上传、不注册,适合需要进一步脚本处理的批量场景;任务可以取消,结果打包下载。
示例
一份典型的 LRC 文件转成 JSON
输入
[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.输出
{
"version": 1,
"title": "Sample Song",
"cues": [
{
"start": 12000,
"end": 15300,
"lines": [
"First line of the song."
]
},
{
"start": 15300,
"end": 18000,
"lines": [
"Second line.",
"Second line, translated."
]
},
{
"start": 18000,
"end": 21500,
"lines": [
""
]
},
{
"start": 21500,
"end": 23500,
"lines": [
"Final line."
]
}
]
}
产物丢了结束时间;开始时间由 LRC 的百分秒写成整数毫秒,文字逐行一致。
同一转换遇到一份脏文件
输入
[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]输出
{
"version": 1,
"cues": [
{
"start": 3000,
"end": 5500,
"lines": [
"Out of order."
]
},
{
"start": 5500,
"end": 7000,
"lines": [
"Leading zero omitted, one decimal."
]
},
{
"start": 7000,
"end": 9000,
"lines": [
"Second with no centiseconds.",
"Repeated chorus line."
]
},
{
"start": 9000,
"end": 12000,
"lines": [
"Repeated chorus line."
]
},
{
"start": 12000,
"end": 14000,
"lines": [
""
]
}
]
}
真实文件常见的损坏:BOM、混合换行、缺前导零的时间戳、重复的副歌行。解析器不抛异常,读不出的部分记进有损说明。
常见问题
LRC 转 JSON 后,`[ti:]` 标题写在哪?
写进 JSON 顶层的 `title` 字段;如果文件没有 `[ti:]`,这个键不出现。
LRC 转 JSON 的 `end` 值是怎么来的?
取下一行的开始;最后一行没有后继,用页面设定的时长补,报告会标明这个值是生成的。
LRC 的 `[ar:]` 艺人在 JSON 里能保留吗?
不能。JSON 的 cue 模型没有艺人字段,`[ar:]` 与 `[al:]` 都不会进入产物;`[offset:]` 读取但不应用。
LRC 转 JSON 时,两行同时间戳的歌词会合并吗?
会。它们进入同一个 cue 的 `lines` 数组,因此双语歌词不会被拆成两条时间相同的字幕。
LRC 转 JSON 后,时间是什么单位?
整数毫秒。`[00:12.00]` 写成 `12000`,`[00:15.30]` 写成 `15300`。
LRC 转 JSON 会重排乱序的歌词行吗?
会,按 `start` 升序输出;JSON 数组的顺序就是产物里的顺序。