[FFmpeg-trac] #9210(avformat:new): Concat images produces wrong timings when duration is in milliseconds
FFmpeg
trac at avcodec.org
Thu Mar 27 20:27:01 EET 2025
#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
More information about the FFmpeg-trac
mailing list