Mam ffmpeg
konwersję wideo w pliku PHP i działa tak, jak powinna. Problem polega na tym, że kończy się to na minutę. Pomyślałem, że może to być łatwe do zrobienia, ale mogę tylko to, aby pracować w tle, gdy używam tylko jedno polecenie (np pojedynczy konwersji przejść bez mp4box) jak toJak uruchomić powłokę exec w tle, gdy php kontynuuje
exec("nohup " . $ffmpegPath . " -i " . $srcFile . " -f mp4 -vcodec libx264 -crf 27 -s " . $srcWidth . "x" . $srcHeight . " -an -r 20 " . $destFile . ".mp4 > /dev/null 2>&1 &");
Problem polega na tym, że trzeba użyć trzech różne polecenia, aby wykonać odpowiednią konwersję. Do tej pory moje polecenia wyglądać w pliku PHP i to działa, ale z ogromnym opóźnieniem:
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");
Jak mogę dokonać bieg exec powłoki w tle podczas PHP trwa?
Dzięki za to, to post pomógł także w rozwiązaniu problemu http://stackoverflow.com/questions/6402658/php-shell-exec-multiple-commands-at-once-in-background. Wygląda na to, że potrzebowałem połączyć wszystkie trzy komendy za pomocą &&, a następnie zawinąć całą rzecz w nawiasach przed przekierowaniem wyjścia. –
+1 dla wyjaśnienia, co każda część rozwiązania ma, nie widziałem podobnych odpowiedzi na podobne pytania. – AntonChanning