Siehe die ffmpeg-Manpage . Du willst -vframes
:
-vframes
Anzahl
Stellen Sie die Anzahl der aufzuzeichnenden Videoframes ein.
Siehe auch dieses Beispiel, wenn jemand dasselbe tut. Die Originalnachricht -r
weist darauf hin, dass sie mit weniger als einem Argument nicht richtig funktioniert. Stattdessen wird empfohlen, diese Art von Befehlszeile zu verwenden, um ein Bild zu erfassen (wobei X einige Zeit ist, um in der Datei vorwärts zu suchen):
ffmpeg -ss X -i input.movie.file -an -vframes 1 ouput.png
Verwenden Sie dann Shell-Scripting, um das zu wiederholen, und generieren Sie X automatisch basierend auf (a) wie viele Frames Sie aufnehmen möchten und (b) wie lang das Video ist. Da Ihr altes Beispielskript bereits (b) findet, ist (a) die einzige erforderliche Eingabe:
# generate NFRAMES frames in a movie 90 minutes long mins=$(exiftool "$file" | grep "Duration" | awk -F : '' | grep --only-matching '[0-9]*') dir="$file-screenshots" mkdir "$dir" for i in $(seq 1 $NFRAMES); do ffmpeg -ss $(echo "$i * $mins" | bc -l) -i "$file" -an -vframes 1 "$dir/$i.png"; done