exec命令不起作用?

时间:2012-03-26 12:32:50

标签: php exec

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

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

1 个答案:

答案 0 :(得分:2)

解决exec()问题:

我建议您查看exec()回馈的内容:

echo exec(...);

当然,可能会发生ffmpeg根本不在您的PATH中。在这种情况下,exec()将明确说明这一点,您可能需要提供ffmpeg的绝对路径,即:

Linux的:

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

视窗:

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 &");

视窗:

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

在这种情况下,exec()会立即返回,让ffmpeg()在后​​台运行。 ffmpeg()进程一执行就会终止。但是可以肯定的是,如果要通知用户转换已完成且转换后的文件可供下载,则需要实现某种监控机制。