Opened 5 years ago

Closed 5 years ago

#8555 closed defect (duplicate)

Animated GIF to Video with filters drops the last frame duration

Reported by: Steve Kamerman Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

http://assets.eleven45.net/testing/ffmpeg-bug/5-sec-last-frame.gif

Summary of the bug:
When converting an animated GIF to video (I'm using h264 yuv420p) with a filter, the duration of the last frame is lost.

How to reproduce:
Consider this animated GIF: http://assets.eleven45.net/testing/ffmpeg-bug/5-sec-last-frame.gif (also attached)
It has 6 frames. The first 5 are 0.2s and the last one is 5s.

Without filters, the output video has the expected duration (5x0.2s + 5s = 6s):

$ ffmpeg -f gif -i 5-sec-last-frame.gif -pix_fmt yuv420p -c:v libx264 -report out-without-filter.mp4
$ ffprobe out-without-filter.mp4 2>&1 | grep Duration
Duration: 00:00:06.00, start: 0.000000, bitrate: 26 kb/s

With filters, the output video has the wrong duration (1.2s):

$ ffmpeg -f gif -i 5-sec-last-frame.gif -pix_fmt yuv420p -c:v libx264 -vf scale=300:300 -report out-with-filter.mp4
$ ffprobe out-with-filter.mp4
Duration: 00:00:01.20, start: 0.000000, bitrate: 87 kb/s

The last frame should have a duration of 5s, but it's getting a duration of 0.2s from somewhere.
This is a problem because I am looping these videos as a replacement for animated GIFs.

I have reproduced this bug on many versions of ffmpeg, but all the information in this issue was from the latest snapshot/dev version, as seen in the output.

Input image debug info:

$ ffmpeg -v 9 -loglevel 99 -i 5-sec-last-frame.gif
ffmpeg version N-96852-g3e9793c Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 6.4.0 (Alpine 6.4.0)
  configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-postproc --enable-small --enable-version3 --enable-libbluray --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib --extra-libs=-ldl --prefix=/opt/ffmpeg
  libavutil      56. 42.100 / 56. 42.100
  libavcodec     58. 73.102 / 58. 73.102
  libavformat    58. 39.101 / 58. 39.101
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 77.100 /  7. 77.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.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 url with argument '5-sec-last-frame.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 url 5-sec-last-frame.gif.
Successfully parsed a group of options.
Opening an input file: 5-sec-last-frame.gif.
[NULL @ 0x56392854b5c0] Opening '5-sec-last-frame.gif' for reading
[file @ 0x56392854be00] Setting default whitelist 'file,crypto,data'
Probing gif score:100 size:2048
Probing mp3 score:1 size:2048
Probing gif_pipe score:99 size:2048
[gif @ 0x56392854b5c0] Format gif probed with size=2048 and score=100
[gif @ 0x56392854b5c0] Before avformat_find_stream_info() pos: 0 bytes read:8910 seeks:0 nb_streams:1
[gif @ 0x56392854b5c0] rfps: 4.583333 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 4.666667 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 4.750000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 4.833333 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 4.916667 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 5.000000 0.000000
[gif @ 0x56392854b5c0] rfps: 5.083333 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 5.166667 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 5.250000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 5.333333 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 5.416667 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 9.583333 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 9.666667 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 9.750000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 9.833333 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 9.916667 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 10.000000 0.000000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 10.083333 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 10.166667 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 10.250000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 10.333333 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 10.416667 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 10.500000 0.020000
[gif @ 0x56392854b5c0] rfps: 14.583333 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 14.666667 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 14.750000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 14.833333 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 14.916667 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 15.000000 0.000000
[gif @ 0x56392854b5c0] rfps: 15.083333 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 15.166667 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 15.250000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 15.333333 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 15.416667 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 19.583333 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 19.666667 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 19.750000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 19.833333 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 19.916667 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 20.000000 0.000000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 20.083333 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 20.166667 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 20.250000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 20.333333 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 20.416667 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 20.500000 0.020000
[gif @ 0x56392854b5c0] rfps: 24.583333 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 24.666667 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 24.750000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 24.833333 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 24.916667 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 25.000000 0.000000
[gif @ 0x56392854b5c0] rfps: 25.083333 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 25.166667 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 25.250000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 25.333333 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 25.416667 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 25.500000 0.020000
[gif @ 0x56392854b5c0] rfps: 29.583333 0.013889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 29.666667 0.008889
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 29.750000 0.005000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 29.833333 0.002222
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 29.916667 0.000556
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 30.000000 0.000000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 35.000000 0.000000
[gif @ 0x56392854b5c0] rfps: 40.000000 0.000000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 45.000000 0.000000
[gif @ 0x56392854b5c0] rfps: 50.000000 0.000000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 55.000000 0.000000
[gif @ 0x56392854b5c0] rfps: 60.000000 0.000000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 80.000000 0.000000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 120.000000 0.000000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 240.000000 0.000000
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 29.970030 0.000072
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 59.940060 0.000287
    Last message repeated 1 times
[gif @ 0x56392854b5c0] rfps: 14.985015 0.000018
    Last message repeated 1 times
[gif @ 0x56392854b5c0] stream 0: start_time: 0.000 duration: 6.000
[gif @ 0x56392854b5c0] format: start_time: 0.000 duration: 6.000 (estimate from stream) bitrate=11 kb/s
[gif @ 0x56392854b5c0] After avformat_find_stream_info() pos: 8910 bytes read:8910 seeks:0 frames:6
Input #0, gif, from '5-sec-last-frame.gif':
  Duration: 00:00:06.00, start: 0.000000, bitrate: 11 kb/s
    Stream #0:0, 6, 1/100: Video: gif, 1 reference frame, bgra, 300x300, 0/1, 0.71 fps, 5 tbr, 100 tbn, 100 tbc
Successfully opened the file.
At least one output file must be specified
[AVIOContext @ 0x5639285540c0] Statistics: 8910 bytes read, 0 seeks

I created the input file as a clean test image using Photoshop 2020, which is attached.

I've also attached the full report from both scenarios (with and without filters) and a diff.

Attachments (5)

5-sec-last-frame.gif (8.7 KB ) - added by Steve Kamerman 5 years ago.
Input file
5-sec-last-frame.psd (190.9 KB ) - added by Steve Kamerman 5 years ago.
Input source PSD
report-without-filter.log (19.0 KB ) - added by Steve Kamerman 5 years ago.
Report without filters (successful)
report-with-filter.log (16.5 KB ) - added by Steve Kamerman 5 years ago.
Report with filters (bad duration)
report-diff.txt (9.3 KB ) - added by Steve Kamerman 5 years ago.
Report diff with file hash removed for comparison

Download all attachments as: .zip

Change History (6)

by Steve Kamerman, 5 years ago

Attachment: 5-sec-last-frame.gif added

Input file

by Steve Kamerman, 5 years ago

Attachment: 5-sec-last-frame.psd added

Input source PSD

by Steve Kamerman, 5 years ago

Attachment: report-without-filter.log added

Report without filters (successful)

by Steve Kamerman, 5 years ago

Attachment: report-with-filter.log added

Report with filters (bad duration)

by Steve Kamerman, 5 years ago

Attachment: report-diff.txt added

Report diff with file hash removed for comparison

comment:1 by Carl Eugen Hoyos, 5 years ago

Keywords: animated-gif gif mp4 removed
Resolution: duplicate
Status: newclosed

Duplicate of ticket #6294.

Note: See TracTickets for help on using tickets.