2012-03-26 131 views
0

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

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

可以尝试使用绝对路径(命令和输出)..和你是如何期待“有test.webm文件中返回” ???? – ManseUK 2012-03-26 12:34:32

+0

在PATH中是ffmpeg吗?在调用之后,将两个变量作为参数添加到'exec'和'var_dump()'它们。 – AndreKR 2012-03-26 12:35:27

+0

'exec()'返回一些东西吗?请发布'echo exec()'的结果。 – 2012-03-26 12:37:04

回答

2

钉下的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()在后台运行。进程一旦完成,它将立即终止。但是,当然,如果您想通知用户转换完成并且可以下载转换后的文件,则需要实施某种监控机制。

+0

还是不做antyhing,甚至一度使用echo打印: – user974435 2012-03-26 12:49:11

+0

user974435 2012-03-26 12:49:39

+0

请试试这个:<?php exec(“ffmpeg -i C:\ \ inetpub \ wwwroot \\ test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480 C:\\ inetpub \\ wwwroot \\ test.webm“);?>'。在Windows上使用双斜线! – 2012-03-26 12:54:28