PHP的exec()没有执行FFmpeg的命令

时间:2011-08-30 06:17:12

标签: php ffmpeg command exec

我已经在我的服务器上安装了ffmpeg,它可以通过我的终端正常工作。我能够成功地将文件转换为webm格式,所以我确信安装没问题。我也确定我的机器上只安装了一个ffmpeg。

当我尝试通过PHP的exec()通过PHP转换文件时出现问题。当我运行相同的命令时,我在终端中运行,没有任何反应。我环顾了stackoverflow和网络的其他部分以寻求帮助。我试过这个看输出:

exec($cmd, $out, $rv);
echo "output is:\n".implode("\n", $out)."\n exit code:$rv\n";

输出为:“输出为:退出代码:127”

我正在使用的命令采用以下格式:

ffmpeg -i "sample.mov" -vcodec libvpx  -r 30 -b "644k" -acodec libvorbis -ab 128000   -ar "44100" -ac 2 -s "352x198" "sample.webm"

我尝试用FFmpeg的完整路径替换“ffmpeg”,但这不起作用。

为什么脚本没有正确运行命令并转换文件?

谢谢!

2 个答案:

答案 0 :(得分:3)

错误代码127表示找不到可执行文件(ffmpeg)。尝试指定整个路径(您可以在终端中找到which ffmpeg)或比较php脚本和终端中PATH环境变量的值。

答案 1 :(得分:1)

我有来自php的ant目标执行的类似问题。我无法从前几行获得ant命令的整个输出,并且没有执行ant目标。换句话说是部分执行。

使用bellow命令我已经设法运行它,但命令的输出附加到log_file.log。

$commandString = 'you_command_here >> log_file.log 2>&1 &';
$command = exec($commandString);

希望这对你有用。