我正在尝试在 Windows 上通过 shell_exec 运行 ffmpeg。我的函数不起作用(它不执行,不输出文件,也不输出 shell_exec 的任何结果)
function convertFile($audio, $image)
{
$output = str_replace(".mp3", ".mp4", $audio);
$shellOutput = shell_exec("ffmpeg -loop 1 -r 2 -i \"$image\" -i \"$audio\" -shortest -c:v libx264 -preset medium -tune stillimage -crf 28 -c:a copy $output");
echo $shellOutput;
}
如果这是显而易见的,请原谅。感谢您的帮助!
答案1
确保 Web 服务器用户可以读取和执行ffmpeg
,并且二进制文件位于其 中PATH
。您可以通过直接指定路径来排除故障ffmpeg
,例如/usr/bin/ffmpeg
。
您还可以考虑2>&1
在命令中添加以下内容,以便将 stderr 重定向到 stdout,因为 ffmpeg 将通过 stderr 输出调试消息,否则您将看不到它们。或者,完全禁用输出。有关更多信息,请参见此处:在 PHP 脚本中使用 FFmpeg