JSON を ASS に変換
字幕テキストを貼り付けることもできます
この変換で変わること
1 項目が失われるか、判断が必要です
- 精度
タイミングの精度(変換先の時計はより粗いため、すべてのタイムスタンプは 10 ms 単位に丸められます)
この一覧は、読み込んだファイルではなく、この2つの形式の機能対応表から作られています。形式としては許されているが対応表が扱っていない機能を使っている場合、そのファイルではさらに多くが失われることがあります。
このページは JSON を ASS に変換します。ファイルをドロップするか、テキストを貼り付けてください。ASS 形式で返ります。変換はすべてブラウザ内で実行され、ファイルはアップロードされません。登録も不要です。
JSON は時刻を整数ミリ秒で持ち、スタイル表とカラオケのタイミングも保存できます。JSON と ASS は保存できる情報が同じではなく、その差は見た目の問題ではありません。ASS では精度(100 分の 1 秒への丸め)が行き場を失います。上の一覧は、読み込んだファイルではなく、2 つの形式がそれぞれ表現できるものから算出しています。だからファイルを開く前から同じ答えになります。
1 本でも、シーズン全体でも構いません。キューは順番に処理され、結果は 1 つの ZIP にまとめてダウンロードできます。
例
JSON ファイルを ASS に変換した例
入力
{
"version": 1,
"title": "Fixture: typical",
"fps": 25,
"styles": {
"Default": {
"name": "Default",
"fontFamily": "Arial",
"fontSize": 20,
"primaryColor": "#FFFFFF",
"bold": false,
"italic": false
}
},
"generator": "subtitlematrix fixtures",
"cues": [
{
"id": "1",
"start": 0,
"end": 2000,
"lines": [
"Hello world.",
"Second line."
],
"style": "Default",
"position": {
"x": 100,
"y": 200,
"align": "center"
}
},
{
"id": "2",
"start": 2500,
"end": 4000,
"lines": [
"Plain line.",
{
"text": "Styled line.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 6
}
]
}
]
},
{
"id": "3",
"start": 4500,
"end": 6000,
"lines": [
"Roger: I am here."
],
"speaker": "Roger"
}
]
}
出力
[Script Info]
Title: Fixture: typical
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,,,,0,0,,,,,,,,,,,,,,
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:02.00,Default,,0,0,0,,{\pos(100,200)}Hello world.\NSecond line.
Dialogue: 0,0:00:02.50,0:00:04.00,Default,,0,0,0,,Plain line.\N{\i1}Styled{\i0} line.
Dialogue: 0,0:00:04.50,0:00:06.00,Default,,0,0,0,,Roger: I am here.
この出力で失われるもの:精度(100 分の 1 秒への丸め)。それ以外は行単位で一致します。
同じ変換を扱いにくい入力で行った例
入力
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
出力
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,First.
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,Second.
Dialogue: 0,0:00:02.00,0:00:03.00,Default,,0,0,0,,Third.
実際のファイルには、混在した改行コード、余分な空白、空のフィールドなどがあります。上の整った例と比べて、パーサーがどこまで許容するかを確認してください。
よくある質問
JSON を ASS に変換するとタイムコードはなぜ変わるのですか?
ASS は時刻を 0:00:04.13 で保存し、JSON は 4126 で保存します。100 分の 1 秒と 1000 分の 1 秒の違いなので、各タイムコードは 10 ms 単位に丸められます。00:00:04,126 は 4.13 秒になります。伸縮や並べ替えはなく、cue の移動は最大 5 ms です。別のファイルと突き合わせる場合、ここだけが不正確になります。
JSON を ASS に変換した出力はどんな形ですか?
ASS らしく、cue 番号はありません。各字幕は [Events] セクションの Dialogue: 行になり、SRT が番号を持つ位置にはレイヤーフィールドが入ります。JSON の各 cue は同じ順序・同じ本文で 1 つの ASS cue になります。
JSON の 2 行の cue は ASS でどう表現されますか?
バックスラッシュ N(\N)で区切られた 2 行になります。\N は ASS と SSA が強制改行を書く方法です。2 行が 1 つの字幕に属する関係は保たれ、プレーヤーは 2 行を一緒に表示します。
JSON の cue の順序は ASS 出力でも保たれますか?
はい。書き出し時に開始時刻の昇順へ並べ替えます。早いものが先で、これは本サイトのすべての形式が前提とする順序であり、プレーヤーが読み取る順序でもあります。JSON ファイルの cue が順不同だった場合、ASS 出力では順序が直ります。これは内容ではなくファイル構造の変更で、意図した動作です。
ASS を JSON に戻せますか?
はい。ただし逆方向には独自の損失一覧があります。ASS から JSON への変換では形式固有の情報が失われます。2 つの形式が保持する情報が違うため、一覧は上とは別になります。
ASS 出力は JSON ファイルの文字コードを引き継ぎますか?
いいえ。入力が何であっても、出力は UTF-8、Unix 改行、BOM なしです。UTF-16 や Windows のシングルバイト文字コードで届いたファイルは読み込み時にデコードし、そのことは結果パネルに表示されます。出てくるのは常に同じ UTF-8 の ASS です。