[FFmpeg-trac] #10167(undetermined:new): Animated JPEG XL is treated as single image
FFmpeg
trac at avcodec.org
Sat Feb 4 16:27:13 EET 2023
#10167: Animated JPEG XL is treated as single image
-------------------------------------+-------------------------------------
Reporter: oblomov | Type: defect
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
The JPEG XL format supports animation, but ffmpeg only sees the first
frame of the animation and interprets such a file as a static single
image.
To reproduce this, an animated JPEG XL is needed. This can be created e.g.
converting Mozilla's Throbber-small.gif into a JXL with:
{{{
% cjxl Throbber-small.gif throbber-small.gif
% jxlinfo throbber-small.gif
JPEG XL animation, 16x16, (possibly) lossless, 8-bit RGBA
Color space: RGB, D65, sRGB primaries, sRGB transfer function, rendering
intent: Perceptual
frame: full image size, duration: 100.0 ms
frame: full image size, duration: 100.0 ms
frame: full image size, duration: 100.0 ms
frame: full image size, duration: 100.0 ms
frame: full image size, duration: 100.0 ms
frame: full image size, duration: 100.0 ms
frame: full image size, duration: 100.0 ms
frame: full image size, duration: 100.0 ms
Animation length: 0.800 seconds (looping)
}}}
Compare now the ffprobe output (tested with the GPL Linux nightly):
{{{
% ffprobe Throbber-small.gif
ffprobe version N-109748-gb92028346c-20230203 Copyright (c) 2007-2023 the
FFmpeg developers
built with gcc 12.2.0 (crosstool-NG 1.25.0.90_cf9beb1)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
--pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu-
--arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-
debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
--enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
--enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf
--enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-
libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d
--enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-
llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass
--enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus
--enable-mbedtls --enable-librist --enable-libssh --enable-libtheora
--enable-libvpx --enable-libwebp --enable-lv2 --disable-libmfx --enable-
libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-
amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt
--enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2
--enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame
--enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab
--enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264
--enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg
--enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags=
--extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl
-lgomp' --extra-version=20230203
libavutil 57. 44.100 / 57. 44.100
libavcodec 59. 61.100 / 59. 61.100
libavformat 59. 37.100 / 59. 37.100
libavdevice 59. 8.101 / 59. 8.101
libavfilter 8. 56.100 / 8. 56.100
libswscale 6. 8.112 / 6. 8.112
libswresample 4. 9.100 / 4. 9.100
libpostproc 56. 7.100 / 56. 7.100
Input #0, gif, from '/usr/lib/firefox/Throbber-small.gif':
Duration: 00:00:00.80, start: 0.000000, bitrate: 8 kb/s
Stream #0:0: Video: gif, bgra, 16x16, 10 fps, 10 tbr, 100 tbn
}}}
versus
{{{
% ffprobe throbber-small.jxl
ffprobe version N-109748-gb92028346c-20230203 Copyright (c) 2007-2023 the
FFmpeg developers
built with gcc 12.2.0 (crosstool-NG 1.25.0.90_cf9beb1)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
--pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu-
--arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-
debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
--enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
--enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf
--enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-
libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d
--enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-
llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass
--enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus
--enable-mbedtls --enable-librist --enable-libssh --enable-libtheora
--enable-libvpx --enable-libwebp --enable-lv2 --disable-libmfx --enable-
libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-
amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt
--enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2
--enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame
--enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab
--enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264
--enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg
--enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags=
--extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl
-lgomp' --extra-version=20230203
libavutil 57. 44.100 / 57. 44.100
libavcodec 59. 61.100 / 59. 61.100
libavformat 59. 37.100 / 59. 37.100
libavdevice 59. 8.101 / 59. 8.101
libavfilter 8. 56.100 / 8. 56.100
libswscale 6. 8.112 / 6. 8.112
libswresample 4. 9.100 / 4. 9.100
libpostproc 56. 7.100 / 56. 7.100
Input #0, jpegxl_pipe, from 'throbber-small.jxl':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: jpegxl, rgba(pc, gbr/bt709/iec61966-2-1), 16x16, 25
fps, 25 tbr, 25 tbn
}}}
(Ideally, support for animated JPEG XL should be added both in input and
output, but input at least would be nice.)
--
Ticket URL: <https://trac.ffmpeg.org/ticket/10167>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list