#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".

Reply via email to