#9210: Concat images produces wrong timings when duration is in milliseconds -------------------------------------+------------------------------------ Reporter: demet64 | Owner: (none) Type: enhancement | Status: new Priority: wish | Component: avformat Version: git-master | Resolution: Keywords: concat | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | -------------------------------------+------------------------------------ Comment (by Brian):
Can reproduce. {{{#!pwsh ❯ ffmpeg -version ffmpeg version N-118926-gd435b641a2-20250325 Copyright (c) 2000-2025 the FFmpeg developers built with gcc 14.2.0 (crosstool-NG 1.27.0.18_7458341) configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg- config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-libxml2 --enable-lzma --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable- avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable- ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable- libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-libzmq --enable-lv2 --enable-libvpl --enable-openal --enable- libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable- librubberband --enable-schannel --enable-sdl2 --enable-libsnappy --enable- libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable- libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable- vulkan --enable-libshaderc --enable-libplacebo --disable-libvvenc --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra- ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20250325 libavutil 59. 60.100 / 59. 60.100 libavcodec 61. 33.102 / 61. 33.102 libavformat 61. 9.107 / 61. 9.107 libavdevice 61. 4.100 / 61. 4.100 libavfilter 10. 9.100 / 10. 9.100 libswscale 8. 13.103 / 8. 13.103 libswresample 5. 4.100 / 5. 4.100 libpostproc 58. 4.100 / 58. 4.100 ❯ apngasm -v APNG Assembler v3.1.1 (frontend v3.1.0) ❯ ffmpeg -hide_banner -loglevel error -filter_complex color=white:1x1,format=rgb24 -vframes 1 white-pixel.png ❯ $durations = @( 120 90 90 120 90 90 90 90 120 90 ) ❯ apngasm ($durations | ForEach-Object { 'white-pixel.png'; $_ }) -o white-pixel-apngasm.apng .\white-pixel.png => Delay=(120/1000) sec .\white-pixel.png => Delay=(90/1000) sec .\white-pixel.png => Delay=(90/1000) sec .\white-pixel.png => Delay=(120/1000) sec .\white-pixel.png => Delay=(90/1000) sec .\white-pixel.png => Delay=(90/1000) sec .\white-pixel.png => Delay=(90/1000) sec .\white-pixel.png => Delay=(90/1000) sec .\white-pixel.png => Delay=(120/1000) sec .\white-pixel.png => Delay=(90/1000) sec 10 Frames white-pixel-apngasm.apng APNG assembled successfully => white-pixel-apngasm.apng ❯ "ffconcat version 1.0`n$(($durations | ForEach-Object { 'file white- pixel.png'; "duration $_`ms" }) -join "`n")" | Set-Content ffconcat.txt -NoNewline ❯ ffmpeg -hide_banner -loglevel trace -i ffconcat.txt -loop 0 white-pixel- ffmpeg.apng Splitting the commandline. Reading option '-hide_banner' ... matched as option 'hide_banner' (do not show program banner) with argument '1'. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'trace'. Reading option '-i' ... matched as input url with argument 'ffconcat.txt'. Reading option '-loop' ... matched as AVOption 'loop' with argument '0'. Reading option 'white-pixel-ffmpeg.apng' ... matched as output url. Finished splitting the commandline. Parsing a group of options: global . Applying option hide_banner (do not show program banner) with argument 1. Applying option loglevel (set logging level) with argument trace. Successfully parsed a group of options. Parsing a group of options: input url ffconcat.txt. Successfully parsed a group of options. Opening an input file: ffconcat.txt. [AVFormatContext @ 0000000000149b40] Opening 'ffconcat.txt' for reading [file @ 0000000000149f80] Setting default whitelist 'file,crypto,data' Probing concat score:100 size:373 [concat @ 0000000000149b40] Format concat probed with size=2048 and score=100 [AVFormatContext @ 0000000000156140] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 0000000000156140] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 0000000000156140] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 0000000000156140] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 0000000000156140] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 0000000000156140] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] Before avformat_find_stream_info() pos: 373 bytes read:373 seeks:0 nb_streams:1 [concat @ 0000000000149b40] file:0 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:0 pts_time:0 dts:0 dts_time:0 [concat @ 0000000000149b40] All info found [concat @ 0000000000149b40] stream 0: start_time: 0 duration: NOPTS [concat @ 0000000000149b40] format: start_time: 0 duration: 0.99 (estimate from stream) bitrate=3 kb/s [concat @ 0000000000149b40] After avformat_find_stream_info() pos: 373 bytes read:373 seeks:0 frames:1 Input #0, concat, from 'ffconcat.txt': Duration: 00:00:00.99, start: 0.000000, bitrate: 3 kb/s Stream #0:0, 1, 1/25: Video: png, 1 reference frame, rgb24(pc, gbr/unknown/unknown), 1x1 [SAR 1:1 DAR 1:1], 0/1, 25 fps, 25 tbr, 25 tbn Successfully opened the file. Parsing a group of options: output url white-pixel-ffmpeg.apng. Successfully parsed a group of options. Opening an output file: white-pixel-ffmpeg.apng. [out#0/apng @ 0000000000104040] No explicit maps, mapping streams automatically... [vost#0:0/apng @ 000000000014e600] Created video stream from input stream 0:0 detected 16 logical cores [file @ 00000000001cb240] Setting default whitelist 'file,crypto,data' Successfully opened the file. Stream mapping: Stream #0:0 -> #0:0 (png (native) -> apng (native)) [vost#0:0/apng @ 000000000014e600] Starting thread... [vf#0:0 @ 00000000000e3840] Starting thread... [vist#0:0/png @ 0000000000154740] [dec:png @ 000000000018a040] Starting thread... [in#0/concat @ 0000000000149780] Starting thread... Press [q] to stop, [?] for help [AVIOContext @ 0000000000156640] Statistics: 90 bytes read, 0 seeks [AVFormatContext @ 0000000000156140] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 0000000000156140] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 0000000000156140] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 0000000000156140] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 0000000000156140] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 0000000000156140] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] file:1 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:3 pts_time:0.12 dts:3 dts_time:0.12 [AVIOContext @ 0000000000156400] Statistics: 90 bytes read, 0 seeks [AVFormatContext @ 0000000000156140] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 0000000000156140] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 0000000000156140] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 0000000000156140] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 0000000000156140] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 0000000000156140] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] file:2 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:5 pts_time:0.2 dts:5 dts_time:0.2 [AVIOContext @ 0000000000156400] Statistics: 90 bytes read, 0 seeks [AVFormatContext @ 0000000000154a00] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 0000000000154a00] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 0000000000154a00] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 0000000000154a00] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 0000000000154a00] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 0000000000154a00] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] file:3 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:8 pts_time:0.32 dts:8 dts_time:0.32 [AVIOContext @ 0000000000156140] Statistics: 90 bytes read, 0 seeks [AVFormatContext @ 0000000000154a00] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 0000000000154a00] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 0000000000154a00] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 0000000000154a00] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 0000000000154a00] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 0000000000154a00] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] file:4 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:11 pts_time:0.44 dts:11 dts_time:0.44 [AVIOContext @ 0000000000156140] Statistics: 90 bytes read, 0 seeks [AVFormatContext @ 00000000049a5c00] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 00000000049a5c00] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 00000000049a5c00] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 00000000049a5c00] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 00000000049a5c00] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 00000000049a5c00] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] file:5 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:13 pts_time:0.52 dts:13 dts_time:0.52 [AVIOContext @ 0000000000156140] Statistics: 90 bytes read, 0 seeks [AVFormatContext @ 00000000049a5cc0] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 00000000049a5cc0] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 00000000049a5cc0] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 00000000049a5cc0] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 00000000049a5cc0] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 00000000049a5cc0] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] file:6 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:15 pts_time:0.6 dts:15 dts_time:0.6 [AVIOContext @ 0000000000156140] Statistics: 90 bytes read, 0 seeks [AVFormatContext @ 000000000014d8c0] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 000000000014d8c0] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 000000000014d8c0] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 000000000014d8c0] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 000000000014d8c0] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 000000000014d8c0] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] file:7 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:17 pts_time:0.68 dts:17 dts_time:0.68 [AVIOContext @ 0000000000156140] Statistics: 90 bytes read, 0 seeks [AVFormatContext @ 000000000014d8c0] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 000000000014d8c0] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 000000000014d8c0] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 000000000014d8c0] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 000000000014d8c0] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 000000000014d8c0] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] file:8 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:20 pts_time:0.8 dts:20 dts_time:0.8 [AVIOContext @ 0000000000156140] Statistics: 90 bytes read, 0 seeks [AVFormatContext @ 000000000014da00] Opening 'white-pixel.png' for reading Probing image2 score:50 size:90 Probing png_pipe score:99 size:90 [png_pipe @ 000000000014da00] Format png_pipe probed with size=2048 and score=99 [png_pipe @ 000000000014da00] Before avformat_find_stream_info() pos: 0 bytes read:90 seeks:0 nb_streams:1 [png_pipe @ 000000000014da00] stream 0: start_time: NOPTS duration: NOPTS [png_pipe @ 000000000014da00] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [png_pipe @ 000000000014da00] After avformat_find_stream_info() pos: 90 bytes read:90 seeks:0 frames:1 [concat @ 0000000000149b40] file:9 stream:0 pts:0 pts_time:0 dts:0 dts_time:0 -> pts:23 pts_time:0.92 dts:23 dts_time:0.92 [in#0/concat @ 0000000000149780] EOF while reading input [in#0/concat @ 0000000000149780] Terminating thread with return code 0 (success) [vist#0:0/png @ 0000000000154740] [dec:png @ 000000000018a040] Decoder thread received EOF packet [graph -1 input from stream 0:0 @ 0000000000102a00] w:1 h:1 pixfmt:rgb24 tb:1/25 fr:25/1 sar:1/1 csp:gbr range:pc [format @ 0000000000102e40] Setting 'pix_fmts' to value 'rgb24|rgba|rgb48be|rgba64be|pal8|gray|ya8|gray16be|ya16be' [AVFilterGraph @ 000000000499aac0] query_formats: 4 queried, 9 merged, 0 already done, 0 delayed Output #0, apng, to 'white-pixel-ffmpeg.apng': Metadata: encoder : Lavf61.9.107 Stream #0:0, 0, 1/25: Video: apng, 1 reference frame, rgb24(pc, gbr/unknown/unknown, progressive), 1x1 [SAR 1:1 DAR 1:1], 0/1, q=2-31, 200 kb/s, 25 fps, 25 tbn Metadata: encoder : Lavc61.33.102 apng [out#0/apng @ 0000000000104040] Starting thread... [vist#0:0/png @ 0000000000154740] [dec:png @ 000000000018a040] Decoder returned EOF, finishing [vist#0:0/png @ 0000000000154740] [dec:png @ 000000000018a040] Terminating thread with return code 0 (success) [out_#0:0 @ 00000000001025c0] EOF on sink link out_#0:0:default. [vf#0:0 @ 00000000000e3840] Filtergraph returned EOF, finishing [vf#0:0 @ 00000000000e3840] All consumers returned EOF [vost#0:0/apng @ 000000000014e600] [enc:apng @ 0000000000150740] Encoder thread received EOF [vost#0:0/apng @ 000000000014e600] Terminating thread with return code 0 (success) [out#0/apng @ 0000000000104040] All streams finished [out#0/apng @ 0000000000104040] Terminating thread with return code 0 (success) [vf#0:0 @ 00000000000e3840] Terminating thread with return code 0 (success) [AVIOContext @ 0000000004970100] Statistics: 742 bytes written, 1 seeks, 1 writeouts [out#0/apng @ 0000000000104040] Output file #0 (white-pixel-ffmpeg.apng): [out#0/apng @ 0000000000104040] Output stream #0:0 (video): 10 frames encoded; 10 packets muxed (656 bytes); [out#0/apng @ 0000000000104040] Total: 10 packets (656 bytes) muxed [out#0/apng @ 0000000000104040] video:1KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 13.109756% frame= 10 fps=0.0 q=-0.0 Lsize= 1KiB time=00:00:00.96 bitrate= 6.2kbits/s speed=62.9x [in#0/concat @ 0000000000149780] Input file #0 (ffconcat.txt): [in#0/concat @ 0000000000149780] Input stream #0:0 (video): 10 packets read (900 bytes); 10 frames decoded; 0 decode errors; [in#0/concat @ 0000000000149780] Total: 10 packets (900 bytes) demuxed [AVIOContext @ 0000000000156140] Statistics: 90 bytes read, 0 seeks [AVIOContext @ 0000000000155900] Statistics: 373 bytes read, 0 seeks ❯ ffprobe -hide_banner -loglevel error -show_frames -i white-pixel- ffmpeg.apng | rg 'duration_time=\K[\d.]+' -oP 0.120000 0.080000 0.120000 0.120000 0.080000 0.080000 0.080000 0.120000 0.120000 0.120000 ❯ ffprobe -hide_banner -loglevel error -show_frames -i white-pixel- apngasm.apng | rg 'duration_time=\K[\d.]+' -oP 0.120000 0.090000 0.090000 0.120000 0.090000 0.090000 0.090000 0.090000 0.120000 0.090000 }}} I also found that for some reason the last frame has a good bit of delay added to it, regardless of whether or not ffconcat's used (I believe there's already an open ticket for this). What's odd's that other frames also exhibit a bit of frametime variance here. {{{#!pwsh ❯ ffmpeg -hide_banner -loglevel trace -i white-pixel-apngasm.apng -loop 0 white-pixel-apngasm-to-ffmpeg.apng Splitting the commandline. Reading option '-hide_banner' ... matched as option 'hide_banner' (do not show program banner) with argument '1'. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'trace'. Reading option '-i' ... matched as input url with argument 'white-pixel- apngasm.apng'. Reading option '-loop' ... matched as AVOption 'loop' with argument '0'. Reading option 'white-pixel-apngasm-to-ffmpeg.apng' ... matched as output url. Finished splitting the commandline. Parsing a group of options: global . Applying option hide_banner (do not show program banner) with argument 1. Applying option loglevel (set logging level) with argument trace. Successfully parsed a group of options. Parsing a group of options: input url white-pixel-apngasm.apng. Successfully parsed a group of options. Opening an input file: white-pixel-apngasm.apng. [AVFormatContext @ 000000000070fc00] Opening 'white-pixel-apngasm.apng' for reading [file @ 0000000000710040] Setting default whitelist 'file,crypto,data' Probing apng score:100 size:754 Probing png_pipe score:99 size:754 [apng @ 000000000070fc00] Format apng probed with size=2048 and score=100 [apng @ 000000000070fc00] num_frames: 10, num_play: 0 [apng @ 000000000070fc00] Before avformat_find_stream_info() pos: 67 bytes read:754 seeks:0 nb_streams:1 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 0, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 120, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 1, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 90, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 3, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 90, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 5, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 120, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 7, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 90, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 9, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 90, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 11, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 90, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 13, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 90, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 15, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 120, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] decode_fctl_chunk: sequence_number: 17, width: 1, height: 1, x_offset: 0, y_offset: 0, delay_num: 90, delay_den: 1000, dispose_op: 0, blend_op: 0 [apng @ 000000000070fc00] rfps: 9.916667 0.019617 [apng @ 000000000070fc00] rfps: 10.000000 0.015556 [apng @ 000000000070fc00] rfps: 10.083333 0.012358 [apng @ 000000000070fc00] rfps: 10.166667 0.010023 [apng @ 000000000070fc00] rfps: 10.250000 0.008551 [apng @ 000000000070fc00] rfps: 10.333333 0.007943 Last message repeated 1 times [apng @ 000000000070fc00] rfps: 10.416667 0.008198 Last message repeated 1 times [apng @ 000000000070fc00] rfps: 10.500000 0.009317 Last message repeated 1 times [apng @ 000000000070fc00] rfps: 10.583333 0.011298 [apng @ 000000000070fc00] rfps: 10.666667 0.014143 [apng @ 000000000070fc00] rfps: 10.750000 0.017851 [apng @ 000000000070fc00] rfps: 22.583333 0.017851 [apng @ 000000000070fc00] rfps: 22.666667 0.014143 [apng @ 000000000070fc00] rfps: 22.750000 0.011298 [apng @ 000000000070fc00] rfps: 22.833333 0.009317 Last message repeated 1 times [apng @ 000000000070fc00] rfps: 22.916667 0.008198 Last message repeated 1 times [apng @ 000000000070fc00] rfps: 23.000000 0.007943 Last message repeated 1 times [apng @ 000000000070fc00] rfps: 23.083333 0.008551 [apng @ 000000000070fc00] rfps: 23.166667 0.010023 [apng @ 000000000070fc00] rfps: 23.250000 0.012358 [apng @ 000000000070fc00] rfps: 23.333333 0.015556 [apng @ 000000000070fc00] rfps: 23.416667 0.019617 [apng @ 000000000070fc00] rfps: 33.000000 0.006906 Last message repeated 1 times [apng @ 000000000070fc00] rfps: 44.000000 0.014143 [apng @ 000000000070fc00] rfps: 56.000000 0.014143 [apng @ 000000000070fc00] stream 0: start_time: NOPTS duration: NOPTS [apng @ 000000000070fc00] format: start_time: NOPTS duration: NOPTS (estimate from bit rate) bitrate=0 kb/s [apng @ 000000000070fc00] After avformat_find_stream_info() pos: 742 bytes read:754 seeks:0 frames:10 Input #0, apng, from 'white-pixel-apngasm.apng': Duration: N/A, bitrate: N/A Stream #0:0, 10, 1/100000: Video: apng, 1 reference frame, ya8(pc, gbr/unknown/unknown), 1x1, 0/1, 10.25 fps, 33 tbr, 100k tbn Successfully opened the file. Parsing a group of options: output url white-pixel-apngasm-to-ffmpeg.apng. Successfully parsed a group of options. Opening an output file: white-pixel-apngasm-to-ffmpeg.apng. [out#0/apng @ 00000000006ccfc0] No explicit maps, mapping streams automatically... [vost#0:0/apng @ 0000000000713b40] Created video stream from input stream 0:0 detected 16 logical cores [file @ 00000000006b9bc0] Setting default whitelist 'file,crypto,data' Successfully opened the file. Stream mapping: Stream #0:0 -> #0:0 (apng (native) -> apng (native)) [vost#0:0/apng @ 0000000000713b40] Starting thread... [vf#0:0 @ 00000000006d0280] Starting thread... [vist#0:0/apng @ 0000000000715140] [dec:apng @ 0000000000714440] Starting thread... [in#0/apng @ 000000000070f940] Starting thread... Press [q] to stop, [?] for help [in#0/apng @ 000000000070f940] EOF while reading input [in#0/apng @ 000000000070f940] Terminating thread with return code 0 (success) [vist#0:0/apng @ 0000000000715140] [dec:apng @ 0000000000714440] Decoder thread received EOF packet [graph -1 input from stream 0:0 @ 000000000078e500] w:1 h:1 pixfmt:ya8 tb:1/100000 fr:33/1 sar:0/1 csp:gbr range:pc [format @ 000000000078f1c0] Setting 'pix_fmts' to value 'rgb24|rgba|rgb48be|rgba64be|pal8|gray|ya8|gray16be|ya16be' [AVFilterGraph @ 000000000078b980] query_formats: 4 queried, 9 merged, 0 already done, 0 delayed Output #0, apng, to 'white-pixel-apngasm-to-ffmpeg.apng': Metadata: encoder : Lavf61.9.107 Stream #0:0, 0, 1/33: Video: apng, 1 reference frame, ya8(pc, gbr/unknown/unknown, progressive), 1x1, 0/1, q=2-31, 200 kb/s, 33 fps, 33 tbn Metadata: encoder : Lavc61.33.102 apng [out#0/apng @ 00000000006ccfc0] Starting thread... [vist#0:0/apng @ 0000000000715140] [dec:apng @ 0000000000714440] Decoder returned EOF, finishing [vist#0:0/apng @ 0000000000715140] [dec:apng @ 0000000000714440] Terminating thread with return code 0 (success) [out_#0:0 @ 000000000078e840] EOF on sink link out_#0:0:default. [vf#0:0 @ 00000000006d0280] Filtergraph returned EOF, finishing [vf#0:0 @ 00000000006d0280] All consumers returned EOF [vost#0:0/apng @ 0000000000713b40] [enc:apng @ 0000000000718b40] Encoder thread received EOF [vost#0:0/apng @ 0000000000713b40] Terminating thread with return code 0 (success) [out#0/apng @ 00000000006ccfc0] All streams finished [vf#0:0 @ 00000000006d0280] Terminating thread with return code 0 (success) [out#0/apng @ 00000000006ccfc0] Terminating thread with return code 0 (success) [AVIOContext @ 000000000076ce40] Statistics: 732 bytes written, 1 seeks, 1 writeouts [out#0/apng @ 00000000006ccfc0] Output file #0 (white-pixel-apngasm-to- ffmpeg.apng): [out#0/apng @ 00000000006ccfc0] Output stream #0:0 (video): 10 frames encoded; 10 packets muxed (646 bytes); [out#0/apng @ 00000000006ccfc0] Total: 10 packets (646 bytes) muxed [out#0/apng @ 00000000006ccfc0] video:1KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 13.312693% frame= 10 fps=0.0 q=-0.0 Lsize= 1KiB time=00:00:01.00 bitrate= 5.9kbits/s speed= 171x [in#0/apng @ 000000000070f940] Input file #0 (white-pixel-apngasm.apng): [in#0/apng @ 000000000070f940] Input stream #0:0 (video): 10 packets read (675 bytes); 10 frames decoded; 0 decode errors; [in#0/apng @ 000000000070f940] Total: 10 packets (675 bytes) demuxed [AVIOContext @ 0000000000713140] Statistics: 754 bytes read, 0 seeks ❯ ffprobe -hide_banner -loglevel error -show_frames -i white-pixel- apngasm-to-ffmpeg.apng | rg 'duration_time=\K[\d.]+' -oP 0.121210 0.090910 0.090910 0.121210 0.090910 0.090910 0.090910 0.090910 0.121210 0.121210 }}} -- Ticket URL: <https://trac.ffmpeg.org/ticket/9210#comment:11> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker
_______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org https://ffmpeg.org/mailman/listinfo/ffmpeg-trac To unsubscribe, visit link above, or email ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".