HDR videos thumbnails not tone-mapped correctly [web] #4972

Closed
opened 2026-02-05 11:01:57 +03:00 by OVERLORD · 1 comment
Owner

Originally created by @Thinkscape on GitHub (Dec 19, 2024).

The bug

HDR videos from iPhone 13-16 uploaded to Immich have incorrectly tone-mapped thumbnails.

The OS that Immich Server is running on

Debian

Version of Immich Server

v1.123

Version of Immich Mobile App

1.123.0 build.186

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

services:
  immich:
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    volumes:
      - /var/data/immich/upload:/usr/src/app/upload
      - /dev/dri:/dev/dri
      - /etc/localtime:/etc/localtime:ro
    env_file: /var/data/config/immich/immich.env
    depends_on:
      - redis
      - database
    ports: 
      - 2283:2283
    networks:
      - internal
      - traefik_public
    deploy:
      mode: global
        
  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    volumes:
      - /var/data/immich/cache:/cache
      - /dev/dri:/dev/dri
    env_file: /var/data/config/immich/immich.env
    networks:
      - internal
    deploy:
      mode: global
      labels:
        - traefik.enable=false

  redis:
    image: redis:6.2
    networks:
      - internal
    deploy:
      labels:
        - traefik.enable=false

  db:
    # image: postgres:14
    image: tensorchord/pgvecto-rs:pg14-v0.2.0
    env_file: /var/data/config/immich/immich.env
    volumes:
      - /var/data/runtime/immich/database:/var/lib/postgresql/data
    networks:
      - internal
    deploy:
      labels:
        - traefik.enable=false
  
  pgbackups:
    image: prodrigestivill/postgres-backup-local
    restart: always
    env_file: /var/data/config/immich/immich-db-backup.env
    volumes:
      - /var/data/immich/database-dump:/backups
    networks:
      - internal
    depends_on:
      - db
      
networks:
  traefik_public:
    external: true
  internal:
    driver: overlay
    ipam:
      config:
        - subnet: 172.16.8.0/24

Your .env content

IMMICH_VERSION=release
PUID=1000
PGID=1000
TZ=Australia/Sydney

MACHINE_LEARNING_GPU_ACCELERATION= #optional
MACHINE_LEARNING_WORKERS=1 #optional
MACHINE_LEARNING_WORKER_TIMEOUT=120 #optional

###################################################################################
# Database
###################################################################################

# These are for the Immich components
DB_HOSTNAME=db
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich

# These are specific to how the postgres image likes to receive its ENV vars
POSTGRES_PASSWORD=postgres
#POSTGRES_USER=postgres
POSTGRES_DB=immich

###################################################################################
# Redis
###################################################################################

REDIS_HOSTNAME=redis

# Optional Redis settings:
# REDIS_PORT=6379
# REDIS_DBINDEX=0
# REDIS_PASSWORD=
# REDIS_SOCKET=


###################################################################################
# JWT SECRET
###################################################################################

JWT_SECRET=...
###################################################################################
# MAPBOX
####################################################################################

# ENABLE_MAPBOX is either true of false -> if true, you have to provide MAPBOX_KEY
ENABLE_MAPBOX=false
MAPBOX_KEY=

###################################################################################
# WEB - Required
###################################################################################

# This is the URL of your vm/server where you host Immich, so that the web frontend
# know where can it make the request to.
# For example: If your server IP address is 10.1.11.50, the environment variable will
# be IMMICH_API_URL_EXTERNAL=http://10.1.11.50:2283/api
# !CAUTION! THERE IS NO FORWARD SLASH AT THE END

IMMICH_API_URL_EXTERNAL=https://immich.example.com/api


####################################################################################
# WEB - Optional
####################################################################################

# Custom message on the login page, should be written in HTML form.
# For example VITE_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>"

VITE_LOGIN_PAGE_MESSAGE=

NODE_ENV=production

Reproduction steps

  1. Have a HDR video from iPhone 13 - 16 (default settings)
  2. Disable tone mapping in video transcoding settings in Administration (b/c the new player can play HDR videos)
  3. Upload video to Immich
image

Expected

The thumbnail matches a frame from the video

Actual

The thumbnail looks pale, washed-out, even though the video plays well on hover and in full-screen

2024-12-19 16 43 51

Relevant log output

No response

Additional information

No response

Originally created by @Thinkscape on GitHub (Dec 19, 2024). ### The bug HDR videos from iPhone 13-16 uploaded to Immich have incorrectly tone-mapped thumbnails. ### The OS that Immich Server is running on Debian ### Version of Immich Server v1.123 ### Version of Immich Mobile App 1.123.0 build.186 ### Platform with the issue - [ ] Server - [X] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML services: immich: image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} volumes: - /var/data/immich/upload:/usr/src/app/upload - /dev/dri:/dev/dri - /etc/localtime:/etc/localtime:ro env_file: /var/data/config/immich/immich.env depends_on: - redis - database ports: - 2283:2283 networks: - internal - traefik_public deploy: mode: global immich-machine-learning: image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} volumes: - /var/data/immich/cache:/cache - /dev/dri:/dev/dri env_file: /var/data/config/immich/immich.env networks: - internal deploy: mode: global labels: - traefik.enable=false redis: image: redis:6.2 networks: - internal deploy: labels: - traefik.enable=false db: # image: postgres:14 image: tensorchord/pgvecto-rs:pg14-v0.2.0 env_file: /var/data/config/immich/immich.env volumes: - /var/data/runtime/immich/database:/var/lib/postgresql/data networks: - internal deploy: labels: - traefik.enable=false pgbackups: image: prodrigestivill/postgres-backup-local restart: always env_file: /var/data/config/immich/immich-db-backup.env volumes: - /var/data/immich/database-dump:/backups networks: - internal depends_on: - db networks: traefik_public: external: true internal: driver: overlay ipam: config: - subnet: 172.16.8.0/24 ``` ### Your .env content ```Shell IMMICH_VERSION=release PUID=1000 PGID=1000 TZ=Australia/Sydney MACHINE_LEARNING_GPU_ACCELERATION= #optional MACHINE_LEARNING_WORKERS=1 #optional MACHINE_LEARNING_WORKER_TIMEOUT=120 #optional ################################################################################### # Database ################################################################################### # These are for the Immich components DB_HOSTNAME=db DB_USERNAME=postgres DB_PASSWORD=postgres DB_DATABASE_NAME=immich # These are specific to how the postgres image likes to receive its ENV vars POSTGRES_PASSWORD=postgres #POSTGRES_USER=postgres POSTGRES_DB=immich ################################################################################### # Redis ################################################################################### REDIS_HOSTNAME=redis # Optional Redis settings: # REDIS_PORT=6379 # REDIS_DBINDEX=0 # REDIS_PASSWORD= # REDIS_SOCKET= ################################################################################### # JWT SECRET ################################################################################### JWT_SECRET=... ################################################################################### # MAPBOX #################################################################################### # ENABLE_MAPBOX is either true of false -> if true, you have to provide MAPBOX_KEY ENABLE_MAPBOX=false MAPBOX_KEY= ################################################################################### # WEB - Required ################################################################################### # This is the URL of your vm/server where you host Immich, so that the web frontend # know where can it make the request to. # For example: If your server IP address is 10.1.11.50, the environment variable will # be IMMICH_API_URL_EXTERNAL=http://10.1.11.50:2283/api # !CAUTION! THERE IS NO FORWARD SLASH AT THE END IMMICH_API_URL_EXTERNAL=https://immich.example.com/api #################################################################################### # WEB - Optional #################################################################################### # Custom message on the login page, should be written in HTML form. # For example VITE_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>" VITE_LOGIN_PAGE_MESSAGE= NODE_ENV=production ``` ### Reproduction steps 1. Have a HDR video from iPhone 13 - 16 (default settings) 2. Disable tone mapping in video transcoding settings in Administration (b/c the new player can play HDR videos) 3. Upload video to Immich <img width="500" alt="image" src="https://github.com/user-attachments/assets/85e4fe76-3aa5-403f-ab2f-4fc4d5c4947b" /> ## Expected The thumbnail matches a frame from the video ## Actual The thumbnail looks pale, washed-out, even though the video plays well on hover and in full-screen ![2024-12-19 16 43 51](https://github.com/user-attachments/assets/1c01754e-d5b1-4966-bbc1-f6912d139f79) ### Relevant log output _No response_ ### Additional information _No response_
Author
Owner

@mertalev commented on GitHub (Dec 19, 2024):

Disabling tone-mapping doesn't mean the output is in HDR. It just means the colors are clipped instead of mapped. You should keep the setting enabled unless you have a specific reason (generally hardware compatibility issues or troubleshooting). The setting applies to thumbnails too.

@mertalev commented on GitHub (Dec 19, 2024): Disabling tone-mapping doesn't mean the output is in HDR. It just means the colors are clipped instead of mapped. You should keep the setting enabled unless you have a specific reason (generally hardware compatibility issues or troubleshooting). The setting applies to thumbnails too.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#4972