MacPortsでのffmpegのインストールで必要なさそうな苦労をした話

前にffmpegをソースからインストールしようとしてあっさり失敗したんですが、MacPorts で ffmpeg をビルドして flv を H.264 であれこれする - Debian GNU/Linux 3.1 on PowerMac G4をみてMacPortsからだと簡単そうだったので試してみましたが、それなりに考えてしまいました。

結論

もろもろ最新版を入れましょう。

条件を整えれば何も考えずに終わるはず。

経緯

MacPortsはdmgでインストールして

sudo port selfupdate

したけど、dmgで最新だったからとくに変わらず。

インストールの指定はこんなんで実行!

sudo port install ffmpeg +lame +libogg +vorbis +faac +faad +xvid +x264 +a52
theora

一番始めに止まった。けど順番が悪かっただけみたいだから、今からやり直せば入りそうだけど、使わなそうなので、パラメータから外した。

--->  Cleaning libvorbis
--->  Fetching libtheora
--->  Attempting to fetch libtheora-1.0beta1.tar.bz2 from http://downloads.xiph.org/releases/theora/
--->  Verifying checksum(s) for libtheora
--->  Extracting libtheora
--->  Applying patches to libtheora
--->  Configuring libtheora
--->  Building libtheora with target all
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_libtheora/work/libtheora-1.0beta1" && make all " returned error 2
Command output:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I../lib -I../lib/dec -I../lib/enc -I/opt/local/include -I/opt/local/include -Wall -Wno-parentheses -O3 -fforce-addr -fomit-frame-pointer -finline-functions -funroll-loops -O2 -MT libtheora_la-idct.lo -MD -MP -MF .deps/libtheora_la-idct.Tpo -c dec/idct.c -o libtheora_la-idct.o >/dev/null 2>&1
mv -f .deps/libtheora_la-idct.Tpo .deps/libtheora_la-idct.Plo
<中略>
 gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I../lib -I../lib/dec -I../lib/enc -I/opt/local/include -I/opt/local/include -Wall -Wno-parentheses -O3 -fforce-addr -fomit-frame-pointer -finline-functions -funroll-loops -O2 -MT libtheora_la-dsp_mmx.lo -MD -MP -MF .deps/libtheora_la-dsp_mmx.Tpo -c enc/x86_32/dsp_mmx.c  -fno-common -DPIC -o .libs/libtheora_la-dsp_mmx.o
/var/tmp//ccFcFinp.s:739:no such 386 instruction: `movsx'
/var/tmp//ccFcFinp.s:789:no such 386 instruction: `movsx'
/var/tmp//ccFcFinp.s:853:no such 386 instruction: `movsx'
make[2]: *** [libtheora_la-dsp_mmx.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Error: The following dependencies failed to build: libtheora subversion apr apr-util neon x264
Error: Status 1 encountered during processing.
x264

次にこれ。assemblerがないと。

$ sudo port install x264
--->  Fetching x264
--->  Verifying checksum(s) for x264
--->  Extracting x264
--->  Configuring x264
Error: Target org.macports.configure returned: configure failure: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_x264/work/x264-snapshot-20070411-2245" && ./configure --prefix=/opt/local --enable-pthread --enable-pic " returned error 1
Command output: ./configure: line 214: [: -lt: unary operator expected
./configure: line 231:  1091 Bus error               $AS conftest.asm $ASFLAGS $2 -o conftest.o 2>$DEVNULL
No assembler. Please install yasm.

Error: Status 1 encountered during processing.

失敗するたびに

sudo port clean x264

ってやんないといけないのがちょっとめんどい。

yasm

yasmは普通に。

$ sudo port install yasm
--->  Fetching yasm
--->  Attempting to fetch yasm-0.6.1.tar.gz from http://www.tortall.net/projects/yasm/releases/
--->  Verifying checksum(s) for yasm
--->  Extracting yasm
--->  Configuring yasm
--->  Building yasm with target all
--->  Staging yasm into destroot
--->  Installing yasm 0.6.1_0
--->  Activating yasm 0.6.1_0
--->  Cleaning yasm
ffmpeg

これでいけるかと思ったけど、やっぱダメだった。

$ sudo port install ffmpeg  +lame +libogg +vorbis +faac +faad +xvid +x264 +a52
--->  Fetching ffmpeg
--->  Verifying checksum(s) for ffmpeg
--->  Extracting ffmpeg
--->  Configuring ffmpeg
--->  Building ffmpeg with target all
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_ffmpeg/work/trunk" && make all " returned error 2
<中略>
{standard input}:259:Missing operand value assumed absolute 0.
{standard input}:260:Missing operand value assumed absolute 0.
{standard input}:263:Missing operand value assumed absolute 0.
{standard input}:264:Missing operand value assumed absolute 0.
{standard input}:431:Missing operand value assumed absolute 0.
{standard input}:433:Missing operand value assumed absolute 0.
{standard input}:437:Missing operand value assumed absolute 0.
{standard input}:457:Missing operand value assumed absolute 0.
make[1]: *** [i386/fft_sse.o] Error 1
make: *** [lib] Error 2
rm doc/ffserver.pod doc/ffmpeg.pod doc/ffplay.pod

Error: Status 1 encountered during processing.

ここまでが昨日。ここで疲れ果てて就寝。

で、今日調べてみたら、MacPorts - Users - ffmpeg - unable to installに、同じようにはまったひとがいて、バージョン上げやがれと書いてあったので、Xcodeのバージョン上げて実行したら、buildに30分くらいかかったけど、成功した!YATTA!特に何をしたわけでもないけどうれしいよ。
Xcodeのdmgが1GBあって挫けそうになったけど、あきらめないでよかった。

flv2mp3のパラメータ

flvだとmp3がそのまま入っているので、copyを指定すれば、そのmp3の指定をそのまま使うならarとかabの指定はいらないっぽい?

ffmpeg -i foo.flv -acodec copy foo.mp3