LLVM GCCではMMX関係のマクロの展開に失敗しているような感じで、未解決のシンボルがどうのといって止まってしまう。
困っていたのだが、検索してみたところ、configure時に--cc=clangオプションをつけて、clangでコンパイルすればよいという説明があり、試してみたら成功した。
おそらく、コマンドラインはこんな感じだと思う。
port install ffmpeg-devel configure.cc=clang僕は、最新版のGitリポジトリから入れた。とはいえ、依存ライブラリから全部自前では面倒なので、いったん普通にportでffmpegを入れようとして、依存ライブラリが全て入ったところでffmpegのconfigureに失敗するところから始めた。
まず、
port clean ffmpegしたあと、適当なディレクトリに
git clone git://git.videolan.org/ffmpeg.gitして最新のソースツリーを取得し、そのあとでMacPortsが与えるオプションを用いてconfigureを実行する。
ただ、気のせいかどうかわからないけれど、gitの結果できるffmpegディレクトリのなかに再びffmpegディレクトリがあったような気がするので、あれば消しておく必要がある(実行ファイル名とディレクトリ名がぶつかり、エラーになるから)。.gitignoreにffmpegと書いてあるので、次回のpull時に復活する可能性はないはず。
与えたオプションは以下の通り。
./configure --prefix=/opt/local --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libxvid --enable-libx264 --enable-libvpx --enable-libspeex --mandir=/opt/local/share/man --enable-shared --enable-pthreads --extra-ldflags="-L/opt/local/lib" --extra-cflags="-I/opt/local/include" --enable-version3 --arch=x86_64 --cpu=x86_64 --cc=clangあとは、make && make installすれば/opt/local/bin以下にffmpeg関係のバイナリが入る。
MacPortsのffmpeg-develはまだsvnのリポジトリを参照しているようで、まだ0.7あたりのようだ。gitのほうは、すでに0.8は終わってその次になっているので、gitからビルドしたほうが、より高速で高機能かつ高画質なバイナリが得られるはず。ffmpeg-develリストを読む限り、少なくともMacに関しては、「VDA (Video Decode Acceleration Framework)」が最近入ったので、H.264のデコードがGPUによって行われる分、変換が高速になるはず。また、DCTのテーブルも調整されているので、画質向上も図られていると思われる。
なお、MacPortsで入っているx264が古いためか、MP4にエンコードする際にCPUのもつMMX等のスーパースケーラー機能がないと勘違いし、ひどく遅くなる。x264もGitで最新版にしておく必要があるようだ。
git clone git://git.videolan.org/x264.gitconfigureのオプションは、MacPortsにしたがって、
./configure --prefix=/opt/local --enable-pic --enable-sharedとしておいた。make && make install後、ffmpegを再度ビルドしなおせば、例えばCore2Duoの場合なら
[libx264 @ 0x7fee9a0bc800] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64のように、きちんとCPUに装備されている並列計算機能を利用してくれる。失敗した場合は、この表示が「none!」になってしまう。