PHP ffmpeg exec returns null

纵饮孤独 提交于 2020-01-13 11:05:15

问题


I'm trying to run ffmpeg through a PHP exec call, I've been debugging for a while and looked at lot of responses on here, but still not found any answers...

My simplified call is:

$cmd = 'ffmpeg 2>&1';

exec(escapeshellcmd($cmd), $stdout, $stderr);

var_dump($stderr);
var_dump($stdout);
var_dump($cmd);
exit;

My output is $stderr = int(1) and $stdout = array(0) { }

Also I tried shell_exec($cmd) which returns NULL.

cmd.exe has permissions set for the IUSR account - e.g. I can run $cmd = 'dir' and see a directory listing output.

PHP is not running in safe mode.

The ffmpeg.exe is in the same directory as my php file, but I have the same response giving an absolute path to the ffmpeg.exe file in $cmd.

ffmpeg is executing fine from the command line.

I'm running Windows XP, IIS and PHP 5.3.

EDIT:

If I run 'ffmpeg -h' I get the help commands, which must indicated that ffmpeg is recognised

I've increased the PHP memory limit to 1024 - no luck.


回答1:


I've now got this working - I think there may have been several issues:

It turns out that $cmd = 'ffmpeg' returns null, so it's not a good test!

Also running escape shell command on '2>&1' echoes 2^>^&1" - I think this was my original problem.

I've now managed to rea test file using: 'ffmpeg -i SAMPLE.AVI 2>&1'.

Working code:

$cmd = 'ffmpeg -i SAMPLE.AVI 2>&1';

exec($cmd, $output, $value);

var_dump($output);
var_dump($value);
var_dump($cmd);
exit;

As noted above ffmpeg is a bit of a memory hog, so it's worth checking memory too.



来源:https://stackoverflow.com/questions/9770173/php-ffmpeg-exec-returns-null

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!