TSファイル(地上デジタル放送データ)の内、
一部放送には字幕データが含まれている場合があります。
放送の時点では字幕データは表示と非表示を切り替えることができる(ソフトサブと言います)
字幕データを取り出し、エンコード後も表示と非表示を切り替えられるようにmp4動画に保存します。
なお、この記事は2009年1月22日現在、暫定版となっています。
1.必要なソフトウェアの導入
2.字幕データの保存方法
3.mp4動画の字幕再生方法
4.手順省略化案
5.トラブルシューティング
1.必要なソフトウェアの導入
以下のソフトウェアをダウンロードして下さい。
なお、「ソフトウェアの導入(mp4エンコードの前準備)」で紹介したソフトウェアは全てインストールされていることを前提とします。
・Caption2Ass
TSファイルから字幕データを抜き出します。
・SrtSync
字幕ファイルの時間情報を、avsのカット編集に適合させます。
・Caption2Ass用Batファイル
Caption2Assを起動するために使用します。Caption2Assと同じフォルダ内に保存し、
拡張子を.batに変更してください。
・SrtSync用Batファイル
SrtSyncを起動するために使用します。SrtSyncと同じフォルダ内に保存し、
拡張子を.batに変更してください。
・mp4boxBatファイル
mp4boxにより、字幕ファイルを結合するために使用します。
エンコードの作業フォルダ(mp4box.exeがあるフォルダ)と同じフォルダ内に保存し、
拡張子を.batに変更してください。
・VobSub
字幕付きmp4ファイルの再生に必要です。インストールしてください。
・VSFilter
字幕付きmp4ファイルの再生に必要です。上記Vobsubインストール後にVSFilterをインストールしてください。
(1)TSファイルを、Caption2Assと同じフォルダにあるsubpick.batにドラッグします。
TSファイルと同じフォルダにsrt形式の字幕ファイルが作成されます。
(2)avsファイルで通常通りCMカットを実施し、エンコードしてください。
詳細は「AviSynthお勧めフィルタ」や、「TSファイルをmp4動画にエンコードする」の記事を参照してください。
ただし、Trimは以下のルールを守ってください。
・Trimと記述する(×: trim(小文字)
・連結は+を使用する(×: ++(2重連結 avisynth2.5.7を使用していれば音ずれ防止のための2重連結は必要ありません)
・Trimを複数行記載しない(以前のCMカット情報を残したり、サンプル例文等を残さない。コメントアウトでも不可)
(3)srtファイルと上記(2)で作成したavsファイルを選択し、SrtSyncと同じフォルダにある
subTrim.batにドラッグします。srtファイルの時間軸が補正されます。
Ctrl+左クリックでそれぞれのファイルを選択することにより、二つのファイルを同時に選択できます。
二つのファイルを選択した状態で、avsファイルをbatファイルにドラッグしてください。
(SrtSyncにavsファイル→srtファイルの順で二つのファイルが渡されるようにします)
これはSrtSync使用時に、avsファイルを先に読み込ませる必要があるからです。
(4)srtファイルをメモ帳で開き、名前をつけて保存→ファイルダイアログの下部にある「文字コード」を「UTF-8」に変更し、保存します。
上書き保存でも問題ありません。
srt形式のファイルがダブルクリックで開かない場合は、ファイル上で右クリック→「プログラムから開く→プログラムを選択」を選択し、
プログラム選択ウィンドウが表示されたらNotepadを選択した状態で「この種類のファイルを開くときは、選択したプログラムをいつも使う」
にチェックを入れることで、メモ調で開けるようになります。
(5)エンコードの完了しているmp4動画と、上記(4)の作業が完了したsrtファイルを選択し、
エンコードの作業フォルダにあるsubadd.batにドラッグします。
com_mp4out.mp4という名前の字幕つきファイルが作成されます。
3.mp4動画の字幕再生方法
mp4動画の字幕再生環境は、パソコン、一般家電ともに整っているとは言い難い状況です。
ここではWindowsMediaPlayerを使用して再生する方法を紹介します。
Vobsub(VSFilter)とmp4スプリッターがインストールされている状態で、
通常通りmp4動画を再生してください。
画面右下、タスクトレイににメディアスプリッターとVobSubのアイコンが表示されるため、
メディアスプリッターを右クリックし、選択されたメニューから字幕データを選択します。

これで字幕が再生されるようになります。
VLCを使用する場合は、設定から字幕の設定(subtitle等)を開き、
フォントを「あくあ文字フォント」「ことり文字フォント」等、日本語対応フリーフォントを選択したのち、
字幕トラックを選択することで表示することができる。
フォントの選択は対象フォントのプロパティを開いてファイル名をコピーし、
ダイアログのファイル名部分にペーストして開くボタンをクリックする。
4.手順省略化案
手順は上記2項によりますが、毎回この手順を踏むのは骨が折れます。
そこで可能な限り自動化を図ります。
TvRockを使用している場合は、TvRockと同じフォルダもしくは、system32フォルダに
Caption2Ass.exeの一式を保存します。
TvRockを使用している場合は、TvRockの設定ウィンドウ最も右にある
プロセスタブを開き、以下のようなコマンドを実施させることにより、分離と字幕抽出が自動化できます。
TN:bontsdemux.exe -i "%1" -start -quit
TN:Caption2Ass.exe -format srt "%1"
字幕ファイルの結合部分の自動化については、文字コードを変換するnkfをダウンロードした後、エンコードに使用するbatを書き換えます。
nkf
解凍後、「2080」フォルダ→「win」フォルダと移動した後、nkf.exeを作業フォルダにコピーしてください。
その後、エンコードに使用するbat(sample.bat等)のmp4boxの部分を、以下のように書き換えます。
nkf -w "%~2" > "%~2utf.srt"
mp4box -add "%~1temp.mp4" -add "%~1wav.m4a" -new "%~1.mp4"
mp4box -add "%~1.mp4" -add "%~2utf.srt" -new "%~1字幕.mp4"
この状態で、avsファイルと、録画完了時に自動的に作成されているsrt字幕ファイルの
二つを同時にbatファイルにドラッグすることで、字幕を自動的につけることができます。
5.トラブルシューティング
・字幕放送なのに抽出できない字幕がある
地上デジタル放送はテキスト字幕と画像字幕のハイブリッド方式らしく、
抽出できるのは現在テキスト字幕のみとなっています。
また、保存の際に保存ソフトウェアの設定で不必要なデータを保存しないよう設定している等、
字幕データを削除してしまっている可能性があります。
TSSplitter等で不必要データの削除を実施しても損失してしまいます。
・mp4boxでエラーが発生する
字幕ファイルの文字コードをUTF-8に、拡張子をsrtにしてあるか確認してください。