执行命令不起作用?
试图转换我的视频使用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()
会清楚地说明这一点,你可能需要提供绝对路径,即:
的Linux:
exec("/path/to/ffmpeg ...");
的Windows:
exec("c:\\path\\to\\ffmpeg ...");
后台任务:
其他值得关注的是ffmpeg
可能会为一个相当长的运行时间,哪一个t导致超时。为了避免这个问题,你可以在后台通过在你的命令的末尾添加&
,或者,对于Windows执行ffmpeg
,在实际的命令前添加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()
在后台运行。进程一旦完成,它将立即终止。但是,当然,如果您想通知用户转换完成并且可以下载转换后的文件,则需要实施某种监控机制。
还是不做antyhing,甚至一度使用echo打印: – user974435 2012-03-26 12:49:11
请试试这个:'。在Windows上使用双斜线! – 2012-03-26 12:54:28
可以尝试使用绝对路径(命令和输出)..和你是如何期待“有test.webm文件中返回” ???? – ManseUK 2012-03-26 12:34:32
在PATH中是ffmpeg吗?在调用之后,将两个变量作为参数添加到'exec'和'var_dump()'它们。 – AndreKR 2012-03-26 12:35:27
'exec()'返回一些东西吗?请发布'echo exec()'的结果。 – 2012-03-26 12:37:04