2012-01-22 11 views
9

Tengo ffmpeg haciendo una conversión de video en un archivo PHP y funciona como debería. El problema es que toma hasta un minuto para que termine. Pensé que podría ser fácil de hacer, pero sólo puedo conseguir que funcione en segundo plano cuando se utiliza solo un comando (por ejemplo, la conversión de un solo paso sin mp4box) como estoCómo hacer que el ejecutable de shell se ejecute en segundo plano mientras php continúa

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

El problema es que necesito utilizar tres diferentes comandos para hacer una conversión adecuada sin embargo. Hasta ahora mis comando sería similar a esto en el archivo PHP y funciona, pero con un retraso enorme:

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"); 

Como puedo hacer funcionar el ejecutivo de Shell en segundo plano mientras continúa PHP?

Respuesta

24

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

Adición > /dev/null 2>/dev/null & eliminará la salida y se ejecuta el comando en otro proceso (el & crea el nuevo proceso, el > y 2> redirige la salida normal y error)

+1

Gracias por eso, este publicación también ayudó con una solución al problema http://stackoverflow.com/questions/6402658/php-shell-exec-multiple-commands-at-once-in-background. Parece que necesitaba conectar los tres comandos usando && y luego envolver todo entre corchetes antes de redirigir la salida. –

+0

+1 para una explicación de lo que hace cada parte de la solución, no se ve en respuestas similares a preguntas similares. – AntonChanning

Cuestiones relacionadas