Skip to content

Bundled ffmpeg 7.1.4 fails on MP4/MOV with a version-1 chnl box (Apple lpcm clips): no metadata or thumbnail #32814

Open

Description

@Abba-

I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.

  • Yes

The bug

Some Apple-made clips with lpcm audio (in our case, iPhone live-wallpaper / Live Photo motion files) carry an ISO-BMFF chnl channel-layout box with version 1. ffmpeg 7.1 treats it as fatal, so metadata extraction fails (ffprobe exited with code 1). The asset ends up with no asset_video row, no duration and no thumbnail. I had 7 in my libary.

FFmpeg fixed this upstream on 2026-05-28:

  • 95fe0658d7 "avformat/mov: don't abort on unsupported or invalid chnl boxes"
  • cd92ef77c9 "avformat/mov: add support for version 1 of chnl box"

jellyfin-ffmpeg has shipped 8.1.x, but immich-app/base-images server/packages/ffmpeg.json still pins 7.1.4-3.

Expected: update the bundled ffmpeg to jellyfin-ffmpeg 8.1.x, or backport the two commits.
Workaround: remux losslessly with ffmpeg ≥ 8 (-map 0:v -map 0:a -c copy -map_metadata 0, to .mov) and re-upload.

The OS that Immich Server is running on

Unraid 7.3.4 (Linux 6.18.58), Docker

Version of Immich Server

v3.3.5

Version of Immich Mobile App

n/a

Platform with the issue

  • Server
  • Web
  • Mobile

Device make and model

No response

Your docker-compose.yml content

# Stock release docker-compose.yml (unchanged), plus this docker-compose.override.yml:
services:
  database:
    command: ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf", "-c", "shared_preload_libraries=vchord.so"]
  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-rocm
    devices:
      - /dev/kfd
      - /dev/dri
    mem_limit: 12g        # was 10g during the incidents
  immich-server:
    devices:
      - /dev/dri:/dev/dri # VAAPI on the RX 9070 (renderD129)
    volumes:
      - /mnt/cache/appdata/immich-thumbs:/data/thumbs

Your .env content

UPLOAD_LOCATION=/mnt/user/Docs/Pics/immich
DB_DATA_LOCATION=/mnt/cache/appdata/postgresql/data
IMMICH_VERSION=release
DB_PASSWORD=xyz
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Reproduction steps

Synthetic file, no user data needed:
1. Make a normal MP4 with PCM audio (ffmpeg writes an ipcm entry with a version-0 chnl box):
   ffmpeg -f lavfi -i testsrc=d=1:s=160x120:r=10 -f lavfi -i sine=d=1 \
          -c:v libx264 -pix_fmt yuv420p -c:a pcm_s16le -ac 2 chnl-v0.mp4
2. Flip the chnl version byte to 1:
   python3 -c "b=bytearray(open('chnl-v0.mp4','rb').read()); i=b.find(b'chnl'); b[i+4]=1; open('chnl-v1.mp4','wb').write(b)"
3. Probe it with the ffprobe bundled in immich-server:
   docker cp chnl-v1.mp4 immich_server:/tmp/ && docker exec immich_server ffprobe -v error /tmp/chnl-v1.mp4
   -> fails (output below). The same file opens with FFmpeg n8.1.3. chnl-v0.mp4 opens with both.
4. Upload chnl-v1.mp4 to Immich -> AssetExtractMetadata fails with "ffprobe exited with code 1"; no thumbnail.
   Upload chnl-v0.mp4 -> processes normally.

Relevant log output

$ docker exec immich_server ffprobe -v error /tmp/chnl-v1.mp4     # ffprobe 7.1.4-Jellyfin
[mov,mp4,m4a,3gp,3g2,mj2] Unsupported 'chnl' box with version 1, flags: 0
error reading header
/tmp/chnl-v1.mp4: Invalid data found when processing input

server log on upload: AssetExtractMetadata ... ffprobe exited with code 1

Additional information

Real-world sample: an Apple lpcm clip whose stsd/lpcm/chnl box is 16 bytes, version 1, payload 11020200. I can attach it.
Checked with ffprobe 7.1.4-Jellyfin (fails) and FFmpeg n8.1.3 (BtbN build, opens). I didn test directly against the jellyfin-ffmpeg 8.1.3 build

(Disclaimer: Report written with Claude's help to identify and reproduce exact failure I experienced)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions