Ich fand einige Weise zu tun, was ich will, die nicht eine einfache ist. Mit den „show“ Filter ist es möglich, die Position eines Rahmens in Bezug auf die Quelldatei zu erhalten, dh
ffmpeg -i movie.avi -filter:v 'showinfo' output.avi
zum Beispiel würde laufen
[Parsed_showinfo_1 @ 0x7ffaebd01bc0] n: 0 Punkte: 0 Punkte_Zeit: 0 Pos: 630548 Schriftart: yuv420p sar: 1/1 s: 1280x720 i: P iskey: 0 Typ: P Prüfsumme: B4E5E664 plane_checksum: [6B3569DD 72B2AE10 31F8CE68] Mittelwert: [76 111 155] stdev: [ 13.1 3.8 8.7]
Dabei steht "pos: 630548" für die Position des ersten Frames in der Quelldatei. Aufgrund der Informationen, die Position in der Quelldatei zu welchem Rahmen entspricht, könnte man dann tun
ffmpeg -i movie.avi -filter:v "fps=fps=25, showinfo" %05d.png > output.txt 2>&1
, die die Bilder wie zuvor extrahiert, sondern gibt auch die Position der extrahierten Bilder in der Eingabedatei, und aus diesen beiden Informationen kann man die Zuordnung von extrahierten Frames zu Frames in der Eingabedatei zusammenfügen.
Allerdings glaube ich nicht, dass diese Lösung "einfach" (oder hübsch) genannt werden kann.
bearbeiten: Nach dem Vorschlag von @Mulvya, können Sie sich den zusätzlichen Schritt speichern ffmpeg -i movie.avi -filter:v 'showinfo' output.avi
laufen die Position der Rahmen in dem Original-Video zu extrahieren, wenn Sie stattdessen
ffmpeg -i movie.avi -filter:v "showinfo, fps=fps=25, showinfo" %05d.png > output.txt 2>&1
Dies wird ausgeführt die showinfo des ursprünglichen und des gefilterten Videostreams gleichzeitig ausgeben, z (Original-Video-Stream Linien entspricht Parsed_showinfo_0
Ausgang entspricht der gefilterten Strom auf Linien mit Parsed_showinfo_2
beginnend)
[Parsed_showinfo_0 @ 00a38820] n: 0 pts: 0 pts_time:0 pos: 508 fmt:pal8 sar:0/1 s:320x200 i:P iskey:1 type:I checksum:CF3AE73F plane_checksum:[CF3AE73F] mean:[117] stdev:[48.3]
[Parsed_showinfo_0 @ 00a38820] n: 1 pts: 1 pts_time:0.0285362 pos: 26710 fmt:pal8 sar:0/1 s:320x200 i:P iskey:0 type:P checksum:CF3AE73F plane_checksum:[CF3AE73F] mean:[117] stdev:[48.3]
[Parsed_showinfo_2 @ 00a38ca0] n: 0 pts: 0 pts_time:0 pos: 508 fmt:pal8 sar:0/1 s:320x200 i:P iskey:1 type:I checksum:CF3AE73F plane_checksum:[CF3AE73F] mean:[117] stdev:[48.3]
[Parsed_showinfo_0 @ 00a38820] n: 2 pts: 2 pts_time:0.0570725 pos: 31680 fmt:pal8 sar:0/1 s:320x200 i:P iskey:0 type:P checksum:512EEB5E plane_checksum:[512EEB5E] mean:[117] stdev:[48.2]
Ja, aber ich mag die Rahmennummern dieser Frames, die extrahiert werden, wenn ich die „-r angeben 25 " Möglichkeit. – BlenderBender