Server Version: 1.31.1.6733
Plex Web Version: 4.100.1
Server: Unraid 6.11.0
Intel i7 2600K
8GB RAM
NVIDIA Quadro P4000
Docker version: plexinc/pms-docker:plexpass
I’ve recently upgraded my server with a dedicate GPU for hardware transcoding.
Configuration is (afaik) correct, the NVIDIA driver is installed in Unraid and the parameters were passed to the container (--runtime=nvidia, NVIDIA_DRIVER_CAPABILITIES and NVIDIA_VISIBLE_DEVICES).
Enabling Hardware Transcoding, I’ve found the following behavior:
- Native applications on Android (smartphone and TV) and Apple TV are able to play hardware transcoded media perfectly fine
- Browsers fails to play any transcoded media (typical sample: transcoding 4K media to 1080p)
In terms of symptom, the player display a black screen with no buffering/loading icon.
From the server Dashboard, the stream is recognized as transcoded in hardware ( 4K HDR10 (HEVC Main 10) (hw) --> 1080P (H264)—Transcode (hw)) sometimes shows as buffering or playing (despite the client showing no activity.
Playing around with the settings I’ve seen the following behaviors from logs:
Error #1
Console log (Level: error): [Req#1f1a/Transcode] Unable to create output stream for transcode session, no segments found
Transcode settings:
- Transcoder quality: prefer higher quality encoding
- Transcoder temporary directory: mapped to directory on SSD
- Transcoder default throttle buffer: 60
- Background transcoding x264 preset: Medium
- Enable HDR tone mapping: Enabled
- Disable video stream transcoding: Disabled
- Use hardware acceleration when available: Enabled
- Use hardware-accelerated video encoding: Enabled
Error #2
Playing around with settings, I found that by changing Transcoder quality to Automatic, I no longer see the error in console.
However from a client perspective, the issue remains the same (black screen, no buffering icon)
Console log (Level: debug): 404 GET /video/:/transcode/universal/session/<session-id>/0/header (19 live) #5e0d1 GZIP 0ms 379 bytes (pipelined: 38)
Error #3
Changing the Transcoder quality to Make my CPU hurt gives similar 404 error as above but with different URI:
Console log (Level: debug): 404 GET /video/:/transcode/universal/session/dv3690d5t1oub03zkknd11x9/base/00000.ts (18 live) #7b5b GZIP 0ms 379 bytes (pipelined: 17)
Unfortunately most of my 4K media is x265, so I have not been able to try x264 4k to 1080p transcoding.
However while testing transcoding of x264, from 1080p to 1080p lower bitrate, I’ve seen strange behavior where the Transcoding hangs with buffering icon, but the server dashboard reports no Hardware transcoding is happening: 1080p (H.264) --> 1080P (H264)—Transcode.
Logs show:
[Req#fd02/Transcode/smg1ly9ig8zxjfncytzgb9lu/85d8d014-2e25-4994-91ba-445d0ecd126f] Transcoder segment range: 0 - 67 (66)
[Req#fcf1/Transcode/smg1ly9ig8zxjfncytzgb9lu/85d8d014-2e25-4994-91ba-445d0ecd126f] Session smg1ly9ig8zxjfncytzgb9lu (3) is throttling
[Req#fd0c/Transcode/smg1ly9ig8zxjfncytzgb9lu/85d8d014-2e25-4994-91ba-445d0ecd126f] Throttle - Going into sloth mode.
Client remains in buffering indefinitely.
Hardware Transcoding appears broken (at least on my setup) for browsers.
FWIW, I’ve also tried option Use alternate streaming protocol for video playback - either enabled/disabled does not show any improvement.
Obviously I have not played around with all permutations of the options (as I would like to understand what the problem is).
Despite some potential limitation on my hardware due to sub-optimal choices, it does not explain why Hardware Transcoding works fine on native apps vs browsers.
Searching the web for these errors/behaviors have not led me to any resolution.
Anyone here faced similar issues or has some insight to share on where to search next?