我正在从 php 运行一个 shell 函数,以便在上传视频文件后将其转换为 flash。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 查询并回显了输出:
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
我从这里去哪里?