Skip to content

Chromecast Ultra wrongly transcodes HEVC 10-bit HDR MKV instead of Direct Play #863

@Usak

Description

@Usak

Describe the bug:

When casting 4K HEVC Main10 HDR MKV files (with EAC3/AC3 audio) from Jellyfin to a Chromecast Ultra, the server always transcodes video and audio, even though the device natively supports these formats.

This results in massive CPU usage on low-power servers (Raspberry Pi 5 in my case) and unplayable performance, despite the media being fully compatible with the Chromecast Ultra.

Plex on the same setup (same file, same Chromecast Ultra) direct plays without transcoding, confirming that the issue is with Jellyfin’s Chromecast profile being too restrictive.

Reproduction steps

  1. Use Jellyfin 10.10.7 with Docker on Raspberry Pi 5
  2. Add a 4K HEVC Main10 HDR MKV (BT.2020, SMPTE2084, 10-bit) with AC3/EAC3 audio
  3. Cast it to a Chromecast Ultra (2016 model, HDMI)
  4. Observe transcoding (video → H.264, audio → AAC stereo) instead of direct play

Expected behavior

Jellyfin should allow Direct Play of HEVC Main10 HDR MKV with AC3/EAC3 audio on Chromecast Ultra, since the device supports:

  • HEVC (H.265) up to 4K
  • 10-bit color depth
  • HDR10
  • EAC3 / AC3 passthrough

Actual behavior

Jellyfin forces transcoding of video (HEVC → H.264)
Jellyfin forces downmixing audio (EAC3/AC3 → AAC stereo)
This creates unnecessary CPU load and poor playback on servers without hardware transcoding

Logs / FFmpeg command

Jellyfin launches ffmpeg with:
/usr/lib/jellyfin-ffmpeg/ffmpeg -i "FileName.mkv" -codec:v libx264 ...
Even though the file is fully playable on Chromecast Ultra if streamed directly.

Environment

  • Jellyfin Server 10.10.7
  • Docker on Raspberry Pi 5 (Debian 12 arm64)
  • Chromecast Ultra (2016 HDMI model, firmware up to date)
  • Jellyfin webOS / Android app → Cast to Chromecast Ultra

Additional context

This looks like a Chromecast profile issue: the Jellyfin Chromecast profile is too strict, disallowing HEVC/HDR10 for Ultra devices, and forcing transcoding unnecessarily.

👉 Plex demonstrates this exact file can be Direct Played on Chromecast Ultra without any transcoding, so the limitation comes from Jellyfin’s implementation, not from the device itself.

It would be very useful if Jellyfin could align Chromecast profiles with actual device capabilities, similar to Plex’s behavior, to avoid wasteful transcoding and make Raspberry Pi setups viable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions