Hardware Transcoding for Downloads?

Just upgraded my W11 server hardware to get a CPU that hardware transcodes HEVC. It works great when watching shows and movies directly, the CPU isn’t used at all as expected.

If I try to download the same movie/show at the same quality to my Android phone, the CPU goes to a steady 60 percent for the entire download. Why is that? Does the download feature not use HW encoding?

1 Like

Chances are, it has to perform HDR/SDR tone mapping and/or audio conversion as well.
And keeping up with the speed of the hardware transcoder can still create significant load.

The file I’m downloading is the same one I play on Android. No HDR involved. It does have to transcode DTS 5.1 to OPUS but it does that when I’m playing it also. I figured behavior would be same streaming vs downloading.

I guess it just has to do with buffering while streaming that works differently when downloading? When streaming I get CPU spike for the 60 second buffer then it goes to nothing. For the download the spike just stays where it is the entire time.

1 Like

Further diagnosis can only be done with server debug logs.
Enable debug logging in the server settings,
stop and restart the server
recreate the situation with a transcoding download, let it run for a few minutes.
Then fetch the logs.

Followed steps above. Logs attached

Plex Media Server Logs_2025-02-10_08-39-31.zip (640.5 KB)

Looks quite as expected. With Quicksync hardware support.

Feb 10, 2025 08:34:35.239 [1456] DEBUG - [Req#11d/Transcode] MDE: Role Models (2008): selected media 0 / 2425
Feb 10, 2025 08:34:35.240 [1456] DEBUG - [Req#11d/Transcode] Streaming Resource: Added session 0000018893A06760:7e1273fc-19e4-4cf5-a961-bddc12dba196
Feb 10, 2025 08:34:35.240 [1456] DEBUG - [Req#11d/Transcode] Cleaning directory for session f8ad25d4d3f71fe0cf98bf2491e67e59bc249155 ()
Feb 10, 2025 08:34:35.240 [1456] DEBUG - [Req#11d/Transcode] Starting a transcode session f8ad25d4d3f71fe0cf98bf2491e67e59bc249155 at offset -1.0 (state=3)
Feb 10, 2025 08:34:35.241 [1456] DEBUG - [Req#11d/Transcode] TPU: hardware transcoding: using hardware decode accelerator d3d11va
Feb 10, 2025 08:34:35.241 [1456] DEBUG - [Req#11d/Transcode] TPU: hardware transcoding: zero-copy support present
Feb 10, 2025 08:34:35.241 [1456] DEBUG - [Req#11d/Transcode] TPU: hardware transcoding: using zero-copy transcoding
Feb 10, 2025 08:34:35.241 [1456] DEBUG - [Req#11d/Transcode] [Universal] Using local file path instead of URL: H:\Network\Movies\Role Models (2008)\Role Models (2008).mkv
Feb 10, 2025 08:34:35.241 [1456] DEBUG - [Req#11d/Transcode] TPU: hardware transcoding: final decoder: d3d11va, final encoder: qsv
Feb 10, 2025 08:34:35.242 [1456] DEBUG - [Req#11d/Transcode/JobRunner] Job running: set "FFMPEG_EXTERNAL_LIBS=\\\\?\\C\:\\PlexData\\Plex\ Media\ Server\\Codecs\\e613bce-97f23d579c1001d8e9cc0d2e-windows-x86_64\\" & set "X_PLEX_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" & "C:\Program Files\Plex\Plex Media Server\Plex Transcoder.exe" -codec:0 h264 -hwaccel:0 d3d11va -hwaccel_fallback_threshold:0 10 -hwaccel_output_format:0 d3d11 -hwaccel_device:0 d3d11va -extra_hw_frames 80 -codec:1 dca -analyzeduration 20000000 -probesize 20000000 -i "H:\Network\Movies\Role Models (2008)\Role Models (2008).mkv" -filter_complex [0:0]hwmap[0];[0]vpp_qsv=w=480:h=258:format=nv12[1] -map [1] -metadata:s:0 language=eng -codec:0 h264_qsv -b:0 416k -maxrate:0 555k -bufsize:0 1110k -forced_idr:0 1 -r:0 23.975999999999999 -filter_complex "[0:1] aresample=async=1:ochl='stereo':rematrix_maxval=0.000000dB:osr=48000[2]" -map [2] -codec:1 libopus -b:1 130k -f matroska -strip_dovi 1 -map_metadata -1 -map_chapters -1 Output.mkv -init_hw_device d3d11va=d3d11va:0 -init_hw_device qsv=qsv@d3d11va -filter_hw_device qsv -y -nostats -loglevel quiet -loglevel_plex error -progressurl http://127.0.0.1:32400/video/:/transcode/session/f8ad25d4d3f71fe0cf98bf2491e67e59bc249155/3678429f-2832-46b9-babe-1a5e3aec036f/progress
Feb 10, 2025 08:34:35.242 [1456] DEBUG - [Req#11d/Transcode/JobRunner] In directory: "R:\PlexTranscode\Transcode\Sessions\plex-transcode-f8ad25d4d3f71fe0cf98bf2491e67e59bc249155-3678429f-2832-46b9-babe-1a5e3aec036f"

Side note: you may want to remove the bundle folders for the obsolete plugins RetroArcher and WebTools.

Thanks for looking Otto. I figured the Clear Unused bundles function would get rid of old stuff but I’ll get rid of them manually.

As far as downloads I guess it is what it is. I’ll expect CPU to be in use for the whole process.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.