animiertes GIF auf Linux-Server in Video umwandeln und dabei die Framerate beibehalten

wie konvertiere ich ein animiertes GIF programmgesteuert in ein Video (z. B. h264 @ mp4) auf einem Linux-Server?

Ich benötige dies, um benutzergenerierte Inhalte zu verarbeiten, die in mehreren definierten Videoformaten ausgegeben werden sollen. Daher ist es möglich, dass Benutzer animierte GIF-Dateien verarbeiten möchten. Ich habe bereits eine Reihe von PHP-Skripten, mit denen ich Videodateien in bestimmte Formate (wie vpx @ webm und h264 @ mp4, skaliert auf bestimmte Auflösungen) mit avconv umwandeln kann. Dafür benötige ich jedoch eine Videoeingab

Die üblichen Wege scheinen zu sein, die Frames des Gifs zu extrahieren und dann zu codieren, wie

convert file.gif file%03d.png 
avconv -i file%03d.png file.mp4

Aber dies verwirft die Framerate, die durch die Pauseninformationen in der GIF-Datei bestimmt wird. Es ist möglich, eine Framerate für avconv mit -r zu definieren, aber

dies beachtet nicht die Pause zwischen den Bildern, da sie unterschiedlich sein können (wie Pause für das erste Bild 100 ms, Pause für das zweite Bild 250 ms, Pause für das dritte Bild 100 ms, ...) Da die Eingabe von Benutzern stammt, kann sie sogar variieren, da einige Gifs 5 fps und andere 30 fps haben.

Mir ist aufgefallen, dass avconv GIFs von selbst verarbeiten kann und daher die richtigen Pausen einhalten kanWie kann man GIF in Mp4 konvertieren?)

avconv -i file.gif -r 30 file.mp4

avconv nimmt nur das erste Bild des GIF auf, während es die Datei mindestens als Video erkennt:

Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
  Stream #0.0: Video: gif, pal8, 640x480, 25 tbn

(Beispiel gif 'file.gif' hat 15 Frames mit jeweils 100ms Pause => 1,5s Dauer, Looping)

Was vermisse ich? Was läuft schief? Gibt es wahrscheinlich bessere Tools für diesen Anwendungsfall?Was sind große Websites wie z. 9Gag verwenden, um hochgeladene Gifs in ein Video zu transkodieren?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage