0

php からシェル関数を実行して、アップロードされたビデオ ファイルをフラッシュに変換しています。exec 関数は次のようになります。

exec("ffmpeg -i " . WWW_ROOT . "files" . DS . "videos" . DS . $id . $ext . " -ar 22050 -r 32 -f flv -s 640x480 " . WWW_ROOT . "files" . DS . "videos" . DS . $id . ".flv");

// if I echo the string it returns:
// ffmpeg -i /home/vceroot/public_html/example.com/test/intraweb/app/webroot/files/videos/516c1203-0484-417a-b047-5488c40293e9.mpg -ar 22050 -r 32 -f flv -s 640x480 /home/vceroot/public_html/example.com/test/intraweb/app/webroot/files/videos/516c1203-0484-417a-b047-5488c40293e9.flv
// the locations are correct

ただし、ビデオは変換されません。

ファイルをアップロードした後、インデックス アクションに戻ります。アップロードしたファイルはありますが、変換されたファイルはありません。

フォルダーに対する私のアクセス許可は 755 です。フォルダーの所有者は apache です。他に何をすべきかわかりません。誰でも私を助けることができますか?

アップデート

そのため、実行クエリを少し変更して、出力をエコーし​​ました。

exec("ffmpeg -i " . WWW_ROOT . "files" . DS . "videos" . DS . $id . $ext . " -ar 22050 -r 32 -f flv -s 640x480 " . WWW_ROOT . "files" . DS . "videos" . DS . $id . ".flv 2>&1", $output, $return);
die(print_r($output));

これにより、次のエラーが返されました。

Array ( [0] => sh: ffmpeg: command not found ) 1

だから私はこれを少し変更しました:

exec("/usr/local/bin/ffmpeg -i " . WWW_ROOT . "files" . DS . "videos" . DS . $id . $ext . " -ar 22050 -r 32 -f flv -s 640x480 " . WWW_ROOT . "files" . DS . "videos" . DS . $id . ".flv 2>&1", $output, $return);
die(print_r($output));

そして今、それは戻ります:

Array ( [0] => /usr/local/bin/ffmpeg: error while loading shared libraries: libavdevice.so.55: cannot open shared object file: No such file or directory ) 1

ここからどこへ行けばいいですか?

4

1 に答える 1