ffmpegをphpのexecで動かそうとしてハマる

お名前ドットコム共用サーバーSDでのDB設定まとめ!

動画を色々いじってみたくてffmpegを試しました。
インストール系苦手なんです。知識が無いだけなのだけれども、大体ハマる。

今回も例にもれず、ややこしくなりました。

ffmpegをインストールして動かしてみる

僕はmacportsを使っているのでmacportsからインストールします。
ターミナルより

sudo port install ffmpeg

です。

インストールが完了したらffmpegのコマンドが効くか確認します。

ffmpeg
ffmpeg version 2.2 Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 25 2014 08:36:03 with Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-avresample --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libass --enable-libbluray --enable-gnutls --enable-fontconfig --enable-libfreetype --disable-indev=jack --disable-outdev=xv --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --enable-vda --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid
libavutil      52. 66.100 / 52. 66.100
libavcodec     55. 52.102 / 55. 52.102
libavformat    55. 33.100 / 55. 33.100
libavdevice    55. 10.100 / 55. 10.100
libavfilter     4.  2.100 /  4.  2.100
libavresample   1.  2.  0 /  1.  2.  0
libswscale      2.  5.102 /  2.  5.102
libswresample   0. 18.100 /  0. 18.100
libpostproc    52.  3.100 / 52.  3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

大丈夫そうです。
この時点でコンソールからffmpegで動画をいじれます。

ffmpeg -i foo.mp4 bar.flv

foo.mp4がbar.flvに早変わり!素敵。

phpで動かしたいのです

はまったのはここからでした。
アプリケーションを作りたかったので、phpから使いたかったのです。
php-ffmpegとか使おうとしたけど、何やら動かない。
どうしても動かない。
他の手を考えないと嫌になっちゃうので(笑)、phpのexecでとりあえず動かしてみようと考えました。

var_dump( exec('ffmpeg -i 2>&1', $out, $ret) );
print_r( $out );
var_dump( $ret );

としてみます。

コマンドが見つからないとのエラー。
むむむ。
グーグル先生に聞いてみると、どうやらシステムパスがうんたらかんたら、とおっしゃる。

which ffmpeg

とすると/opt/local/bin/ffmpegなので、これかと思い、/usr/binの中にシンボリックリンクを貼ってみました。

ln -s /opt/local/bin/ffmpeg /usr/bin

おお。エラーが変わりましたよ。
エラーはでているけど、一応コマンドは動いたぽい。
この後続々と.dylib関連のエラーが起きました。
全て/opt/local/libの中にある.dylibを/Applications/MAMP/Library/libに上書きしていきます。

sudo cp /opt/local/lib/libfreetype.6.dylib /Applications/MAMP/Library/lib/

3つほど上書きしたところで、別のpathのエラーがでました。
それも同様に上書きしていきます。

sudo cp /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib /Applications/MAMP/Library/lib/

6〜7個上記のエラーを回避したところで、ようやく望んだ結果が表示されましたよ!
結構力技だと思われます。ので、やるのであれば自己責任でお願い致します。

コメントを残す

*