Textsubで動画に字幕

いわゆる例

はじめに

この2つは既にインストールされているものとします。 まだ用意してない人は編集環境をお読み下さい。

SSAファイルの用意

とりあえず形はどうあれ字幕を表示してみるところまでやってみましょう。 SSAファイルの例を用意しましたのでダウンロードして下さい。

subtitle_test.ssa

VirtualDubで読み込み…をする前に一つだけ確認しないといけない事があります。 メモ帳などのテキストエディタでダウンロードしたファイルを開いてください。

[Script Info]
ScriptType: v4.00
PlayResX: 512
PlayResY: 384

上の方はこんな感じになっていると思います。 PlayResXとPlayResYには、字幕を貼る動画の幅と高さを指定する必要があります。 というわけで、まず動画の幅と高さを調べておきましょう。

ファイル情報

VirtualDubで動画を開いた状態で、ファイル情報を選択します。

ファイル情報2

この青線の部分が、幅x高さになってます。 もしファイルの内容と異なっていた場合は修正しておいてください。

フィルタの適用

準備が済んだところで、いよいよ字幕のフィルタを適用してみます。

映像→フィルター

メニューからフィルタの設定画面を出します。

フィルタ設定画面

ここで追加をクリックします。

フィルタ選択画面

TextSubを選んでOKをクリックします。バージョン表記は違うかも。

TextSub設定画面

するとこんなダイアログが出ます。 ここでOpenをクリックして、入れたい字幕が書かれたSSAファイルを選択し、OKをクリックします。

ちなみに下にオプションが4つほどありますが、3つ目のNo automatic word-wrappingを選んでおくと、 字幕本文中に\nを入れることで改行を入れる事が出来るようになります。

フィルタ設定画面2

これでOKをクリックすると、TextSubフィルタが適用されます。

適当にカーソルキーなどで動画をシークしてみましょう。 1フレームでもシークする事で表示が更新されます。

フィルタが適用されたか確認

0〜5秒の間にこんな感じで字幕が挿入されていれば上手くいっています。

もし表示されてなかった時、なんか変な文字が出た時は次の事が考えられます。

前者はもう一度よく確認してもらうしかないですが、後者はWindows付属のメモ帳を使っている時に遭遇する可能性があります。 SSAファイルは、UTF-16LEで保存しなければならないのです。 異なっている場合、何も表示されなかったり、文字化けが発生します。

メモ帳でUnicode形式で保存

保存するときに、文字コードからUnicodeを選んで保存するようにしましょう。 これはメモ帳での例なので、他のテキストエディタを使っている時は、UTF-16と表記されているかも。

字幕の編集

字幕を表示できる事が確認できたので、任意のタイミングで好きな字幕を挿入する方法を解説します。

表示する字幕は[Event]以降に、Dialogue〜の纏まりを改行で区切って記述していきます。 書式は次の通りです。

Dialogue: Marked=0, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text

Start
いつから字幕の表示を開始するかを設定します。
h:mm:ss(h: 時、mm: 分、ss: 秒)のように指定します。秒の所は小数点以下も入れる事ができます。
End
いつから字幕の表示を終了するかを設定します。あとは開始時間と同じ。
Style
表示する字幕の位置、色などの管理しているスタイルを選びます。
スタイルについては後述します。
Name
今回のようにテキストベースで編集するときは使われません。適当に何か入れておくか空欄でもいいです。
MarginL, MarginR, MarginV
表示位置を細かく変更したいときに設定します。普通はスタイルで設定するので0000とでも入れておけばいいです。
Effect
ただ表示するだけなら空欄で良いです。 簡易的ですが文字をスクロールさせながら表示する設定などを入れる事ができます。 これについては今回は触れません。
Text
表示する字幕の文字列を記述します。ってそのまんまですね。

ちなみに記述する順番は、開始時間の順である必要はありません。

例:スタイルにはStyle1とStyle2が定義されており、0秒〜5秒の間にStyle1で"てすと1"1分〜10分の間にStyle1で"てすと2"0秒〜20分の間にStyle2で"ずっと表示"という字幕を出すスクリプト

Dialogue: Marked=0,0:00:00,0:20:00,Style2,,0000,0000,0000,,ずっと表示
Dialogue: Marked=0,0:00:00,0:00:05,Style1,,0000,0000,0000,,てすと1
Dialogue: Marked=0,0:01:00,0:10:00,Style1,,0000,0000,0000,,てすと2

スタイルの編集

TextSubでは、字幕の表示位置、色などの情報をあらかじめスタイルという形で定義しておき、字幕を挿入する際にどのスタイルを使用するかを設定するようになっています。 ここではそのスタイルの定義の仕方を解説します。

スタイルの定義は、[V4 Styles]以降に、Style〜の纏まりを改行で区切って記述していきます。 書式は次の通りです。

Style: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding

Name
スタイルの名前です。ここで設定した名前を、Dialogue〜の方で使用します。
Fontname
使用するフォントの名前です。たとえば"MS ゴシック"を使いたいという時に"MSゴシック"とか書いてもだめです。
Fontsize
フォントサイズです。文字の大きさです。
PrimaryColour
文字表面の色です。ちょっと書式が特殊で、&Hbbggrr& (bb: 青、gg: 緑、rr: 赤)となっています。0(16進数で00)〜255(16進数でff)の256段階で指定します。
SecondaryColour
カラオケのアニメーションを設定したとき、変化前の色になります。普通は使わないのでPrimaryColourと同じにして良いと思います。
TertiaryColour
SSAでは使われないようなので、PrimaryColourと同じにしてください。
BackColour
文字の輪郭の色です。文字の輪郭の太さはOutlineで設定します。
Bold
太字にしたいときは-1、したくないときは0にします。
Italic
斜体にしたいときは-1、したくないときは0にします。
BorderStyle
通常は1にします。3にすると文字の輪郭と影がボックスで描画されます。
Outline
文字の輪郭の太さです。0にすると輪郭は描画されません。
Shadow
文字の影の位置です。普通、大きくするほど右下の方にずれていきます。
Alignment
字幕の表示位置です。対応する値は次の通りです。
字幕の表示位置
3と8は同じ位置になります。
MarginL, MarginR
画面左右端からのマージンです。
左右マージン
このようになります。
MarginV
画面上下端からのマージンです。
上下マージン
Alignmentで下の方に設定しているなら下からのマージン、上の方ならば上からのマージンになります。
AlphaLevel
文字の透明度です。0〜255の値をとり、普通は不透明の0を設定します。255で透明になると思いきやなぜか輪郭だけ残ります。 よく分かりません。
Encoding
とりあえず0でいいです。

例:さまざまなスタイル

Style: Style1,MS ゴシック,28,&Hff4444&,&Hffff44&,&Hff4444&,&Hffdddd&,0,0,1,3,2,2,5,5,32,0,0
Style: Style2,MS UI Gothic,20,&H4444ff&,&Hffff44&,&Hff4444&,&Hddddff&,0,0,1,9,2,7,0,32,32,0,0
Style: Style3,メイリオ,36,&H44ff44&,&Hffff44&,&Hff4444&,&Hddffdd&,0,0,1,3,9,9,32,0,32,0,0
Style: Style4,Times New Roman,20,&H444444&,&Hffff44&,&Hff4444&,&Hdddddd&,0,0,3,3,6,5,0,0,0,0,0
Style: Style5,Impact,25,&Hff44ff&,&Hffff44&,&Hff4444&,&Hffddff&,0,0,1,5,4,5,128,128,96,0,0

実際に表示してみたのが下の画像。

さまざまなスタイル

表現できるスタイルの種類はおっくせんまん!

補足

字幕の文字列には、HTMLのタグみたいな感じで様々な要素を盛り込む事が出来ます。 例えば……

Dialogue: Marked=0,0:00:00.00,0:00:05.00,Style1,Jimaku,0000,0000,0000,,改行の\Nテスト
Dialogue: Marked=0,0:00:00.00,0:00:05.00,Style2,Jimaku,0000,0000,0000,,ここから{\b1}太字{\b0}ここまで
Dialogue: Marked=0,0:00:00.00,0:00:05.00,Style3,Jimaku,0000,0000,0000,,ここから{\i1}斜体{\i0}ここまで
Dialogue: Marked=0,0:00:00.00,0:00:05.00,Style4,Jimaku,0000,0000,0000,,ここから{\fnMS 明朝}別のフォント{\fnMS ゴシック}ここまで
Dialogue: Marked=0,0:00:00.00,0:00:05.00,Style5,Jimaku,0000,0000,0000,,ここから{\fs24}サイズ変更{\fs16}ここまで
Dialogue: Marked=0,0:00:00.00,0:00:05.00,Style6,Jimaku,0000,0000,0000,,ここから{\c&H0000ff&}カラー変更{\c&Hff4444&}ここまで

字幕のタグ

こんな感じに。 余力がある人は色々試してみるといいかも?ちなみにタグはまだまだ沢山存在します。

更にいろいろな事、ここでははしょった"エフェクト"についてとか、タグをもっと知りたいっていう方は、SSAの規格書を読んでみるといいと思います!