我已经在我的服务器上安装了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”,但这不起作用。
为什么脚本没有正确运行命令并转换文件?
谢谢!
答案 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);
希望这对你有用。