Batch Konvertieren Sie MP4 mit ffmpeg

Sep 25 2020

Ich habe eine ganze Reihe von Textdateien, JPG und MP4 in einem Ordner. Ich möchte, dass die JPG- und Textdateien in Ruhe gelassen werden. Ich möchte alle mp4 mit dem -crfArgument von ffmpeg mit dem Wert von komprimieren 23, um Speicherplatz zu sparen. Dateien sollten an Ort und Stelle überschrieben werden.

Ich benutzen @llogan Antwort hier , und ersetzt .avimit , .mp4aber das funktioniert nicht.

for f in *.mp4; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium \ -c:a aac -b:a 128k -movflags +faststart -vf scale=-2:720,format=yuv420p \ "encoded/${f%.avi}.mp4"; done

Was wäre die forSchleife, um mp4 in eine niedrigere Qualität ( -crf 23) zu konvertieren , ohne andere Dateien im selben Arbeitsverzeichnis zu löschen und / oder zu ändern? Ich möchte die anderen Flags auch nicht wirklich, weil ich nicht die Größe ändern, YouTube hochladen, die Codierungsgeschwindigkeit ändern usw.

Antworten

2 llogan Sep 25 2020 at 00:58

Sie mussten nur "encoded/${f%.avi}.mp4"zu "encoded/${f%.mp4}.mp4"oder wechseln "encoded/${f%.*}.mp4":

mkdir encoded
for f in *.mp4; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a copy -movflags +faststart "encoded/${f%.*}.mp4"; done

Ich habe alle anderen Sachen entfernt, die du nicht brauchst. Ich habe angenommen, dass Ihr Eingangsaudio bereits AAC ist, also habe ich -c:a copyden Stream-Kopiermodus aktiviert, der dem Kopieren und Einfügen ähnelt.

-crf 23 -preset mediumsind die Standardeinstellung, damit Sie diese entfernen können, wenn Sie mit diesen Werten einverstanden sind. Andernfalls sieht FFmpeg Wiki: H.264 zur Führung auf , was -crfund -presetWert zu verwenden.