尝试使用php和ffmpeg转换我的视频,但是下面的代码不会给我任何结果或输出文件?你知道为什么我做错了吗?我应该有test.webm文件作为回报,但没有它: - (
<?php
exec("ffmpeg -i test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480 test.webm");
?>
答案 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()
进程一执行就会终止。但是可以肯定的是,如果要通知用户转换已完成且转换后的文件可供下载,则需要实现某种监控机制。