Ho ffmpeg
facendo una conversione video in un file PHP e funziona come dovrebbe. Il problema è che ci vuole un minuto perché questo finisca. Ho pensato che potrebbe essere facile da fare, ma posso solo farlo funzionare in background quando uso un solo comando (ad esempio, la conversione a singolo passaggio senza MP4Box) come questoCome eseguire shell exec in background mentre php continua
exec("nohup " . $ffmpegPath . " -i " . $srcFile . " -f mp4 -vcodec libx264 -crf 27 -s " . $srcWidth . "x" . $srcHeight . " -an -r 20 " . $destFile . ".mp4 > /dev/null 2>&1 &");
Il problema è che ho bisogno di usare tre diversi comandi per fare una corretta conversione però. Finora i miei comandi simile a questa nel file PHP e funziona, ma con un ritardo 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");
Come posso fare la corsa exec della shell in background mentre PHP continua?
Grazie per quello, questo post ha anche aiutato con una soluzione al problema http://stackoverflow.com/questions/6402658/php-shell-exec-multiple-commands-at-once-in-background. Sembra che avessi bisogno di connettere tutti e tre i comandi usando && e poi avvolgere il tutto tra parentesi prima di reindirizzare l'output. –
+1 per la spiegazione di ciò che fa ogni parte della soluzione, non vista su risposte simili a domande simili. – AntonChanning