CentOS 6 に ffmpeg を追加で別バージョンをインストール

[インスール環境]
OS: CentOS 6
CPUコア数:12
ffmpegバージョン:2.1.3

既に、ffmpegはインストールされていてシステム内で利用されている。
今回の目的が文字(字幕)を映像にオーバーライド(いやゆる焼きつけ)する事。

で、その為にどうすれば良いかを調べるとASS(Advanced Substation Alpha) ファイルを用意して
指定するようなので、

http://www.ffmpeg.org/ffmpeg-filters.html#ass

より抜粋

9.3 ass
Same as the subtitles filter, except that it doesn’t require libavcodec and libavformat to work. On the other hand, it is limited to ASS (Advanced Substation Alpha) subtitles files.

とりあえず、ass ファイルフォーマットがどういう書式なのか調べてテストファイルを作り実行・・

[AVFilterGraph @ 0x23b2fe0] No such filter: 'ass'
Error opening filters!

とエラーになり字幕焼き付けビデオを生成できない。

理由は、configureで–enable-libass を指定していなかった。
さらに、必要なライブラリーパッケージのlibass-develも入っていなかった。

このバージョンのffmpegのソース一式は
http://www.ffmpeg.org/releases/ffmpeg-2.1.3.tar.gz にあるので
インストールし直すのが本来なのだが、現状動いているffmpegを利用しているシステムを止められないのと、
万が一動作不良に陥っても困るので、別途新しくプログラムをコンパイルして生成しようと考えてやってみた。
(うん、やってみた?
しばらく(十数年)UNIXでのc言語開発からは遠ざかっているので、単純にコンパイルして作ったプログラムで
動作するのかが不安であった為。)

1.事前準備
# yum install libass-devel
後は、別バージョン用ソースを入手してルートでは無い一般権限ユーザでログインしてホームディレクトリーに
ffmpegディレクトリーを作成しそこで作業。

$ mkdir ffmpeg
$ cd ffmpeg
今回は git から入手
$ git clone git://source.ffmpeg.org/ffmpeg.git
ffmpeg ディレクトリーが作成されている。
mkdir ffmpeg しなくて良かった。
ま、ファイルを移動すればいいいのですが今回はこのままで。

$ cd ffmpeg
$ ./configure --enable-gpl --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-nonfree --enable-libass --enable-static

–enable-libass –enable-static が重要

エラーがないので、このままコンパイルとリンクで実行プログラム作成
$ make -j12
で、このディレクトリー内に実行ファイルのffmpegが作成されました。
実行プログラムの容量は静的リンクでmakeしたので16Mバイトを超えています。
ちなみに、動的リンクで作成した場合は200Kバイト程度です。
  (でも、–enable-shared で makeして実行すると何やら色々エラーになりました。)

これで、作成した字幕ファイルのtest.assファイルを指定して生成すると
ffmpeg/ffmpeg/ffmpeg -i input.mp4 -vf “ass=test.ass” outcaption.mp4
見事outcaption.mp4ファイルに指定した文字列が焼き付きました。

もちろん、このプログラム(ffmpeg)を単体で別のディレクトリーに移動して、作業で使った
ffmpeg ディレクトリーは削除しても問題ないです。