
An die Thumbnails stelle ich folgende Anforderungen:
- Szenenwechsel sollte mindestens 6% anders sein als der letzte
select=gt(scene\,0.06)
- Das Seitenverhältnis bleibt bei 1280 Pixel Breite erhalten
scale='min(1280\, iw):-1'
- mindestens 1 Sekunde zwischen jedem Miniaturbild
-r 1
- Dateinamen repräsentieren den Zeitversatz des Miniaturbilds
-vsync 0 -frame_pts 1
Dies wird derzeit wie folgt in einen Befehl eingespeist:
ffmpeg -copyts -i Datei.mp4 -vf "select=gt(Szene\,0.06),scale='min(1280\, iw):-1'" -r 1 -vsync 0 -frame_pts 1 Snapshot.1280.%04d.png -f null
Allerdings erhalte ich Fehler in der Ausgabe:
Die Verwendung von -vsync 0 und -r kann zu ungültigen Ausgabedateien führen
[image2 @ 0x7f804500a000] Die Anwendung hat dem Multiplexer im Stream 0 ungültige, nicht monoton ansteigende DTS bereitgestellt: 463 >= 463
Muss ich mir im Befehl darüber Gedanken machen oder sollte ich sie ignorieren?
Antwort1
Wenn Sie mindestens 1 Sekunde zwischen den Schnappschüssen benötigen, sollten Sie den Auswahlausdruck entsprechend ändern. -r
Dieser Befehl hat lediglich Auswirkungen auf den Dateinamen, der aufgrund von frame_pts gebildet wird. (Sie können die Warnung „ungültige Dateien“ ignorieren; sie ist für ein anderes Szenario gedacht.)
ffmpeg -copyts -i file.mp4 -vf "select=eq(n\,0)+gt(scene\,0.06)*gte(t-prev_selected_t\,1),scale='min(1280\, iw):-1'" -r 1 -vsync 0 -frame_pts 1 snapshot.1280.%04d.png