Erstelle alle XX Sekunden ein Bild des Videos

Erstelle alle XX Sekunden ein Bild des Videos

Bildschirmfoto:Filmstreifen

Ich habe es versuchtffmpeg -i video.mkv -vf fps=1 out%d.png

Aber es werden Bilder einzeln generiert. Ich brauche alle Miniaturansichten in einem Bild. Wie im Screenshot oben.

Antwort1

Bildbeschreibung hier eingeben

ffmpeg -i input -filter_complex \
"select='not(mod(n,30))',scale=120:-1,tile=layout=3x2" \
-vframes 1 -q:v 2 output.jpg
  • wählenein Frame alle 30 Sekunden
  • Skalajeden Rahmen auf eine kleinere Größe (alternativ können Sie nach dem Kacheln skalieren)
  • FlieseJeder Frame wird zu einem Bild. Die Standardrastergröße beträgt 6 x 5, Sie müssen sie also möglicherweise anpassen, je layoutnachdem, wie viele Bilder Sie anzeigen möchten.

Der Vorgang kann je nach Dauer und Format Ihrer Eingabe einige Zeit in Anspruch nehmen.

Antwort2

Sie können etwas wie verwenden

ffmpeg -i video.mkv -filter:v "select=not(mod(n\,10)),setpts=N/((25)*TB)" -qscale:v 2 frame%03d.jpg
  • die selectSteuerung, welche Frames Sie erfassen (in diesem Fall eines von zehn)
  • die setpsBildfrequenz wird gesteuert und hängt von der Quelle ab - 25für PAL- oder 30000/1001NTSC-Video
  • qscalesteuert die Qualität (Quantisierungsskala) der Ausgabebilder von 2 (am besten) bis 31 (am schlechtesten)

habe gerade deine Bearbeitung oben bemerkt, wenn sie dir die Frames liefert, die du verwenden möchtest, sollte das als Ausgangspunkt gut sein

Sie müssen dann die Bilder mit einem Tool wieBildMagick

montage -background "transparent" -depth 8 -type TrueColorMatte frame??.jpg \
    -geometry 50x50 -tile 10x10 -matte -transparent "transparent" \
    -type TrueColorMatte -depth 8 allframes.jpg

verwandte Informationen