[FFmpeg-trac] #4235(ffmpeg:new): Converting GIF to MP4 using FFmpeg produces a video that doesn't follow the GIF frame timings.
FFmpeg
trac at avcodec.org
Thu Jan 8 01:10:26 CET 2015
#4235: Converting GIF to MP4 using FFmpeg produces a video that doesn't follow the
GIF frame timings.
--------------------------------+----------------------------------
Reporter: dvir | Type: defect
Status: new | Priority: normal
Component: ffmpeg | Version: 2.3.5
Keywords: gif | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
--------------------------------+----------------------------------
Summary of the bug:
Converting GIF to MP4 using FFmpeg produces a video that doesn't follow
the GIF frame timings.
I'm using FFmpeg to convert a GIF into an MP4, with the following command:
{{{ffmpeg -f gif -i ~/transparent.gif -c:v libx264 -f mp4
./transparent.mp4}}}
This is the input GIF:
http://media.giphy.com/media/lXiRla43JDySJhTLW/giphy.gif
This is the the output mp4: https://vid.me/aGv6
it seems like FFmpeg is skipping the first frame of the GIF, and skips the
timing for the last frame (the first and last frame are 2000ms long, yet
it doesn't halt at the end like it does in the beginning).
The frame timings are: (produced with ImageMagick -- 'identify -format
'%T|' ~/transparent.gif')
200|5|5|5|5|10|10|10|10|10|10|10|200
This means the first frame should be 2000ms long, and so is the last one.
For the last frame, the timing is messed (doesn't half for 2000ms), and it
seems to skip the first frame, which doesn't show the metal hand. You
could look at the input GIF and see that it is different from the product
MP4.
How to reproduce:
Re-run the command described above on the input GIF linked to above.
Verbose input file information:
{{{
% dvir-mbp1:tmp dvir$ ffmpeg -v 9 -loglevel 99 -i ~/transparent.gif
ffmpeg version 2.3.3 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 25 2014 19:47:15 with Apple LLVM version 5.1
(clang-503.0.40) (based on LLVM 3.4svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.3.3 --enable-shared
--enable-pthreads --enable-gpl --enable-version3 --enable-nonfree
--enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang
--host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-
libmp3lame --enable-libxvid
libavutil 52. 92.100 / 52. 92.100
libavcodec 55. 69.100 / 55. 69.100
libavformat 55. 48.100 / 55. 48.100
libavdevice 55. 13.102 / 55. 13.102
libavfilter 4. 11.100 / 4. 11.100
libavresample 1. 3. 0 / 1. 3. 0
libswscale 2. 6.100 / 2. 6.100
libswresample 0. 19.100 / 0. 19.100
libpostproc 52. 3.100 / 52. 3.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with
argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging
level) with argument '99'.
Reading option '-i' ... matched as input file with argument
'/Users/dvir/transparent.gif'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input file /Users/dvir/transparent.gif.
Successfully parsed a group of options.
Opening an input file: /Users/dvir/transparent.gif.
[gif @ 0x7fa549800000] Format gif probed with size=2048 and score=100
[gif @ 0x7fa549800000] Before avformat_find_stream_info() pos: 0 bytes
read:3233 seeks:0
rfps: 19.583333 0.014962
rfps: 19.666667 0.009576
Last message repeated 1 times
rfps: 19.750000 0.005386
rfps: 19.833333 0.002394
Last message repeated 1 times
rfps: 19.916667 0.000598
Last message repeated 1 times
rfps: 20.000000 0.000000
rfps: 20.083333 0.000598
Last message repeated 1 times
rfps: 20.166667 0.002394
Last message repeated 1 times
rfps: 20.250000 0.005386
rfps: 20.333333 0.009576
Last message repeated 1 times
rfps: 20.416667 0.014962
rfps: 39.583333 0.014962
rfps: 39.666667 0.009576
Last message repeated 1 times
rfps: 39.750000 0.005386
rfps: 39.833333 0.002394
Last message repeated 1 times
rfps: 39.916667 0.000598
Last message repeated 1 times
rfps: 40.000000 0.000000
rfps: 40.083333 0.000598
Last message repeated 1 times
rfps: 40.166667 0.002394
Last message repeated 1 times
rfps: 40.250000 0.005386
rfps: 40.333333 0.009576
Last message repeated 1 times
rfps: 40.416667 0.014962
rfps: 59.583333 0.014962
rfps: 59.666667 0.009576
Last message repeated 1 times
rfps: 59.750000 0.005386
rfps: 59.833333 0.002394
Last message repeated 1 times
rfps: 59.916667 0.000598
Last message repeated 1 times
rfps: 60.000000 0.000000
rfps: 59.940060 0.000310
Last message repeated 1 times
[gif @ 0x7fa549800000] After avformat_find_stream_info() pos: 3233 bytes
read:3233 seeks:0 frames:13
Input #0, gif, from '/Users/dvir/transparent.gif':
Duration: N/A, bitrate: N/A
Stream #0:0, 13, 1/100: Video: gif, bgra, 50x32, 1/100, 3.83 fps, 20
tbr, 100 tbn, 100 tbc
Successfully opened the file.
At least one output file must be specified
[AVIOContext @ 0x7fa548e00140] Statistics: 3233 bytes read, 0 seeks
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4235>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list