Jellyfin Forum
SOLVED: Jpeg XL .jxl photos do not appear - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+---- Forum: Media Scanning & Identification (https://forum.jellyfin.org/f-media-scanning-identification)
+---- Thread: SOLVED: Jpeg XL .jxl photos do not appear (/t-solved-jpeg-xl-jxl-photos-do-not-appear)

Pages: 1 2


Jpeg XL .jxl photos do not appear - jellyforphotos - 2024-05-09

hi everybody
I wish to use Jellyfin for a personal photos and videos, I did a fresh installation of Jellyfin :
 Jellyfin version: 10.8.13
 Operating system: Linux
 Main: Architecture: X64
Installed on a LXC container in Proxmox  :
 Proxmox 6.5.13-5-pve 
 Description:    Ubuntu 23.10
 Release:        23.10
 Codename:      mantic
I followed the straightforward Jellyfin installation guide, so, all automatic.

Everything works fine, I can view and display photos and videos from an Amazon fire stick, or directly from Jellyfin web server 

However, Jpeg XL images (.jxl) do not appear.

(indeed I have many .heic images, which is not supported by ffmpeg, so I converted them to .jxl with the reference tool cjxl from libjxl v7.0)

checking ffmpeg it is correctly configured for jxl :

ffmpeg version 6.0-6ubuntu1 Copyright © 2000-2023 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.2.0-2ubuntu1)
  configuration: --prefix=/usr --extra-version=6ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-libjxl --enable-pocketsphinx --enable-librsvg --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-librav1e --enable-shared
  libavutil      58.  2.100 / 58.  2.100
  libavcodec    60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter    9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample  4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100


I also tested it can for example correctly encode, this command works fine : ffmpeg -i 20211212_164845.jpg -c:v libjxl testimage.jxl

any idea ?

many thanks!


RE: Jpeg XL .jxl photos do not appear - TheDreadPirate - 2024-05-09

What browser are you using? I recall that Chrome dropped support for JPEG-XL.


RE: Jpeg XL .jxl photos do not appear - jellyforphotos - 2024-05-09

I used Chrome indeed, and tried also Firefox.

Also in the logs

this seems strange ? : it is indicated a different ffmpeg version? Found ffmpeg version "5.1.4"

[2024-05-09 08:56:52.218 +00:00] [INF] Operating system: "Linux"
[2024-05-09 08:56:52.218 +00:00] [INF] Architecture: X64
[2024-05-09 08:56:52.218 +00:00] [INF] 64-Bit Process: True
[2024-05-09 08:56:52.218 +00:00] [INF] User Interactive: True
[2024-05-09 08:56:52.218 +00:00] [INF] Processor count: 2
[2024-05-09 08:56:52.218 +00:00] [INF] Program data path: "/var/lib/jellyfin"
[2024-05-09 08:56:52.218 +00:00] [INF] Web resources path: "/usr/share/jellyfin/web"
[2024-05-09 08:56:52.218 +00:00] [INF] Application directory: "/usr/lib/jellyfin/bin/"
[2024-05-09 08:56:52.329 +00:00] [INF] Setting cache path: "/var/cache/jellyfin"
[2024-05-09 08:56:52.342 +00:00] [INF] Loading assemblies
[2024-05-09 08:56:52.407 +00:00] [INF] Defined LAN addresses : "[10.0.0.0/8,172.16.0.0/12,192.168.0.0/16]"
[2024-05-09 08:56:52.407 +00:00] [INF] Defined LAN exclusions : "[]"
[2024-05-09 08:56:52.408 +00:00] [INF] Using LAN addresses: "[10.0.0.0/8,172.16.0.0/12,192.168.0.0/16]"
[2024-05-09 08:56:52.410 +00:00] [INF] Using bind addresses: "[]"
[2024-05-09 08:56:52.410 +00:00] [INF] Using bind exclusions: "[]"
[2024-05-09 08:56:53.554 +00:00] [INF] Loaded plugin: "TMDb" "10.8.13.0"
[2024-05-09 08:56:53.554 +00:00] [INF] Loaded plugin: "Studio Images" "10.8.13.0"
[2024-05-09 08:56:53.554 +00:00] [INF] Loaded plugin: "OMDb" "10.8.13.0"
[2024-05-09 08:56:53.555 +00:00] [INF] Loaded plugin: "MusicBrainz" "10.8.13.0"
[2024-05-09 08:56:53.555 +00:00] [INF] Loaded plugin: "AudioDB" "10.8.13.0"
[2024-05-09 08:56:53.583 +00:00] [INF] Kestrel listening on "Any IP4 Address"
[2024-05-09 08:56:53.748 +00:00] [INF] Running startup tasks
[2024-05-09 08:56:53.774 +00:00] [INF] Daily trigger for "Extraire les images de chapitre" set to fire at 2024-05-10 02:00:00.000 +00:00, which is 17:03:06.2255374 from now.
[2024-05-09 08:56:53.835 +00:00] [INF] Found ffmpeg version "5.1.4"
[2024-05-09 08:56:53.856 +00:00] [INF] Available "decoders": ["libdav1d", "av1", "av1_cuvid", "av1_qsv", "h264", "h264_qsv", "h264_cuvid", "hevc", "hevc_qsv", "hevc_cuvid", "mpeg2video", "mpeg2_qsv", "mpeg2_cuvid", "mpeg4", "mpeg4_cuvid", "msmpeg4", "vc1_qsv", "vc1_cuvid", "vp8", "libvpx", "vp8_cuvid", "vp8_qsv", "vp9", "libvpx-vp9", "vp9_cuvid", "vp9_qsv", "aac", "ac3", "dca", "flac", "mp3", "truehd"]
[2024-05-09 08:56:53.865 +00:00] [INF] Available "encoders": ["libx264", "h264_amf", "h264_nvenc", "h264_qsv", "h264_v4l2m2m", "h264_vaapi", "libx265", "hevc_amf", "hevc_nvenc", "hevc_qsv", "hevc_vaapi", "mpeg4", "msmpeg4", "libvpx", "libvpx-vp9", "aac", "libfdk_aac", "ac3", "dca", "flac", "libmp3lame", "libopus", "truehd", "libvorbis", "srt"]
[2024-05-09 08:56:53.876 +00:00] [INF] Available filters: ["deinterlace_qsv", "deinterlace_vaapi", "hwupload_cuda", "hwupload_vaapi", "overlay_opencl", "overlay_qsv", "overlay_vaapi", "overlay_cuda", "procamp_vaapi", "scale_cuda", "scale_opencl", "scale_qsv", "scale_vaapi", "tonemap_cuda", "tonemap_opencl", "tonemap_vaapi", "vpp_qsv", "yadif_cuda", "zscale", "alphasrc"]
[2024-05-09 08:56:53.928 +00:00] [INF] Available hwaccel types: ["cuda", "vaapi", "qsv", "drm", "opencl", "vulkan"]
[2024-05-09 08:56:53.983 +00:00] [INF] FFmpeg: "/usr/lib/jellyfin-ffmpeg/ffmpeg"


RE: Jpeg XL .jxl photos do not appear - TheDreadPirate - 2024-05-09

Jellyfin uses a forked and modified ffmpeg. I'm not sure ffmpeg is involved at all in how Jellyfin serves photos. I'm going to wager that Jellyfin just doesn't support JPEG-XL based on this list.

https://github.com/jellyfin/jellyfin/blob/44b03a33151fb37275a01ec29de1c485d015c6ce/src/Jellyfin.Drawing/ImageProcessor.cs#L83

But I could be wrong.


RE: Jpeg XL .jxl photos do not appear - jellyforphotos - 2024-05-09

hum.. you are probably right, it could be even less formats looking for example at: https://github.com/jellyfin/jellyfin/blob/44b03a33151fb37275a01ec29de1c485d015c6ce/MediaBrowser.Model/Drawing/ImageFormat.cs

do you know how to take this forward ? is there a documentation listing the supported image formats ? (I couldn't find it). Should I post a feature request and is there any hope it will taken ?

sorry for many questions, and thanks for your help so far

also, if I could understand the dependancies and what is used to decode images in the end, maybe I could tweak the code. I will look further.


RE: Jpeg XL .jxl photos do not appear - TheDreadPirate - 2024-05-09

IIRC, image support is derived from another library Jellyfin imports and that support for JPEG-XL (and AVIF) is missing in that imported library. I forget what the library is called, but it isn't as simple as adding "jxl" to that list of supported image types.


RE: Jpeg XL .jxl photos do not appear - gnattu - 2024-05-10

The image support is indeed very limited and we can do very little about it. If you do need advanced format support you'd better use something else for photo gallery


RE: Jpeg XL .jxl photos do not appear - TheDreadPirate - 2024-05-10

Check out immish. It is a self-hosted photo platform.

https://github.com/immich-app/immich


RE: Jpeg XL .jxl photos do not appear - jellyforphotos - 2024-05-10

hello
Many thanks you for your inputs. However, I think Jellyfin is good overall including for images, and it is worth developing this part. Not a a lot of things are missing to attract more users. I noted:
- support a few more formats (I am still not sure if dependancy is .NET or ffmeg or other..)
- sort by image date
- I think there is a limit of nb of files per folder.. (need to recheck)
It is very convenient to install & use.
So, I believe it is worth developping.

In case you have more practical inputs, like exactly where in the code images are loaded, checked, and 'collaged', I will be grateful.


RE: Jpeg XL .jxl photos do not appear - jellyforphotos - 2024-05-20

I could finally adapt Jellyfin in order to support jpeg xl picture format; in nutshell:
- modification of image decode methods, to redirect to djxl instead of skiasharp (requires to install libjxl on system)
- same modification at various places: generation of thumbnails, before web client downloads a picture ; and also before using taglib for exif data analysis (although it seels Jellyfin does not do anything with exif data)
- methods to delete temp files after usage
- recompile from source
If someone needs the code, feel free to ask.