Warum kann ich die Bildrate nicht richtig einstellen, wenn ich mit avconv eine Bildfolge in ein GIF-Format konvertiere?

1079
Nikhil

Ich muss eine Reihe von Bildern in GIFs umwandeln.

Ich habe drei breite Wege gefunden, dies zu tun. Eine mit ImageMagick, eine mit Gifsicle und eine mit avconv.

Ich kann Imagemagick nicht verwenden, da es viel langsamer ist als alle anderen Methoden. Ich kann gifsicle nicht verwenden, da es nicht mit "png" -Dateien funktioniert. Ich könnte die PNGs mit ImageMagicks Befehl 'mogrify' in Gifs umwandeln und sie dann zu einem einzigen Gif zusammen mit Gifsicle zusammenführen. Dies würde jedoch dazu führen, dass Mogrify etwas langsamer wird, was in meinem Fall ein Deal ist.

Ich habe herausgefunden, was ich mit avconv machen kann, aber aus irgendeinem Grund hat das resultierende GIF die doppelte Framerate.

Dies ist der Befehl, den ich verwende:

avconv -i frame%15d.png -s qvga -vf format=rgb8,format=rgb24 -pix_fmt rgb24 -r 10 output.gif 

Und die Ausgabe damit:

avconv version 9.13-6:9.13-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers built on May 9 2014 13:34:03 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) Input #0, image2, from 'frame%15d.png': Duration: 00:00:12.04, start: 0.000000, bitrate: N/A Stream #0.0: Video: png, rgb24, 320x240, 25 fps, 25 tbr, 25 tbn File 'output.gif' already exists. Overwrite ? [y/N] y Output #0, gif, to 'output.gif': Metadata: encoder : Lavf54.20.3 Stream #0.0: Video: rawvideo, rgb24, 320x240, q=2-31, 200 kb/s, 90k tbn, 10 tbc Stream mapping: Stream #0:0 -> #0:0 (png -> rawvideo) Press ctrl-c to stop encoding frame= 121 fps= 0 q=0.0 Lsize= 10406kB time=12.10 bitrate=7044.8kbits/s  video:27225kB audio:0kB global headers:0kB muxing overhead -61.779245% 

Es gibt 301 Bilder, die 30 Sekunden dauern sollen, weshalb ich eine Framerate von 10 erzwinge. Das scheint das zu ignorieren.

Wenn ich die Eingabe-Framerate auch mit "-r 10" erzwinge, bleibt das resultierende Gif 60 Sekunden lang bei der Hälfte meiner gewünschten Framerate.

Befehl mit erzwungenem FPS in Eingabe und Ausgabe:

avconv -r 10 -i frame%15d.png -s qvga -vf format=rgb8,format=rgb24 -pix_fmt rgb24 -r 10 output2.gif 

Und die Ausgabe:

avconv version 9.13-6:9.13-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers built on May 9 2014 13:34:03 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) Input #0, image2, from 'frame%15d.png': Duration: 00:00:12.04, start: 0.000000, bitrate: N/A Stream #0.0: Video: png, rgb24, 320x240, 25 fps, 25 tbr, 25 tbn Output #0, gif, to 'output2.gif': Metadata: encoder : Lavf54.20.3 Stream #0.0: Video: rawvideo, rgb24, 320x240, q=2-31, 200 kb/s, 90k tbn, 10 tbc Stream mapping: Stream #0:0 -> #0:0 (png -> rawvideo) Press ctrl-c to stop encoding frame= 301 fps=270 q=0.0 Lsize= 25884kB time=30.10 bitrate=7044.5kbits/s  video:67725kB audio:0kB global headers:0kB muxing overhead -61.780963% 

Ich habe keine Ahnung, was ich gerade falsch mache und würde mich über die Beiträge von jemandem freuen.

Wenn jemand einen schnellen Weg kennt, einen Stapel PNG-Bilder ohne ImageMagick in einzelne Gifs umzuwandeln, kann ich sie mit Gifsicle zusammenführen.

1
Bitte geben Sie die vollständige, ungeschnittene Befehlszeilenausgabe an slhck vor 9 Jahren 1
Das tut mir leid. Fügte es jetzt hinzu. Nikhil vor 9 Jahren 0

0 Antworten auf die Frage