Exec命令不起作用


Exec command do not work?

试图使用php和ffmpeg转换我的视频,但下面的代码没有给我任何结果或输出文件?你知道我为什么做错了什么吗?我应该有test.webm文件作为回报,但没有:-(

<?php
 exec("ffmpeg -i test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480  test.webm");
?>

钉住exec()问题:

我建议你检查一下exec()回馈的内容:

echo exec(...);

当然,ffmpeg可能根本不在您的PATH中。在这种情况下,exec()将清楚地说明这一点,并且您可能需要提供到ffmpeg的绝对路径,即:

Linux:

exec("/path/to/ffmpeg ...");

Windows:

exec("c:''path''to''ffmpeg ...");

后台任务:

另一个问题是ffmpeg可能会运行很长时间,这可能会导致超时。为了避免这个问题,您可以在后台执行ffmpeg,方法是在命令末尾添加&,或者,对于Windows,在实际命令前面添加cmd /C

Linux:

exec("ffmpeg -i test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480 test.webm &");

Windows:

exec("cmd /C ffmpeg -i test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480 test.webm");

在这种情况下,exec()将立即返回,使ffmpeg()在后台运行。ffmpeg()进程一旦执行完毕就会终止。当然,如果您想通知用户转换已经完成,并且转换后的文件可以下载,那么您需要实现某种监控机制。