Ich habe es satt, 8 Befehle gleichzeitig auszuführen, um die CPU voll auszunutzen und die Videokonvertierungen zu beschleunigen.
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/a.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/b.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/c.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/d.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/e.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/f.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/g.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/h.mp4 > /dev/null 2>&1 &
2 bis 3 von ihnen werden gestoppt. Warum passiert das? Ist das eine FFmpeg-Einschränkung? Ich habe dies auf 16-Kern- und 4-Kern-Maschinen versucht, EC2 c1.xlarge und cc2.8xlarge. Gleiches Verhalten. Ich habe komplizierte und einfache Befehle ausprobiert, trotzdem werden 2 oder 3 gestoppt.
ffmpeg
multi-core
multi-processor
d33pika
quelle
quelle
Antworten:
Bei der Beantwortung der ursprünglichen Frage, warum einige Jobs angehalten werden, ist ffmpeg in der Befehlszeile interaktiv. Es liest ständig Eingaben auf der Kommandozeile. Damit Sie alle im Hintergrund ausführen können, sollten Sie Folgendes ändern:
dazu:
Durch Hinzufügen von
</dev/null
wird ffmpeg angewiesen, nicht nach Eingaben zu suchen, und alle Ihre Jobs sollten im Hintergrund ausgeführt werden.quelle
> /dev/null 2>/dev/null
.Nur ein Gedanke zu Ihrem Befehl: Eine viel einfachere Möglichkeit, die Maschine mit einem einzigen Befehl zu hämmern, besteht darin, alles in einer einzigen Zeile zusammenzufassen:
Möglicherweise möchten Sie (abhängig von Ihrer ffmpeg-Version) ein Flag hinzufügen, um den Server anzuweisen, alle verfügbaren Prozessoren zu verwenden
Als Referenz: http://ffmpeg.org/trac/ffmpeg/wiki/Creating%20multiple%20outputs
quelle