Overview:
When attempting to play HEVC transcoded video content on an Apple TV 4K using the modern “Enhanced Player,” the Plex client requests a transcode from the server but provides a faulty profile override. This override forces the server to package the HLS stream into an MKV container, which is incompatible with the native tvOS player, resulting in an infinite buffering loop where playback never starts. Direct Play of existing HEVC MKV files works correctly, proving the player can handle the container, just not within an HLS stream.
Platform & Version Information:
-
Server Platform: Linux (Ubuntu)
-
Plex Media Server Version: 1.43.0.10231
-
Client Device: Apple TV 4K
-
Plex for Apple TV App Version: 8.45 (8.45.9684)
-
tvOS Version: 26.0.1
-
Source Media: AV1 video, DTS audio, in an MKV container.
Steps to Reproduce:
-
On a Plex Media Server, have a library with video files encoded with the AV1 video codec.
-
On an Apple TV 4K, open the Plex app (v8.45 or similar) with the “Use Enhanced Player” setting enabled.
-
Attempt to play an AV1 video file.
-
Observe that the server begins transcoding the file (from AV1 to HEVC).
-
Observe that the Plex client on the Apple TV shows a loading spinner indefinitely and playback never begins.
Expected Result:
The AV1 video should be transcoded by the server to HEVC in a compatible container (mpegts for HLS), and playback should begin on the Apple TV client within a few seconds.
Actual Result:
The client buffers forever and the video never plays.
Technical Root Cause Analysis & Evidence:
This issue has been traced to a hardcoded profile that the Plex for Apple TV client sends to the server, which overrides any server-side profiles. This “augmentation data” contains an incompatible container/protocol combination.
1. The Client’s Flawed Request:
The client log clearly shows it sending a request to the server with an X-Plex-Client-Profile-Extra parameter. This parameter incorrectly specifies container=mkv for an hls protocol stream and forces the server to use it via replace=true.
From the Apple TV Client Log:
codeCode
GET /video/:/transcode/universal/decision?...&protocol=hls&...
X-Plex-Client-Profile-Extra=add-transcode-target(type=videoProfile&context=streaming&protocol=hls&container=mkv...&replace=true)
2. The Server’s Compliant Response:
The Plex Media Server correctly obeys this command. The transcode session event shows the server is creating a stream with the exact faulty parameters requested by the client.
From the Apple TV Client Log (receiving a server event):
codeCode
Event received (transcodeSession.start): {
...
"videoDecision": "transcode",
"protocol": "hls",
"container": "mkv",
"videoCodec": "hevc",
...
}
3. The Player’s Fatal Error:
The client’s internal player (MPV/FFmpeg) receives the HLS stream but cannot parse the MKV data within it. The player’s HLS demuxer expects MPEG-TS segments. When it receives MKV data instead, it fails with a fatal error, causing the endless buffer.
From the Apple TV Client Log:
codeCode
error: matroska,webm: Unknown element 1F43B675 at pos. 0x54d5d6 with length 0xecdd considered as invalid data. Last known good position 0x880e07, 87 unknown elements in a row
This error is the final point of failure. The player is trying to interpret an MKV file segment as if it were a simple transport stream, which is impossible.
Additional Findings (Using the “Old” Player):
As a test, switching off the “Enhanced Player” provides a different result.
-
Result: The AV1 video successfully transcodes and plays.
-
Problem: It transcodes to H.264, not the more efficient HEVC.
-
Reason: The server logs confirm that the old player also sends a profile override, but this one hardcodes videoCodec=h264, preventing the server from choosing HEVC.
Workarounds Attempted:
Extensive custom server-side tvOS.xml profiles were created to try and force a correct transcode target (e.g., protocol=hls, container=mpegts, codec=hevc). All attempts failed because the client’s hardcoded profile includes the replace=true parameter, causing the server to completely ignore the custom profiles.
Suggested Resolution:
The hardcoded profile within the Plex for Apple TV application needs to be corrected. When the client requests a transcode using the HLS protocol, the container parameter in the X-Plex-Client-Profile-Extra data must be changed from mkv to mpegts. This will produce a stream that is compliant with Apple’s HLS specification and playable by the underlying tvOS video player.
Thank you for your attention to this issue. The logs clearly show this is a client-side bug that cannot be fixed with server-side configuration.