exec功能无法按预期工作

时间:2013-04-15 14:29:57

标签: php ffmpeg exec

我正在运行一个来自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

我从哪里开始?

1 个答案:

答案 0 :(得分:0)

所以我用谷歌搜索了我的第二个错误并通过将libavdevice.so.55的位置添加到/etc/ld.so.conf文件并在此之后运行ldconfig来修复它。

现在有效。