FFmpegを
MacOS Xで
MacPortsを使って
入れたよ、という話です。
出来心で、最近買った Videoカメラの動画を変換したくなったので。
こっそりYouTubeに
あげたりしたんだけど、実家のPCじゃみられないので、
aviにしたりすればいいのかなあ、と。
ports fileは用意されているので ports install
で
頑張ってくれます。でも以下のようなエラーが:
gcc -I"/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_ffmpeg/work/trunk"/libswscale -I"/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_ffmpeg/work/trunk"/libavcodec -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -I"/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_ffmpeg/work/trunk" -I"/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_ffmpeg/work/trunk" -I"/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_ffmpeg/work/trunk"/libavutil -O2 -DHAVE_LRINTF -I/opt/local/include -no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare -fomit-frame-pointer -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -O3 -c -o i386/cavsdsp_mmx.o i386/cavsdsp_mmx.c
i386/cavsdsp_mmx.c: In function 'ff_put_cavs_qpel8_mc01_3dnow':
i386/cavsdsp_mmx.c:447: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
make[1]: *** [i386/cavsdsp_mmx.o] Error 1
あ、一行が長いんで大変っすね。まあ、肝心なのは "GENERAL_REGS" 云々っすから。
これはasm命令で割り当てる registerがないってことらしい。恥ずかしながら GCCの asmはいじったことないのでなおし用もわからない。だいたい、MMXだの 3DNow!だのはいって、最近の x86はわからんし。
こちらによると
-mdynamic-no-pic
をつけるといいよって説もありますが、
PowerPC用optionだし、
shared libraryに向かないって書いてあるんで止しました。
代わりに日和って-disable-mmx
です。これを Portsfileにちこっと書いてやり直し。これで無事 compileできました。せっかくの MMXやらを使えないのは悲しいけどねえ。
で、喜び勇んで変換してみると
[1:10]marble:~<109> ffmpeg -i ~/Movies/takesi/PRG00C/MOV002.mpg /tmp/aho.flv
FFmpeg version SVN-r11532, 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 --disable-mmx
libavutil version: 49.6.0
libavcodec version: 51.49.0
libavformat version: 52.4.0
libavdevice version: 52.0.0
built on Feb 13 2008 00:50:33, gcc: 4.0.1 (Apple Computer, Inc. build 5367)
Input #0, mpeg, from '/Users/takesi/Movies/takesi/PRG00C/MOV002.mpg':
Duration: 00:01:20.5, start: 0.255589, bitrate: 2464 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 704x480 [PAR 8:9 DAR 176:135], 9542 kb/s, 29.97 tb(r)
Stream #0.1[0x80]: Audio: 0x0000, 48000 Hz, stereo, 256 kb/s
Output #0, flv, to '/tmp/aho.flv':
Stream #0.0: Video: flv, yuv420p, 704x480 [PAR 8:9 DAR 176:135], q=2-31, 200 kb/s, 29.97 tb(c)
Stream #0.1: Audio: adpcm_swf, 48000 Hz, stereo, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
[adpcm_swf @ 0x132a810]Sample rate must be 11025, 22050 or 44100
Error while opening codec for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height
うーむ、Audio stream の sampling rateがダメだよ、っていってるんですね。そんなの変換してくれないのかよ。
どうもここらへん、multimedia業界の formatってのはよくわかりません。
勝手に変換されるのを気にする風潮とかあるんでしょうか。
もう少し調べてみます。
2008-03-07 (Fri) 追記:
macport でいれるのは以下のコマンドラインでうまくいきました。
sudo port install ffmpeg +gpl +lame +extvorbis +faac +faad +xvid +x264 +a52
ちゃんと SDR-H18でとった AC3 audioも変換できてます。
ffmpeg macports で検索されてきている方も多いので、ここに追記しときます。
最近のコメント