ffmpeg インストールメモ


0. はじめに

MacPorts (DarwinPorts) で ffmpeg をインストールした際のメモ。

ffmpeg は色々とインストールに苦労するパッケージで、あちこちにインストールメモが存在するが、
今回は 2008/02/27 現在、検索しても見つからなかったトラブルに遭遇した。

単に自分の環境がおかしいだけという可能性も大なのだが、原因が分かるまで苦労したので
また同じ現象に会った時のために記録を残しておく事にした。

(2008/03/14 追記)
MacPorts の Ticket #14492 で報告されているのを発見した。
どうやら ffmpeg の svn レポジトリに問題があったらしい。

ffmpeg staging error: usage: install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]

(2008/03/17 追記)
上記のリンク先に 2008/03/16 付けで修正報告が上がった。
改めてコンパイルを試してみたが無事成功した。
もうこのメモの存在意義は無くなったが、一応残しておく。


1. 環境

OSMac OS X 10.4.11
CPUPowerPC G4
MacPorts1.600
gcc4.0.1 (Xcode 2.5)
lame3.97_0
faac1.26_0
a52dec0.7.4_0
ffmpeg0.4.9-pre1_5

2. variants 用パッケージのインストール

いくつかの音周りのパッケージを事前にインストール。
これは特に問題なし。

# port install lame faac a52dec

3. ffmpeg のインストール

3.1 エラーメッセージ

ネット上でよく見かけるのが make install 中の、ライブラリ関係のコピー時のエラーで
基本的には事前に ffmpeg をアンインストールする事で回避できる。

今回もエラーが出るタイミングは同じなのだが、ちょっと種類が違う。

# port install ffmpeg +lame +faac +a52
(中略)
make -C libavutil   install-libs
install -d "/opt/local/var/(中略)/work/destroot/opt/local/lib"
install -m 755  "/opt/local/var/(中略)/work/destroot/opt/local/lib/libavutil.49.6.0.dylib"
usage: install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
               [-o owner] file1 file2
       install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]
               [-o owner] file1 ... fileN directory
       install -d [-v] [-g group] [-m mode] [-o owner] directory ...
make[1]: *** [install-lib-shared] Error 64
make: *** [install-libs] Error 2

メッセージを見て分かる通り、install コマンドでコピーされる元のファイルが空になっている。
(install -m 755 の後にスペースが一個余計に入っている)

3.2 対処法

ffmepg の Makefile は config.mak で基本的な変数を、common.mak で共通のターゲットを定義して
サブディレクトリの Makefile はこれらを include している。(自動生成かな?)

空になっている変数は $(SLIBNAME) で、config.mak で

config.mak
SLIBNAME=$(SLIBPREF)$(FULLNAME)$(SLIBSUF)

と定義されているのだが、何故か common.mak から参照する時には空になってしまい、
ターゲット $(SLIBNAME) が実行されない為に、後にコピーされる dylib ファイルが作成されなくなってしまう。
他の変数は参照できるので common.mak で改めて $(SLIBNAME) を定義する事でエラーを回避できる。

common.mak
SLIBNAME=$(SLIBPREF)$(FULLNAME)$(SLIBSUF)

どう考えても対症療法なのだが、これでインストールできる。


4. インストール結果

無事インストール終了。

$ ffmpeg -version
FFmpeg version UNKNOWN, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --prefix=/opt/local --prefix=/opt/local --disable-vhook
   --mandir=/opt/local/share/man --enable-shared --enable-pthreads
   --enable-libmp3lame --enable-gpl --enable-libfaac --enable-liba52
  libavutil version: 49.6.0
  libavcodec version: 51.49.0
  libavformat version: 52.4.0
  libavdevice version: 52.0.0
  built on Feb 27 2008 19:31:38, gcc: 4.0.1 (Apple Computer, Inc. build 5370)
FFmpeg UNKNOWN
libavutil   3212800
libavcodec  3354880
libavformat 3408896
libavdevice 3407872


2008/02/27 作成