试图使用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()
进程一旦执行完毕就会终止。当然,如果您想通知用户转换已经完成,并且转换后的文件可以下载,那么您需要实现某种监控机制。