動画と字幕ファイル(.srtファイル)を別々に受け取り、動画に字幕を焼き込む(ハードサブ)お仕事のmemo

前提知識 見出しへのリンク

srtファイルは、テキストファイルに字幕のテキストと、その表示開始時刻、終了時刻を書いたテキストファイル

assファイルは、srtファイルに加え、フォントやフォントサイズ、影などのスタイルを含んだテキストファイル

事前準備 見出しへのリンク

ffmpegを --with-libass オプション付きでビルドする

brew install ffmpeg --with-libass

Aegisub Advanced Subtitle Editor をインストール

作業 見出しへのリンク

ffmpegを使って、以下のようにsrtファイルをassに変換することができる。

ffmpeg -i subtitles.srt subtitles.ass

ところがこれで生成されたassファイルを動画に焼き込もうとすると、
(ffmpegが生成した)スタイルの指定に問題があってそれをffmpegがスルーするのか、
スタイルの設定が反映されず、16ptのArialフォントになってしまう。

ここで Aegisub を使う。
Aegisubでsrtファイルを開くと、srtファイルに文法エラーがあった時に、行番号を丁寧にも教えてくれるのでsrtファイルを修正する。
最後に Save Subtitles as でassファイルに書き出す。

で、焼き込む

ffmpeg -i in.mov -vf subtitles=subtitles.ass out.mov

とりあえずできた。