Skip to content

Immich have difficulty transcoding HEVC HDR10+ videos from S24 Ultra using hardware decoding #20832

@kiwijunglist

Description

@kiwijunglist

The bug

Hardware decoding:
Enables end-to-end acceleration instead of only accelerating encoding. May not work on all videos.

When I try to transcode video, immich specifically has problems with HEVC HDR10+ video files taken on S24 Ultra phone when I enable hardware decoding. CPU is i5-13500. No issues with hardware encoding, only hardware decoding causes problems with these files.

The OS that Immich Server is running on

Unraid 7.1.4

Version of Immich Server

v1.137.3

Version of Immich Mobile App

v1.37.2 build.3002

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

name: immich
services:

  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:2283
    depends_on:
      - redis
      - database
    devices: # HW TRANSCODING QUICKSYNC
      - /dev/dri:/dev/dri # HW TRANSCODING QUICKSYNC
    restart: always
    healthcheck:
      disable: false
    deploy:
      resources:
        limits:
          cpus: "8"

  immich-machine-learning:
    container_name: immich_machine_learning
    # image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino # HW ACCELERATION OPEN-VINO
    volumes:
      - /mnt/nvme4tb/immich/model-cache:/cache
      - /dev/bus/usb:/dev/bus/usb # HW ACCELERATION OPEN-VINO
    env_file:
      - .env
    restart: always
    healthcheck:
      disable: false
    device_cgroup_rules: # HW ACCELERATION OPEN-VINO
      - 'c 189:* rmw' # HW ACCELERATION OPEN-VINO
    devices: 
      - /dev/dri:/dev/dri # HW ACCELERATION OPEN-VINO
    deploy:
      resources:
        limits:
          cpus: "8"


  redis:
    container_name: immich_redis
    # image: registry.hub.docker.com/library/redis:6.2-alpine@sha256:84882e87b54734154586e5f8abd4dce69fe7311315e2fc6d67c29614c8de2672
    image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1
    restart: always
    healthcheck:
      test: redis-cli ping || exit 1


  database:
    container_name: immich_postgres
#    image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always


  immich-selfie-timelapse:
    image: arnaudcayrol/immich-selfie-timelapse
    container_name: immich-selfie-timelapse
    ports:
      - "5000:5000"
    volumes:
      - /mnt/nvme4tb/immich/immich_selfie_timelapse:/app/output
    environment:
      - IMMICH_API_KEY=xxxxxxxxxxxxxxxxredactedxxxxxxxxxx
      - IMMICH_BASE_URL=http://immich_server:2283/api
      - LOGLEVEL=DEBUG
      - FLASK_ENV=development
    restart: always

Your .env content

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/nvme4tb/immich

# The location where your database files are stored
DB_DATA_LOCATION=/mnt/cache_nvme/appdata/immich/postgres

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# The values below this line do not need to be changed
###################################################################################
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich


REDIS_HOSTNAME=immich_redis

# IMMICH_HOST=192.168.1.173
# IMMICH_PORT=2283

Reproduction steps

I think this is a known issue with hardware decoding, however I describe my issue and my setup and I give a sample video file, so that this may help with development or other users having this issue. When I try to transcode video, immich specifically has problems with HEVC HDR10+ video files taken on S24 Ultra phone when I enable hardware decoding. CPU is i5-13500.

Video transcoding settings as default:
No issues

Video transcoding settings as default + enable hw acceleration [quick sync]:
No issues

Video transcoding settings as deault + enable hw acceleration [quick sync] + enable hardware decoding:
Video has issues, either it hangs or the video is really jittery.

Sample video file:
https://drive.google.com/file/d/104Sk03PJ_vO0NxeK28zrnPAW2AKGYfHR/view?usp=sharing

Thanks
Mike

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    Status

    Ready

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions