LRC 转 SMI
或者粘贴字幕文本
选项
当源文件没有结束时间时使用(纯文本、LRC)。输出里的时间轴是在这里生成的,不是转换来的,所以填多少就是多少。
这次转换会改变什么
有 1 项会被丢弃或需要你决定
- 时间
字幕条的结束时间——源文件不记录这些时间,因此输出中的结束时间是生成的,而不是转换来的
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
LRC 转 SMI 把歌词写成 SAMI 的 `<SYNC Start=毫秒>` 加 `<P>` 正文,每条字幕后面紧跟一个 `<P> ` 清屏块,让画面在终点回到空白。
结束时间由下一行开始推断,最后一行用页面设定时长补;清屏块写在那个终点上。多行歌词用 `<br>` 连接,仍属于同一个 SYNC 块。
有损说明记 timing:终点是推断值。SAMI 支持行内样式,但 LRC 本来就没有样式,所以产物只有纯文本加一个默认的 `<STYLE>` 段落规则;`[ti:]`、`[ar:]`、`[al:]`、`[offset:]` 没有落点,偏移也不会被应用。
输出 UTF-8、LF、无 BOM,cue 按开始时间升序。转换在浏览器本机完成,不上传、不注册;批量文件串行处理、可取消,结果打包下载。
示例
一份典型的 LRC 文件转成 SMI
输入
[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.输出
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=12000>
<P>First line of the song.
<SYNC Start=15300>
<P>
<SYNC Start=15300>
<P>Second line.<br>Second line, translated.
<SYNC Start=18000>
<P>
<SYNC Start=18000>
<P>
<SYNC Start=21500>
<P>
<SYNC Start=21500>
<P>Final line.
<SYNC Start=23500>
<P>
</BODY>
</SAMI>
产物丢了结束时间;每条 cue 后面多一个清屏块,文字逐行一致。
同一转换遇到一份脏文件
输入
[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]输出
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=3000>
<P>Out of order.
<SYNC Start=5500>
<P>
<SYNC Start=5500>
<P>Leading zero omitted, one decimal.
<SYNC Start=7000>
<P>
<SYNC Start=7000>
<P>Second with no centiseconds.<br>Repeated chorus line.
<SYNC Start=9000>
<P>
<SYNC Start=9000>
<P>Repeated chorus line.
<SYNC Start=12000>
<P>
<SYNC Start=12000>
<P>
<SYNC Start=14000>
<P>
</BODY>
</SAMI>
真实文件常见的损坏:BOM、混合换行、缺前导零的时间戳、重复的副歌行。解析器不抛异常,读不出的部分记进有损说明。
常见问题
LRC 转 SMI 时,`<P> ` 清屏块是怎么生成的?
每条 cue 的终点会生成一个空段落,让画面在那一刻回到空白;SAMI 靠 SYNC 替换画面,不写清屏块上一条字幕会一直留着。
LRC 转 SMI 后,双语歌词会怎么显示?
放在同一个 `<SYNC>` 块里,两行之间用 `<br>`,仍然是一组。
LRC 的 `[ti:]`、`[ar:]`、`[offset:]` 在 SMI 里能保留吗?
不能。SAMI 的 cue 模型没有这些字段;`offset` 也不会被应用,时间按文件字面转换。
LRC 转 SMI 的时间精度会变吗?
不会。SMI 的 `Start=` 以毫秒计,LRC 的百分秒直接写成毫秒,例如 `[00:12.00]` 变成 `Start=12000`。
LRC 转 SMI 后,最后一行歌词在哪结束?
用页面设定时长补出的终点;那一处会生成清屏块,报告会说明这个结束时间是推断的。
SMI 转回 LRC 会丢什么?
会丢结束时间、样式、定位、精度与格式私有内容;这一页只是其中一个方向,反向有自己的一份清单。