字幕ファイル (.srt) の書き方

字幕ファイル (.srt)

動画に字幕を付けるのは、再エンコードなどが必要で面倒だと思っていたが、テキスト形式の字幕ファイル (.srt) さえ作っておけば、プレーヤー側では簡単に追加できるようだ。書式も簡単で、以下のようになっている。


1
00:00:00,000 --> 00:00:05,000
最初の字幕


2
00:00:05,000 --> 00:00:10,000
次の字幕


3
00:00:10,000 --> 00:00:20,000

その次の字幕


一行目は字幕No、二行目は表示時間、三行目は字幕の内容(テキスト)、そして識別用の空行となっている。非常に簡単である。

一行目の字幕Noは、例えば数百の字幕を書いた後に途中に追加する際、いちいち番号を振り直さなければならず面倒なようだが、必ずしも連番になっていなければならない訳ではないようである。

こうした書いた字幕ファイルは、「動画のファイル名.srt」として、動画ファイルと同じフォルダに入れておけば、プレヤーが自動的に読み込んでくれる(要設定)。



字幕スタイル・ファイル (.srt.style)

字幕の文字(フォント、大きさ、色等)や表示位置を指定したい場合は、「字幕スタイル・ファイル」を作成すればよい。これは「字幕ファイル名.srt.style」とする。

書式は以下の通りである。


ScriptType: v4.00+
PlayResX: 384
PlayResY: 288


[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,&H0000ffff,&H00000000,&H80000000,-1,0,0,0,100,100,0,0.00,1,2,2,2,20,20,20,1

一見、複雑にみえるが要は "Format" の順番で、パラメーターが並んでいるだけである。列挙すると以下のようになる。

Name
スタイルネーム(変更不可)
Fontname
フォント名
Fontsize
フォントサイズ
PrimaryColour
文字色(色名の直接指定不可。&HaaBBGGRR で指定[aa は透明度])
SecondaryColour
?(カラオケの効果用らしい)
OutlineColour
文字の境界の色
BackColour
影の色
Bold
太字(-1 で太字、0 で通常の書体)
Italic
斜体(-1 で斜体、0 で通常の書体)
Underline
下線(-1 下線あり、0 でなし)
StrikeOut
打ち消し線(-1 であり、0 でなし)
ScaleX
文字の横幅(100 がデフォルト。90 は横幅90%の意味)
ScaleY
文字の高さ(100 がデフォルト。90 は縦90%の意味)
Spacing
文字間の間隔(ピクセル単位。デフォルトは 0)
Angle
文字の角度(デフォルトは、0.00。縦書きにする場合は、270.00 )
BorderStyle
文字表示のスタイル(1 で輪郭と影が付く。3 で長方形の背景がでる)
Outline
文字の境界(縁)の太さ(0 で縁なし)
Shadow
文字の影の太さ(0 で影なし)
Alignment
文字表示の位置(1〜9 で指定)
MarginL
字幕左の余白
MarginR
字幕右の余白
MarginV
字幕の高さ
Encoding
ファイルのエンコーディング。日本語フォントそのものを含む場合は、1 にして UTF-8 または Unicode 16-LE で保存する。


なお、PlayResX と PlayResY は字幕の解像度を表し、表示する文字のすべてのサイズに影響する。動画の解像度を同じにすれば大きさが分かりやすいが、必ずしもそうする必要はない。



縦書き

縦書きで字幕を表示したい場合は、上記の字幕スタイル・ファイルで縦書き要フォント(@フォント名)を指定し、Angle の値を 270 にすればよい。



ところで、特定のテクストのみ縦書きで表示させたい場合がある。そうした際は、スタイル・ファイルではなく、個々の字幕にダグを付けることで縦書きにすることができる。書式は以下の通りである。


{\an6}{\fe128}{\fn@MS UI Gothic}{\pos(355,178)}{\frz270}縦書きのテクスト{\an}

重要なのは {\frz270} で、これが縦書きの命令。{\fn} はフォントの指定なので、縦書きフォントの名前を書く。その前の、{\fe} はフォントエンコーディング。{\fs} はフォントの大きさ。{\pos(X,Y)} は表示する座標で {\an} は字幕を表示する大まかな場所(1〜9 が指定可能)を意味する。最後の {\an} は終了タグで、複数の字幕を同時に表示する際に必要らしい。

下記の参考サイトにあるように、このSRT形式はかなり色々なことができる。ここでは当面使いそうなものを書いておく。



フェードイン・フェードアウト

細かく設定することも可能だが、次の簡易的なものでも十分機能する。


{\fad(1000,2000)}フェードイン・フェードアウト

上記は「1秒かけてフェードインして、2秒かけてフェードアウトする」例。




参考サイト:MPC and SRT (+ASS)