プロが教えるわが家の防犯対策術!

ffmpegをphpから使いたいと思って
サーバーにffmpegとffmpeg-phpをインストールしたのですが、
テストページで以下のようなエラーがでてしまいます。

Warning: dl() [function.dl]: Unable to load dynamic library '/usr/lib/php/modules/ffmpeg.so' - /usr/lib/php/modules/ffmpeg.so: undefined symbol: img_resample in /var/www/html/ffmpeg/test_ffmpeg.php on line 17

/usr/lib/php/modules/ffmpeg.soは有りました。
ffmpegコマンドも最初は動きませんでしたが、いろいろ無いと言われた*.soファイルへのシンボリックリンクを/usr/lib内に作ることで動くにようにはなりました。
他にphp.iniにextension=ffmpeg.soと入れてみたりいろいろいじっていましたがどうにも私の知識では解決できそうにありません。
何卒お知恵をお借りできたらと思い投稿させていただきました。

環境は、
fedora8
php5

ffmpegのインストールは
http://codezine.jp/article/detail/2444?p=1
ffmpeg-phpのインストールは
http://www.phppro.jp/phptips/archives/vol50/2
を参考にさせていただきました。

宜しくお願いしますm(_ _)m

A 回答 (1件)

ffmpeg-phpを使わずに、一度execメソッドでffmpegを実行してみて、


PHPからffmpegが実行できるか試してみてはいかがでしょうか?

exec("ffmpeg -y -i /home/test.avi -f image2 -ss 00:00:10 -vframes 1 /home/test.jpg");
↑のコマンドは/home/test.aviの動画から10秒後(1フレーム)を画像にするものです。。

この回答への補足

早速アドバイスいただきましてありがとうございます。
教えて頂いた内容を実行してみました結果、
何も出力されませんでした。
exec("ffmpeg -y -i /var/www/html/ffmpeg/test.avi -f image2 -ss 00:00:03 -vframes 1 /var/www/html/ffmpeg/test.jpg", $output, $result);
の結果は、
$outputがarray empty
$resultがint(127)
でした。
これらが意味しているところは分かりませんでした。
exec("ffmpeg -y -i /var/www/html/ffmpeg/test.avi -f image2 -ss 00:00:03 -vframes 1 /var/www/html/ffmpeg/test.jpg > log.txt");
としてみましたら、空のlog.txtができていました。
コマンドライン上で
ffmpeg -y -i /var/www/html/ffmpeg/test.avi -f image2 -ss 00:00:03 -vframes 1 /var/www/html/ffmpeg/test.jpg
を直接実行したら、正常に処理され、jpgが出来ました。
そのときの実行結果は以下になります。

Fmpeg version SVN-r14967, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --enable-shared --enable-swscale --enable-gpl
libavutil 49.10. 0 / 49.10. 0
libavcodec 51.69. 0 / 51.69. 0
libavformat 52.21. 0 / 52.21. 0
libavdevice 52. 1. 0 / 52. 1. 0
built on Aug 26 2008 02:23:37, gcc: 4.1.2 20070925 (Red Hat 4.1.2-33)
[avi @ 0x82f81f0]sample size (16) != block align (4)

Seems stream 0 codec frame rate differs from container frame rate: 29.97 (30000/1001) -> 29.97 (2997/100)
Input #0, avi, from '/var/www/html/ffmpeg/test.avi':
Duration: 00:00:03.00, start: 0.000000, bitrate: 29812 kb/s
Stream #0.0: Video: dvvideo, yuv411p, 720x480, 29.97 tb(r)
Stream #0.1: Audio: pcm_s16le, 32000 Hz, stereo, s16, 1024 kb/s
Output #0, image2, to '/var/www/html/ffmpeg/test.jpg':
Stream #0.0: Video: mjpeg, yuvj420p, 720x480, q=2-31, 200 kb/s, 29.97 tb(c)
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
frame= 1 fps= 0 q=4.1 Lsize= -0kB time=0.03 bitrate= -5.3kbits/s
video:30kB audio:0kB global headers:0kB muxing overhead -100.071248

やはりPHPからの実行ができないようですが、どこを見ればいいでしょうか?大変お手数ですが、また何かヒントをいただけたら幸いです。
よろしくお願いします。

補足日時:2008/08/26 20:28
    • good
    • 0
この回答へのお礼

すいません補足に書かせて頂いた件は
exec("ffmpeg ...

exec("/usr/local/bin/ffmpeg ...
とすることで解決しました。
しかし本題は以前解決してませんが・・
ご報告までです。

お礼日時:2008/08/27 10:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!