2016-04-16 6 views
0

Ich habe den Befehlffmpeg gelten Befehl auf jedem mp4-Datei im Ordner

for file in *.mp4; do ffmpeg -i "${file%.mp4} -vf fps=1/60 img%03d.jpg; done 

Was ich in ffmpeg verwenden möchten alle mp4-Datei in einem Verzeichnis iterieren und führen Sie den Befehl ffmpeg -i myvideo.mp4 -vf fps=1/60 img%03d.jpg auf. Wenn ich jedoch die obige for-Schleife ausführen, erhalte ich den Fehler "Datei war zu diesem Zeitpunkt unerwartet." Wie kann ich das beheben?

Ich sollte auch erwähnen, dass die Dateinamen Leerzeichen und andere Sonderzeichen in ihnen haben.

Antwort

1

Mehrere Probleme:

  • Ein Schlusskurs fehlt.
  • Parameter expansion wird für die Eingabe nicht benötigt, da kein Teil des Eingabe-Namens entfernt werden muss, verwenden Sie einfach eine normale Variable.
  • Die Parametererweiterung wird für die Ausgabe benötigt, da sonst bei jedem Schleifenbefehl die gleichen Ausgabenamen vergeben werden.
  • Die Bilder in ihrem eigenen Verzeichnis ausgeben, wird die Dinge übersichtlicher halten.
  • Ich habe -q:v 3 hinzugefügt, um die Qualität der JPG-Ausgabe zu erhöhen. Ein guter zu testender Bereich ist 2-5, wobei ein niedrigerer Wert eine höhere Qualität und eine größere Dateigröße ist.

Fest Beispiel:

mkdir images 
for file in *.mp4; do ffmpeg -i "$file" -vf fps=1/60 -q:v 3 "images/${file%.mp4}.jpg"; done