字幕の改行コードを変換
字幕テキストを貼り付けることもできます
オプション
ファイルの各行は、目に見えない1文字(LF)か2文字(CRLF)で終わります。プレーヤー、エディタ、字幕ツールはいずれも両方を読むため、これが原因で字幕ファイルが不具合を起こすことはほとんどありません。例外は、ビルド処理や厳格なパーサーが片方を拒否する場合と、差分ツールが改行の違いですべての行を変更扱いにする場合です。既定で LF を選んでいるのは、Unix・macOS・ウェブが使う形式であり、すでに LF のファイルは変更されないためです。CRLF を選ぶと既存の両方の改行が変換されるので、混在したファイルも一貫した結果になります。
タイミングを数える基準のフレームレートです。形式のページでは MicroDVD が必要とする値で、同形式は時間をフレーム番号で保存します。フレームレートのページでは、そのファイルがどのレートを前提に作られたか(字幕が合わせて作られた版)を指し、ページの2つ目の欄には実際に使う動画のレートを入れます。よく使われるのは 23.976、24、25、29.97、30、50、59.94、60 です。間違えると時間軸全体がずれます。フレームレートのページでは、ずれは固定量ではなく比率で生じます。
改行は行の終わりを示す 1 文字または 2 文字で、普通に使われるものが 2 つあります。Unix 系は LF の 1 文字で行を終え、Windows は CR と LF の 2 文字で終えます。画面では同じに見え、字幕プレーヤーも同じように読みます。そのため下流の何かが気にするまで見えない違いになります。
気にするものはいくつもあります。バージョン管理では、改行が変わっただけでファイルのすべての行が変わったように見えます。行末の 1 文字を取り除くビルドスクリプトやパイプラインは、改行を想定しているのに余分な復帰文字が残ります。LF でファイルを分割するツールは、最後のフィールドに復帰文字がくっつきます。どちらかを名指しする納品仕様もあります。別のファイルと比較したり連結したりする字幕ファイルは、改行がインターフェースの一部なのです。
このページは出力について意図的に一様です。改行が混在したファイル(Windows で編集された行は CRLF、ほかで編集された行は LF)は、選んだ様式で全体が出てきます。このページはまず LF に正規化してから選択を適用するからです。すでに正しい改行だけを変換して残りをそのままにするのとは違います。ファイルの改行はどの行を見るかで変わらず、それがスクリプトにとって唯一役に立つ答えです。
単独の復帰文字、OS X 以前の Mac の改行もほかと一緒に扱います。今は誰も選びませんが、その形のファイルは今も出てきて、LF だけを探すツールには 1 行のファイルに見えます。先に正規化すれば、そうしたファイルは 1 つの巨大な字幕にならずに正しく出てきます。
このページの 2 つの表示欄は、この一族で違いが直接見える唯一の場所です。改行は実在する文字で、隠さないビューアで行間が空いて見えるファイルは CRLF のファイルです。12 形式すべてを受け付けます。改行は字幕形式ではなくテキストの性質で、プレーンテキストの文字起こしにも行はあるからです。どこにもアップロードされず、ファイルはブラウザの中で読まれ、変更され、書き出されます。
例
Unix のファイルを Windows の改行に
入力
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
出力
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
字幕間の空行も含め、すべての改行が 2 文字になります。その空行も 1 つの行の終わりで、飛ばす変換は字幕の区切りが LF のまま残るファイルを作ります。期待されるテキストは改行を CR LF の組として明記しているので、数がそのまま読めます。ファイルのほかの部分は動いていません。
Windows のファイルを Unix の改行に戻す
入力
1
00:00:01,000 --> 00:00:02,000
The room is dark.
出力
1
00:00:01,000 --> 00:00:02,000
The room is dark.
目に見える結果が出る方向です。復帰文字が残ったファイルは、エディタによっては各行の後に空行があるように見え、シェルのパイプラインでは最後のフィールドの末尾に復帰文字がくっつきます。映像、タイミング、テキストはどちらのファイルでも同じで、違いは各行の末尾の文字です。これを取り除くのがこの方向です。
2 台のマシンで編集されたファイルを一様に
入力
1
00:00:01,000 --> 00:00:02,000
Mixed endings.
2
00:00:03,000 --> 00:00:04,000
Second.
出力
1
00:00:01,000 --> 00:00:02,000
Mixed endings.
2
00:00:03,000 --> 00:00:04,000
Second.
2 台のマシンで触られた同じファイルで、CRLF で終わる行と LF で終わる行があり、字幕の区切りも両方の書き方があります。出力は一様で、それが要点です。どの行を読むかでファイルの意味が変わらなくなります。素朴な検索と置換はこの例を両方向で間違えます。片方向では LF の行を残し、もう片方向では二重の復帰文字を作ります。
よくある質問
字幕ファイルがどの改行を使っているかはどう見れば分かりますか?
多くのエディタではステータスバーに LF、CRLF、混在のいずれかで表示されます。シェルからなら、制御文字を見えるようにするツールで表示したとき、CRLF のファイルは各行の末尾に復帰文字が見えます。直接の確認は行末のバイトを見ることで、0A が 1 つなら LF、0D 0A の組なら CRLF です。
改行が混在した字幕ファイルはどうなりますか?
すべて同じになります。まず LF に正規化してから選んだ様式に変換するので、行によって改行が違うファイルも部分的に変換された状態ではなく、完全に一様に出てきます。ファイルがそうなるのは複数のマシンで編集されたときで、混在はまさに別のコピーとの比較を読めなくする原因です。
改行を変えると字幕のタイミングやテキストは変わりますか?
変わりません。字幕、その番号、開始と終了の時刻、中の言葉は前後で同じです。変わるのは各行の末尾の 1 文字か 2 文字だけです。プレーヤーはどちらのファイルも同じように読むので、納品要件のために字幕そのものを心配せずに行える変換です。
字幕の改行は LF と CRLF のどちらにすべきですか?
目の前の何かが CRLF を名指ししていなければ LF です。Unix のツール、ほとんどのビルドパイプライン、WebVTT の仕様が期待する形で、1 行あたり 1 バイト短くなります。納品仕様や Windows 専用ツールが求めるなら CRLF を選んでください。選択はファイルごとで、単体で納品する字幕ファイルがプロジェクトのほかと違っていても構いません。
CRLF に変換すると字幕の間の空行も変わるのはなぜですか?
その空行も 1 つの行で、その終わりもほかと同じ改行だからです。SRT は空行で字幕を区切るので、CRLF に変換したファイルで区切りだけが LF のままだと、一様なファイルの途中に別の種類の改行が 1 つ残ります。それはまさにこのページが取り除くためにある混在です。ファイルの最終行にも同じことが言えます。
古い Mac の復帰文字も変換されますか?
変換されます。行が単独の復帰文字で終わるファイル、OS X 以前の Mac の様式もほかと一緒に正規化され、1 つの長い字幕のまま残らず、選んだ様式で出てきます。パネルに CR の選択肢がないのは、今は誰もその形で書かないからですが、すでにその形のファイルも正しく読まれ、書き換えられます。