MinGW+ffmpeg(3)faac,faadMinGW+ffmpeg(3)faac,faadMinGW+ffmpeg(3)faac,faadこれらはどちらもAudioCoding.comからリリースされている。情報源を忘れてしまったが、猫Pの記憶が確かであればMPEG規格上のリファレンス実装に当たるはずで、信頼性が高い。サイトにリンクが張られていることからもわかるように、CD/DVD書き込みソフトで有名なneroとも関連が深い。ソースはオープンだが開発はオープンではなく、マルチプラットフォームへの対応度や実行速度は優れているとは言い難い。映像のエンコードに比べれば微々たる物なのでそれほど問題はないだろう。faac/faadのビルドは環境条件が厳しい。bash-2.05やgcc4.2.1もダメだ。MinGW(4)や今更MinGW(5)を参考に確認されたい。faacfaacは前バージョンである1.25ではビルドに問題があった。ソースコード中(autotools関連)に改行コードがLFではなくCRLFになっている物が複数あり、これが原因でそのままではビルドが通らなかった。現在の1.26ではこれは修正され、素直に通るようになっている。コマンドは以下の通り。/mingw/lib/--without-mp4v2によりfaad.exeで出力形式にmp4がサポートされなくなってしまうが、ffmpegで使用するのは純粋なエンコード機能のみなので問題ない。mp4をサポートさせるには色々と修正が必要になるため、ここでは割愛する。ネットを検索してみるとパッチ当てや特殊なオプションを指定するように指示するサイトもあるようだが、猫Pの認識では上記の通りで問題ない。faadここでいうfaadは、正確にはfaad2だ。faadとfaad2の機能的な違いは把握していないが、少なくともライセンスに違いがある。faadはLGPLでfaad2はGPLだ。ちなみにfaacはLGPL。このような事態になっているのかは不明である。ここではfaad2を単にfaadと呼ぶ。faadのビルドには一点だけ事前のソース修正が必要だ。!defined(__MINGW32__)と修正しよう。MinGWで定義済みのタイプをfaadで再定義されることを回避する。/mingw/lib/でOKだ。ネットを検索してみるとパッチ当てを指示するサイトもあるようだが、猫Pの認識では上記の通りで問題ない。faad2のうんちく世界に標準的に流通しているAACはLCプロファイルと呼ばれる規格のAACだが、faadはこれ以外の規格(MAIN,LTP等)にも対応している。LCプロファイルの中にはHE-AACと呼ばれるより進化した規格があるが、これにも対応している。ソースを見る限りではHE-AAC+にも対応しているようだ。このあたりの名称はかなりいい加減で、他にもいろいろな表記がある。Stereo(PS)という1chの情報をパラメータで左右に振り分けステレオ化する技術を使用している。このことから、例えばHE-AAC+がAAC+SBR+PSといった表記をされることもある。faacはSBR/PSには対応していないようだ。このあたりの詳細はまたの機会に書いてみたい。Perl5.010001。