2011年12月09日

FFmpegで動画に字幕を付けてみる

当サイトのFFmpeg rev.35550より、字幕ファイルの読み込みに対応しました。
字幕ファイルは、ASS/SSA規格の読み込みに対応しています。

映像に字幕を埋め込む、いわゆるハードサブというものです。
動画プレイヤーで、字幕をOFFにできません。

字幕ファイルの作り方などは、G-MARKさんのサイトが参考になります。
G-MARK - 字幕制作
http://g-mark.jpn.org/index.php?G-MARK

字幕ファイルの作成は「Aegisub」がおすすめです。
映像をプレビューしながら、音に合わせて字幕のタイミングを決められるので、使いやすいです。
http://www.aegisub.org/

「Aegisub」の使い方などは、検索すれば見つかると思いますので、省略します。


字幕ファイル、字幕を入れたい動画が用意できたら、次に「携帯動画変換君」の設定です。

「ffmpeg.exe」は、当サイトのFFmpeg rev.35550など、字幕ファイルの読み込みに対応しているものを使用してください。

コマンドプロンプトなどで、
ffmpeg -filters
と実行して、
ass Render subtitles onto input video using the libass library.
という行があれば、字幕ファイルの読み込みに対応しています。


次に、Windowsのフォント情報を取得するための「fonts.conf」ファイルを用意します。

GTK+ Download: Windows (32-bit)
http://www.gtk.org/download/win32.php
ここにある、
Required third party dependencies
Fontconfig 2.8.0 Run-time から、
fontconfig_2.8.0-2_win32.zip
をダウンロードします。

zipファイルを解凍すると、
etc\fonts\fonts.conf
というファイルがありますので、「携帯動画変換君」のcoresフォルダにfontsフォルダを作成して、コピーします。

コマンドラインで使用する場合は、「ffmpeg.exe」があるフォルダを基準にして、「fonts\fonts.conf」があれば良いです。

字幕ファイルはどこに置いても良いのですが、「3GP_Converter.exe」と同じフォルダに置けば、パスを指定しなくても良いです。

字幕ファイルを「sub.ass」とすると、

C:\Program Files\3GP_Converter\sub.ass
C:\Program Files\3GP_Converter\cores\ffmpeg.exe
C:\Program Files\3GP_Converter\cores\fonts\fonts.conf

と、なっていればOKです。


「携帯動画変換君」の「Transcoding.ini」の設定例は、以下の通りです。
解像度やビットレートなどは、目的に合わせて変更してください。

設定例はx264のmp4ですが、字幕を映像に埋め込むので、動画コーデックは、x264の他、Xvidなど、コンテナフォーマットは、mp4、3gp、aviなど何でも良いです。

字幕ファイルは、「-vf ass="sub.ass"」の所を変更してください。
字幕ファイルの文字コードは、「UTF-8」で保存してください。
「SJIS」だと文字化けしました。

Title=【動画】字幕付き x264 + Nero AAC 360p 30fps mp4
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn -acodec pcm_s16le -ac 2 -ar 44100 "<%TemporaryFile%>.wav""
Command1=""<%AppPath%>\cores\neroAacEnc" -if "<%TemporaryFile%>.wav" -lc -br 128000 -of "<%TemporaryFile%>.aac"
Command2=""<%AppPath%>\cores\ffmpeg" -y -i "<%TemporaryFile%>.aac" -i "<%InputFile%>" -acodec copy -vcodec libx264 -b 768k -s 640x360 -aspect 16:9 -r 29.97 -sws_flags lanczos+print_info -me_method umh -g 150 -qcomp 0.7 -qblur 0.5 -qmin 10 -qmax 51 -qdiff 4 -subq 6 -me_range 16 -coder vlc -sc_threshold 50 -flags +loop -flags2 +mixed_refs -keyint_min 30 -cmp chroma -level 30 -refs 3 -i_qfactor 0.714286 -f mp4 -vf ass="sub.ass" -threads 3 "<%OutputFile%>.mp4""
Command3="rm "<%TemporaryFile%>.wav""
Command4="rm "<%TemporaryFile%>.aac""

あとは、「携帯動画変換君」に動画をドロップすれば、エンコードが始まります。
最初の1回だけ、Windowsのフォント情報を取得するのに時間がかかります。


洋画に字幕を付けたり、ミュージックビデオに歌詞を付けたり、いろいろ使い道はありそうですね。

以上、みなさまのご参考になれば幸いです。
posted by あべちん at 13:14 | Comment(2) | TrackBack(0) | 携帯動画変換君
この記事へのコメント
いつも見ています。
感激します。
また見ます。
Posted by くまちゃん at 2011年12月09日 23:18
くまちゃんさん、こんにちは。管理人です。

私も、くまちゃんさんにコメントもらえて感激です(謎
時々更新していますので、またどうぞ。
Posted by あべちん at 2011年12月10日 19:06
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/51570792
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック