[FFmpeg-trac] #6302(ffmpeg:new): gif frame delay dropped from last frame when output to webm
FFmpeg
trac at avcodec.org
Mon Apr 10 17:27:40 EEST 2017
#6302: gif frame delay dropped from last frame when output to webm
-----------------------------------+--------------------------------------
Reporter: okor | Type: defect
Status: new | Priority: important
Component: ffmpeg | Version: git-master
Keywords: gif, webm | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-----------------------------------+--------------------------------------
'''Summary of the bug:'''
When converting a gif to a webm video the delay is not honored on the last
frame. For example, using a gif with two frames - each with a 2 second
delay the output webm video should be 4 seconds in length but the output
is 2 seconds long and only those the second frame for an instant.
Inversely, if no filters and mp4 is used, the output is perfect.
Input: https://cdn0.vox-
cdn.com/uploads/chorus_asset/file/8251197/7GPW_LivingRoom.gif
Output: <attatched>
'''How to reproduce:'''
{{{
ffmpeg -i livingroom.gif livingroom.webm
}}}
'''Log:'''
{{{
$ ffmpeg -v 9 -loglevel 99 -report -i livingroom.gif livingroom.webm
ffmpeg started on 2017-04-10 at 10:14:17
Report written to "ffmpeg-20170410-101417.log"
ffmpeg version N-85306-ge7ec8c1 Copyright (c) 2000-2017 the FFmpeg
developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --enable-gpl --enable-libx264 --enable-libfdk-aac
--enable-libvpx --enable-libmp3lame --enable-nonfree
libavutil 55. 60.100 / 55. 60.100
libavcodec 57. 92.100 / 57. 92.100
libavformat 57. 72.100 / 57. 72.100
libavdevice 57. 7.100 / 57. 7.100
libavfilter 6. 84.100 / 6. 84.100
libswscale 4. 7.100 / 4. 7.100
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 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 '-report' ... matched as option 'report' (generate a
report) with argument '1'.
Reading option '-i' ... matched as input url with argument
'livingroom.gif'.
Reading option 'livingroom.webm' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Applying option report (generate a report) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url livingroom.gif.
Successfully parsed a group of options.
Opening an input file: livingroom.gif.
[file @ 0x7fb8e3c16d80] Setting default whitelist 'file,crypto'
Probing gif score:100 size:2048
Probing mp3 score:1 size:2048
[gif @ 0x7fb8e4014200] Format gif probed with size=2048 and score=100
[gif @ 0x7fb8e4014200] Before avformat_find_stream_info() pos: 0 bytes
read:32768 seeks:0 nb_streams:1
[gif @ 0x7fb8e4014200] stream 0: start_time: -92233720368547760.000
duration: -92233720368547760.000
[gif @ 0x7fb8e4014200] format: start_time: -9223372036854.775 duration:
-9223372036854.775 bitrate=0 kb/s
[gif @ 0x7fb8e4014200] After avformat_find_stream_info() pos: 3318802
bytes read:6652701 seeks:2 frames:2
Input #0, gif, from 'livingroom.gif':
Duration: N/A, bitrate: N/A
Stream #0:0, 2, 1/100: Video: gif, 1 reference frame, bgra, 2432x1556,
0/1, 100 tbr, 100 tbn, 100 tbc
Successfully opened the file.
Parsing a group of options: output url livingroom.webm.
Successfully parsed a group of options.
Opening an output file: livingroom.webm.
[file @ 0x7fb8e3c190c0] Setting default whitelist 'file,crypto'
Successfully opened the file.
Stream mapping:
Stream #0:0 -> #0:0 (gif (native) -> vp9 (libvpx-vp9))
Press [q] to stop, [?] for help
cur_dts is invalid (this is harmless if it occurs once at the start per
stream)
[gif @ 0x7fb8e4025800] code=21 '!'
Last message repeated 1 times
[gif @ 0x7fb8e4025800] code=2c ','
detected 8 logical cores
[graph 0 input from stream 0:0 @ 0x7fb8e3e00300] Setting 'video_size' to
value '2432x1556'
[graph 0 input from stream 0:0 @ 0x7fb8e3e00300] Setting 'pix_fmt' to
value '30'
[graph 0 input from stream 0:0 @ 0x7fb8e3e00300] Setting 'time_base' to
value '1/100'
[graph 0 input from stream 0:0 @ 0x7fb8e3e00300] Setting 'pixel_aspect' to
value '0/1'
[graph 0 input from stream 0:0 @ 0x7fb8e3e00300] Setting 'sws_param' to
value 'flags=2'
[graph 0 input from stream 0:0 @ 0x7fb8e3e00300] Setting 'frame_rate' to
value '100/1'
[graph 0 input from stream 0:0 @ 0x7fb8e3e00300] w:2432 h:1556 pixfmt:bgra
tb:1/100 fr:100/1 sar:0/1 sws_param:flags=2
[format @ 0x7fb8e3e009c0] compat: called with
args=[yuv420p|yuva420p|yuv422p|yuv440p|yuv444p|gbrp]
[format @ 0x7fb8e3e009c0] Setting 'pix_fmts' to value
'yuv420p|yuva420p|yuv422p|yuv440p|yuv444p|gbrp'
[auto_scaler_0 @ 0x7fb8e3e00e80] Setting 'flags' to value 'bicubic'
[auto_scaler_0 @ 0x7fb8e3e00e80] w:iw h:ih flags:'bicubic' interl:0
[format @ 0x7fb8e3e009c0] auto-inserting filter 'auto_scaler_0' between
the filter 'Parsed_null_0' and the filter 'format'
[AVFilterGraph @ 0x7fb8e3d00040] query_formats: 4 queried, 2 merged, 1
already done, 0 delayed
[auto_scaler_0 @ 0x7fb8e3e00e80] picking yuva420p out of 6 ref:bgra
alpha:1
[auto_scaler_0 @ 0x7fb8e3e00e80] w:2432 h:1556 fmt:bgra sar:0/1 -> w:2432
h:1556 fmt:yuva420p sar:0/1 flags:0x4
[libvpx-vp9 @ 0x7fb8e4028000] v1.6.1
[libvpx-vp9 @ 0x7fb8e4028000] --prefix=/usr/local/Cellar/libvpx/1.6.1
--disable-dependency-tracking --enable-pic --disable-unit-tests --disable-
examples
[libvpx-vp9 @ 0x7fb8e4028000] vpx_codec_enc_cfg
[libvpx-vp9 @ 0x7fb8e4028000] generic settings
g_usage: 0
g_threads: 8
g_profile: 0
g_w: 320
g_h: 240
g_bit_depth: 8
g_input_bit_depth: 8
g_timebase: {1/30}
g_error_resilient: 0
g_pass: 0
g_lag_in_frames: 25
[libvpx-vp9 @ 0x7fb8e4028000] rate control settings
rc_dropframe_thresh: 0
rc_resize_allowed: 0
rc_resize_up_thresh: 60
rc_resize_down_thresh: 30
rc_end_usage: 0
rc_twopass_stats_in: 0x0(0)
rc_target_bitrate: 256
[libvpx-vp9 @ 0x7fb8e4028000] quantizer settings
rc_min_quantizer: 0
rc_max_quantizer: 63
[libvpx-vp9 @ 0x7fb8e4028000] bitrate tolerance
rc_undershoot_pct: 25
rc_overshoot_pct: 25
[libvpx-vp9 @ 0x7fb8e4028000] decoder buffer model
rc_buf_sz: 6000
rc_buf_initial_sz: 4000
rc_buf_optimal_sz: 5000
[libvpx-vp9 @ 0x7fb8e4028000] 2 pass rate control settings
rc_2pass_vbr_bias_pct: 50
rc_2pass_vbr_minsection_pct: 0
rc_2pass_vbr_maxsection_pct: 2000
[libvpx-vp9 @ 0x7fb8e4028000] keyframing settings
kf_mode: 1
kf_min_dist: 0
kf_max_dist: 128
[libvpx-vp9 @ 0x7fb8e4028000]
[libvpx-vp9 @ 0x7fb8e4028000] vpx_codec_enc_cfg
[libvpx-vp9 @ 0x7fb8e4028000] generic settings
g_usage: 0
g_threads: 0
g_profile: 0
g_w: 2432
g_h: 1556
g_bit_depth: 8
g_input_bit_depth: 8
g_timebase: {1/100}
g_error_resilient: 0
g_pass: 0
g_lag_in_frames: 25
[libvpx-vp9 @ 0x7fb8e4028000] rate control settings
rc_dropframe_thresh: 0
rc_resize_allowed: 0
rc_resize_up_thresh: 60
rc_resize_down_thresh: 30
rc_end_usage: 0
rc_twopass_stats_in: 0x0(0)
rc_target_bitrate: 200
[libvpx-vp9 @ 0x7fb8e4028000] quantizer settings
rc_min_quantizer: 0
rc_max_quantizer: 63
[libvpx-vp9 @ 0x7fb8e4028000] bitrate tolerance
rc_undershoot_pct: 25
rc_overshoot_pct: 25
[libvpx-vp9 @ 0x7fb8e4028000] decoder buffer model
rc_buf_sz: 6000
rc_buf_initial_sz: 4000
rc_buf_optimal_sz: 5000
[libvpx-vp9 @ 0x7fb8e4028000] 2 pass rate control settings
rc_2pass_vbr_bias_pct: 50
rc_2pass_vbr_minsection_pct: 0
rc_2pass_vbr_maxsection_pct: 2000
[libvpx-vp9 @ 0x7fb8e4028000] keyframing settings
kf_mode: 1
kf_min_dist: 0
kf_max_dist: 128
[libvpx-vp9 @ 0x7fb8e4028000]
[libvpx-vp9 @ 0x7fb8e4028000] vpx_codec_control
[libvpx-vp9 @ 0x7fb8e4028000] VP8E_SET_CPUUSED: 1
[libvpx-vp9 @ 0x7fb8e4028000] VP8E_SET_ARNR_MAXFRAMES: 0
[libvpx-vp9 @ 0x7fb8e4028000] VP8E_SET_ARNR_STRENGTH: 3
[libvpx-vp9 @ 0x7fb8e4028000] VP8E_SET_ARNR_TYPE: 3
[libvpx-vp9 @ 0x7fb8e4028000] VP8E_SET_STATIC_THRESHOLD: 0
[libvpx-vp9 @ 0x7fb8e4028000] VP9E_SET_COLOR_SPACE: 0
[libvpx-vp9 @ 0x7fb8e4028000] VP9E_SET_COLOR_RANGE: 0
[libvpx-vp9 @ 0x7fb8e4028000] VP9E_SET_TARGET_LEVEL: 255
[libvpx-vp9 @ 0x7fb8e4028000] Using deadline: 1000000
Output #0, webm, to 'livingroom.webm':
Metadata:
encoder : Lavf57.72.100
Stream #0:0, 0, 1/1000: Video: vp9 (libvpx-vp9), 1 reference frame,
yuva420p, 2432x1556, 0/1, q=-1--1, 200 kb/s, 100 fps, 1k tbn, 100 tbc
Metadata:
encoder : Lavc57.92.100 libvpx-vp9
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Clipping frame in rate conversion by 0.000008
cur_dts is invalid (this is harmless if it occurs once at the start per
stream)
[gif @ 0x7fb8e4025800] code=21 '!'
[gif @ 0x7fb8e4025800] code=2c ','
cur_dts is invalid (this is harmless if it occurs once at the start per
stream)
Last message repeated 1 times
No more output streams to write to, finishing.
Automatically inserted bitstream filter 'vp9_superframe'; args=''
[webm @ 0x7fb8e4026800] get_metadata_duration returned: 0
[webm @ 0x7fb8e4026800] Writing block at offset 3, size 6415, pts 0, dts
0, duration 10, keyframe 1
[webm @ 0x7fb8e4026800] Writing block at offset 6846, size 4532, pts 2000,
dts 2000, duration 10, keyframe 0
[webm @ 0x7fb8e4026800] end duration = 2010
frame= 2 fps=1.2 q=0.0 Lsize= 12kB time=00:00:02.00 bitrate=
47.8kbits/s speed=1.18x
video:11kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 9.290216%
Input file #0 (livingroom.gif):
Input stream #0:0 (video): 2 packets read (3318801 bytes); 2 frames
decoded;
Total: 2 packets (3318801 bytes) demuxed
Output file #0 (livingroom.webm):
Output stream #0:0 (video): 2 frames encoded; 2 packets muxed (10947
bytes);
Total: 2 packets (10947 bytes) muxed
2 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x7fb8e3c18f40] Statistics: 17 seeks, 14 writeouts
[AVIOContext @ 0x7fb8e3c16c60] Statistics: 6652701 bytes read, 2 seeks
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6302>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list