LRC を JSON に変換
字幕テキストを貼り付けることもできます
オプション
元のファイルに終了時刻がない場合(プレーンテキストや LRC)に使います。出力の時間軸は変換ではなくここで生成されるため、この値がそのまま表示時間になります。
この変換で変わること
1 項目が失われるか、判断が必要です
- タイミング
字幕の終了時刻(元の形式が記録していないため、出力側は変換ではなく生成されます)
この一覧は、読み込んだファイルではなく、この2つの形式の機能対応表から作られています。形式としては許されているが対応表が扱っていない機能を使っている場合、そのファイルではさらに多くが失われることがあります。
LRC の字幕を JSON に変換するページです。ファイルをドラッグするか、テキストを貼り付けてください。JSON 版がその場で返ります。変換はすべてブラウザ内で完結するため、アップロードはなく、アカウントも要りません。
この二つの形式は保存できるものが違い、その差は見た目だけではありません。終了時刻の置き場所が JSON にありません。上の一覧はファイルの内容ではなく、二つの形式がそれぞれ表現できるものから作られます。そのため、ファイルを読み込む前から答えは同じです。
1 ファイルでも、シーズン全体でも構いません。キューが順番に処理し、結果は 1 つの ZIP にまとめてダウンロードできます。
例
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."
]
}
]
}
この出力で失われるのは終了時刻です。それ以外は行単位で一致します。
同じ変換を、乱れた入力で行う
入力
[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": [
""
]
}
]
}
実在するファイルによくある損傷です。混在した改行コード、余分な空白、空のフィールド。上の整った例と比べると、パーサーがどこまで許容するかが分かります。
よくある質問
LRC の各字幕の終了時刻は JSON でどうなりますか?
LRC は行が始まる時刻だけを記録し、終了時刻は持ちません。歌詞プレイヤーは次の行が始まるまでその行を出し続けるため、終了時刻は冗長だからです。LRC の終了時刻はすべて落ち、開始時刻はそのまま残ります。
LRC を JSON に変換すると、出力はどんな形になりますか?
出力は JSON です。各字幕が id・start・end を持つオブジェクトの配列になります。LRC の各字幕ブロックは、同じ順序・同じ本文のまま 1 つの字幕になります。
LRC の 2 行の字幕は JSON でどう出力されますか?
字幕の lines 配列に 2 つの要素として入ります。2 行が 1 つの字幕に属するという対応は残り、プレイヤーはまとめて表示します。
LRC の字幕の順序は JSON でも保たれますか?
はい。変換の途中で開始時刻の昇順に並べ替えます。最も早いものが先頭で、どの形式もプレイヤーもその順序を前提にしています。LRC の字幕が順不同だった場合、JSON では順序が直ります。これは内容ではなくファイル構造の変更で、意図した動作です。
JSON を LRC に戻す変換はできますか?
できます。ただし逆方向には独自の損失一覧があります。JSON から LRC への変換では終了時刻・スタイル・画面位置・カラオケ・精度が失われます。上の一覧と違うのは、二つの形式が保存できるものが違うからです。
LRC から JSON への変換で文字コードは引き継がれますか?
いいえ。出力は UTF-8、改行コードは LF、BOM なしです。入力が UTF-16 や Windows のシングルバイト文字コードでも、読み込み時にデコードされます(その場合は結果パネルに表示されます)。出てくるのは常に同じ UTF-8 の JSON です。