PHP ffmpeg exec returns null

2019-05-05 14:25发布

问题:

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.



标签: php ffmpeg exec