ffmpeg をインストールし直す

iDVDiMovie に読み込ませることができない QuickTime ムービーがあるので、 MPEG-Exporter-TNG や QT-MPEG4-Exporter や FFmpegX で変換しようとした。 しかし MPEG-Exporter-TNG も FFmpegX も mpeg4 や H264 に変換しようとするとエラーになってしまう。 QT-MPEG4-Exporter でも iPod mpeg4, H264 や DV フォーマットなら変換できるものの、 iPod mpeg4, H264 だと画質が劣化するし、 DV フォーマットだとサイズが大きくなる(8 分のムービーで 1.8G。)

そういえば ffmpegLeopard の時にインストールしたもので、 Snow Leopard にしてからバージョンをあげてなかったなと思い再インストールすることにした。

MacPorts をアップデート

で、 ffmpegMacPorts でインストールしていたので、 まずは MacPortsSnow Leopard 対応版の 1.8.2 にアップデート。 ここで何も考えずに上書きインストールしたのだが、 これが不幸の始まりだった。

ffmpeg をインストールするもエラーになる

port variants ffmpeg してみると、 以前のようにたくさん一覧されず、

ffmpeg has the variants:
   darwin_10: Platform variant, selected automatically
   no_gpl: disallow use of GPL code, license will be LGPL
   no_mmx: disable all x86 asm optimizations
   speex: enable Speex decoding via libspeex

という表示。

まあ、 バージョンも上がったことだしこういうこともあるかととりあえず、 sudo port install ffmpeg してみた。 すると、 依存チェックのところで bindtextdomain 関数が必要だというエラーが出てインストールできない。 どうやら gettext 関係の関数らしい。

ネットで検索してみたが、 エラーレポートばかりで解決方法が出ていない。 なにより日本語のサイトではそのようなエラーが出たという報告もない。

どうしようもないので、 いっそのことと思い ffmpegソースコードをダウンロードして、 それからビルドしようとした。

しかし検索してみると途方もなく面倒くさいようなので、 あえなく挫折。

そこで gettext とそれに依存するパッケージをアンインストールしてから再インストールしてみることに。 しかし、 gettext を再インストールしようとすると、 perl の Locale::gettext モジュールが依存していて、 それが見つからないためにエラーとなってインストールできない。 そして cpan Locale::gettextしても gettext がないのでインストールできないと言ってくる。 これでは堂々巡りになってどうしようもないではないか。

MacPorts をアンインストールしてから、再度インストールする

そこでふと気がついた。 もしかすると Leopard の時にインストールした MacPorts をアンインストールせずに Snow LeopardMacPorts をインストールしたので競合が起こっているのではないだろうか。

そこで、

$ find /Library/LaunchDaemons/org.macports.* -print0 | \
sudo xargs -0 -L1 launchctl unload -w

として daemon をアンインストール。そして

$ sudo port deactivate active
$ sudo rm -r /opt

MacPorts をすべて削除してから MacPortsインストーラを再度実行。その後

$ sudo port selfupdate

してから

$ sudo port install ffmpeg

したところ、 無事ビルドとインストールが始まった。

結末

嬉々として MPEG-Exporter-TNG を起動して再チャレンジしてみると、 前と同じエラーメッセージ。 FFmpegX もやはりエラーが出て動画のない音声だけのムービーができてしまう。

今までの苦労は何だったのか…。

2010/01/07 追記: 変換できないムービーを QuickTimeX のムービーインスペクタで見てみると、 フォーマットが H.264 (Perian) になっていた。

うーん、 このせいで ffmpeg ではビデオを読み込めなかったのかな。 でも Perian て ffmpeg プロジェクトの成果のライブラリを使っているはずなので、 ffmpeg で読み込めないということはないと思うのだが。