10

I have ffmpeg doing a video conversion in a PHP file and it works as it should. The problem is it takes up to a minute for this to finish. I thought it might be easy to do but I can only get it to work in the background when I use just one command (eg single pass conversion without mp4box) like this

exec("nohup " . $ffmpegPath . " -i " . $srcFile . " -f mp4 -vcodec libx264 -crf 27 -s " . $srcWidth . "x" . $srcHeight . " -an -r 20 " . $destFile . ".mp4 > /dev/null 2>&1 &");

The problem is I need to use three different commands to do a proper conversion though. So far my commands look like this in the PHP file and it works, but with a massive delay:

exec($ffmpegPath . " -y -i " . $srcFile . " -f mp4 -pass 1 -passlogfile " . $video_pass_log . " -vcodec libx264 -vpre ipod640 -b:v 2M -bt 4M -an " . $destFile . ".mp4");
exec($ffmpegPath . " -y -i " . $srcFile . " -f mp4 -pass 2 -passlogfile " . $video_pass_log . " -vcodec libx264 -vpre ipod640 -b:v 2M -bt 4M -acodec libfaac -ac 2 -ar 44100 -ab 96k " . $destFile . ".mp4");
exec($mp4boxpath . " -tmp /tmp -hint " . $destFile . ".mp4");

How can I make the shell exec run in background while PHP continues?

Eric Leschinski
  • 123,728
  • 82
  • 382
  • 321
Jizbo Jonez
  • 1,160
  • 8
  • 22
  • 39

1 Answers1

26

See Is there a way to use shell_exec without waiting for the command to complete?

Adding > /dev/null 2>/dev/null & will remove the output and runs the command in another process (the & creates the new process, the > and 2> redirects the normal and error output)

Community
  • 1
  • 1
Jeroen
  • 811
  • 1
  • 8
  • 16
  • 1
    Thanks for that, this post also helped with a solution to the problem http://stackoverflow.com/questions/6402658/php-shell-exec-multiple-commands-at-once-in-background. It seems I needed to connect all three commands using && and then wrap the whole thing in brackets before redirecting the output. – Jizbo Jonez Jan 22 '12 at 17:16
  • +1 for explanation of what each part of solution does, not seen on similar answers to similar questions. – AntonChanning May 30 '13 at 14:30