it-swarm.com.de

ffmpeg teilt avi in ​​Frames mit bekannter Framerate auf

Ich habe dies als Kommentar unter diesem verwandten Thread gepostet. Sie scheinen jedoch unbemerkt geblieben zu sein = (

Ich habe gebraucht

ffmpeg -i myfile.avi -f image2 image-%05d.bmp

myfile.avi in Frames aufteilen, die als .bmp-Dateien gespeichert sind. Es schien zu funktionieren, aber nicht ganz. Bei der Aufnahme meines Videos habe ich mit 1000fps aufgenommen, und das Video erwies sich als 2min29sec lang. Wenn meine Berechnungen korrekt sind, sollte dies für das gesamte Video insgesamt 149.000 Frames betragen. Als ich jedoch rannte

ffmpeg -i myfile.avi -f image2 image-%05d.bmp

Ich habe nur 4472 Dateien erhalten. Wie bekomme ich die ursprünglichen 149k-Frames?

Ich habe auch versucht, die Framerate meines ursprünglichen AVI in 1000fps umzuwandeln

ffmpeg -i myfile.avi -r 1000 otherfile.avi

aber das schien meine Besorgnis nicht zu regeln.

20
Myx
ffmpeg -i myfile.avi -r 1000 -f image2 image-%07d.png

Ich bin nicht sicher, ob die Ausgabe von 150-kb-BMP-Dateien eine gute Idee sein wird. Png ist vielleicht gut genug?

35
Dat Chu

Der erste Teil Ihrer Mathematik ist gut, die 2 Minuten und 29 Sekunden betragen etwa 149 Sekunden. Mit 1000 Bildern pro Sekunde macht das 149000 Bilder. Ihr Ausgabedateiname hat jedoch nur 5 Positionen für die Nummer, bei der 149000 6 Positionen hat. Versuchen Sie "image-% 06d.bmp".

Dann gibt es noch die Festplattengröße: Passen Ihre Bilder auf die Festplatte? Mit bmp verwendet jedes Bild seine eigene Größe. Sie könnten versuchen, JPEG-Bilder zu verwenden, die sich etwa 10-mal besser komprimieren lassen.

Eine andere Idee: Wenn ffmpeg keine (vernünftige) Bildrate findet, sinkt die Rate auf 25 oder 30 Bilder pro Sekunde. Möglicherweise müssen Sie es angeben. Quelle und Ziel finden Sie in der Manpage (man ffmpeg unter Unix):

   To force the frame rate of the input file (valid for raw formats
   only) to 1 fps and the frame rate of the output file to 24 fps:
           ffmpeg -r 1 -i input.m2v -r 24 output.avi

Für was es wert ist: Ich verwende ffmpeg -y -i "video.mpg" -sameq "video.%04d.jpg", um mein Video in Bilder zu teilen. Das -sameq dient dazu, das JPEG-Format in einer angemessenen Qualität zu erzwingen, das -y soll das Überschreiben von Fragen vermeiden. Für dich:

ffmpeg -y -r 1000 -i "myfile.avi" -sameq "image.% 06d.jpg"

11
CBee

Ich denke, es gibt hier ein Missverständnis: Die Ausgabe eines HS-Videosystems hat wahrscheinlich keine Framerate von 1000 Bildern pro Sekunde, aber mit 30 (oder 50/60) Bildern pro Sekunde eher normal. Abgesehen davon, dass die meisten Videoplayer mit dieser Geschwindigkeit überladen werden, wäre es kontraproduktiv, die Sequenz in derselben Geschwindigkeit anzuzeigen, in der sie aufgezeichnet wurde. Grundsätzlich gilt: 1 Sekunde bei 1000 Bildern pro Sekunde entspricht etwa 33 Sekunden bei 30 Bildern pro Sekunde.

Wurde die Dauer der Szene wirklich 2:29 Minuten aufgezeichnet (was zu einem Video von ~ 82 Minuten bei normaler Geschwindigkeit führte) oder dauerte es etwa 4,5 Sekunden (4472 Frames), was bei normaler Wiedergabe 2:29 Minuten ist?

0
Kalliope