QNAP TVS-h1688x won't hw transcode with nvidia driver installed without gpu

Server Version#: 1.25.2.5319
Player Version#: Plex Web 4.66.1

The server running Plex has an Intel Xeon W-1250 processor that will do HW transcoding. I was able to verify it was performing HW transcoding and could transcode real-time around 24 Mbps combined across streams without buffering issues. I wanted to improve performance and tested an Nvidia GTX 2070 Super. The server forced loading of the Nvidia GPU driver 5.0.4 and NvKernelDriver 5.0.0.1856.

In running the test, the card was placed in QTS mode on the server and was not used for any transcoding. I tried several tests at different resolutions and it kept the transcoding on the CPU. This card was not listed as compatible with the server so this was mainly a test to see if it would do it or not. It would not. I wouldn’t say that was a failed test since this card exceeded the specs of anything listed as compatible.

With the card removed, the server would no longer perform HW transcoding as evidenced by both the Plex dashboard and the CPU workload, which indicated software transcoding. While investigating, I recalled the installation of the Nvidia driver. I then uninstalled it through the QNAP app center, but had no option to uninstall NvKernelDriver. After uninstalling the Nvidia driver, the system was again performing HW transcoding at the previous rate.

I have some questions:

  1. Does anyone know why the system would not HW transcode with the Nvidia driver installed without a GPU? I assume this is either a Plex or QNAP bug.
  2. Does anyone know why the more advanced GPU would not work other than a potential driver issue? I have a compatible GPU coming that I will install and test next week. I’m concerned there could be some other issue that may prevent success.
  3. With a compatible GPU, if the streams exceed the capacity of the GPU, will the system then also make use of the CPU for additional transcoding streams? Would this be automatic or is configuration required?

Thanks for the help.

On QNAP, the start script is responsible for determining if a GPU card is present and can be given to PMS to use. Whether or not that GPU is actually used depends on the NAS CPU and/or the user’s Preferences.xml file.

There are 4 conditions which must be satisified

In order for the Nvidia card to be used -

  1. GPU card detected ?
  2. Is it Nvidia ?
  3. Is the card in QTS mode ?
  4. Are the drivers loaded ?

When these conditions are satisfied, plex.sh tells PMS where the GPU card is.
PMS will make the final determination as to its viability for transcoding.

In all QNAP systems where QSV (CPU-based hardware transcoding) exists

  1. The CPU is the default transcoding device at file node /dev/dri/renderD128
  2. Any additional GPU card(s) are added by QTS beginning with /dev/dri/renderD129

To answer your questions:

If Preferences.xml has specified /dev/dri/renderD129 (the card’s addresss) without the card being present, the transcoder will fall back to software transcoding.

The encode/decode viability is determined by querying the Nvidia drivers. GPUs and their capabilities follow this chart

Lastly,

There is no automatic fallback to the CPU’s QSV.

Your initial performance measurement shows a very low-performing overall situation because the Nvidia GPU as well as the Q-1250 QSV can perform far in excess of 24 Mbps output.

The way to move forward with determining the problem is by inspection.

  1. Settings - Server - General - Show Advanced
    – Verify DEBUG logging enabled
    – Verify VERBOSE logging disabled
    – SAVE button if changes made

  2. Start playback and run for 30 seconds

  3. Wait 20 seconds after stopping playback then download logs (Settings - Server - Troubleshooting - Download Logs)

  4. Attach the ZIP file here for review.

@ChuckPa thanks for the response.

Yes to all when I tested the GPU, but it wasn’t on the compatible list. I didn’t expect it to work for that card, just wanted to test it.

I’ve been wondering about that. Any assistance to bring out the beast would be most appreciated. :smiley: The card that’ll be here in a few days is a GIGABYTE GeForce GTX 1650 OC 4G. My hope is that it’ll improve transcoding performance over the CPU, assuming there are no performance issues on either side (as noted above). Any insights there regarding a straight up comparison of the Xeon CPU vs the GTX 1650 GPU for transcoding would be helpful.

I’ve attached the logs. Thanks again for the help.

@Aquaman

Let me first, in case you don’t know, tell you what your CPU with its integrated QSV ASIC (HW transcoding) can do:

  1. almost 14,000 Passmarks (an i7-7700 is onlu 8800 Passmarks)
  1. It has the P630 (equivalent of the UHD630) GPU
  1. In a nutshell,
    – 6 simultaneous HW transcodes of 30+ Mbps video before you start running out of QSV
    – Enough CPU power to burn subtitles and convert audio for at least 4 simultaneous streams at that 30 Mbps rate. Burning subtitles is hard so drop one of those and you’d get all 6 audio streams converted too if needed.

  2. All this runs in the main memory of your QNAP. If you have 128GB of RAM, you’re NEVER going to run out of transcoding memory like you would on a GPU card.

  3. I have the predecessor to yours . I have the TVS-1282-i7-64GB. The specs I quote above are what I achieve.

Regarding your logs and what I see in them

  1. The QSV is capable of transcoding well over 100 Mbps of video / sec. You are giving it 2.5 Mbps here and then having it further reduced to 2 Mbps (the default on the player apps) … IMHO, you should not be watching such crappy video. I stream 180 Mbps video rips without blinking. I think you’d want / expect that level of performance ?
Dec 26, 2021 10:00:20.044 [0x7f26b47b9b38] VERBOSE - [Transcode] It took 0.0 sec to serialize a list with 1 elements.
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] Scaled up video bitrate to 3750Kbps based on 1.500000x fudge factor.
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Selected protocol dash; container: mp4
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: analyzing media item 7223
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: Direct Play is disabled
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: media must be transcoded in order to use the dash protocol
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: no direct play video profile exists for mp4/mp4/h264
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: no direct play video profile exists for mp4/mp4/h264/aac
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] Sherlock Holmes - video.bitrate limitation applies: 2500 > 2000
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: Direct Streaming is disabled, so video stream will be transcoded
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: no remuxable profile found, so video stream will be transcoded
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Cannot direct stream video stream due to profile or setting limitations
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] Scaled up video bitrate to 3750Kbps based on 1.500000x fudge factor.
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: Audio Direct Streaming is disabled, so video's audio stream will be transcoded
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Cannot direct stream audio stream due to profile or setting limitations
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: selected media 0 / 7223
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] Streaming Resource: Calculated bandwidth of 2369kbps exceeds bandwidth limit. Changing decision parameters provided by client to fit bandwidth limit of 2000kbps
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] Streaming Resource: Determining preferred transcode encoders through transcode only decision.
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] Scaled up video bitrate to 3750Kbps based on 1.500000x fudge factor.
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] Scaled up video bitrate to 3750Kbps based on 1.500000x fudge factor.
Dec 26, 2021 10:00:20.045 [0x7f26b47b9b38] DEBUG - [Transcode] Streaming Resource: Reducing playback quality for 1904kbps stream bitrate: video resolution to 720x406, audio channels to 2, quality to 41
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] Scaled up video bitrate to 3750Kbps based on 1.500000x fudge factor.
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] Scaled maximum bitrate for resolution reduction to 1183Kbps.
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Selected protocol dash; container: mp4
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: analyzing media item 7223
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: Direct Play is disabled
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: media must be transcoded in order to use the dash protocol
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: no direct play video profile exists for mp4/mp4/h264
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: no direct play video profile exists for mp4/mp4/h264/aac
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] Sherlock Holmes - video.bitrate limitation applies: 2500 > 2000
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: Direct Streaming is disabled, so video stream will be transcoded
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: no remuxable profile found, so video stream will be transcoded
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Cannot direct stream video stream due to profile or setting limitations
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] Scaled up video bitrate to 3750Kbps based on 1.500000x fudge factor.
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] Scaled maximum bitrate for resolution reduction to 1183Kbps.
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: Audio Direct Streaming is disabled, so video's audio stream will be transcoded
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Cannot direct stream audio stream due to profile or setting limitations
Dec 26, 2021 10:00:20.046 [0x7f26b47b9b38] DEBUG - [Transcode] MDE: Sherlock Holmes: selected media 0 / 7223
  1. I accept storage is limitation but in that NAS, with all drives as 1 volume, you’re looking at 12 3.5" HDD bays, you should minimally have about 85TB of usable storage with all 12 drives in the volume. (I have 8 x 8TB and get 51TB after RAID setup and formatting)

  2. I’m curious why your files are so small. Perhaps you didn’t realize what a beast you have on your hands ?

  3. Things that will limit your experience – Networking and the players/TVs.

Your server is solid but if the players are ā€œcrapā€ then you’ll get ā€œcrapā€. No GPU card can help that.

Lastly, regarding your initial complaint of not being able to HW transcode with the GPU pulled out.

  • My first question – Have you edited / customized your Preferences.xml to point it directly at the Nvidia GPU card ?

Clearly.

There is no shortage of space.

I tested a smaller 4K file.

There aren’t really any internal network limitations. I’ve trunked the two 10Gbps ports to a 10Gbps switch for 20Gbps and have a dedicated WiFi6 WAP with a 2.5Gbps port that the system that ran the test is connected to. The players are mostly 4K fire TV devices. The Cube plays it well but the stick seems to struggle sometimes. There was some stuttering on the 4K transcoded playback for the test from a laptop that I submitted the logs for.

I have not edited the Preferences.xml file that I recall. I checked it and there is no reference to ā€˜renderD’. There is also no video card installed currently.

One change that I made was to use a RAMdisk for transcoding. I attempted mounting tmpfs but was unable to make it persistent across reboots and had to manually add the mount each time. I’ve instead started using a preexisting 64GB tmpfs mount in /dev/shm and that seems to be working fairly well. I did notice a slight performance boost when I made that change, but nothing along the lines of what you’re stating I should be getting. That was before getting 24Mbps.

Here’s a known good test file.

Please create a shared folder for it . Name it whatever you like

After placing the file,

  1. Create a new library section – Type ā€œOther Videosā€
  2. Add the folder which contains this test video.
  3. After Plex is done, Play the video
  4. Download the logs ZIP file and attach here.

Ran it, but for 4K conversion it only showed 1.5Mbps.

Log files please?

I need to see what’s happening. That video is far more than 1.5 Mbps.

Here’s another segment for you. 54 Mbps

Complete name                            : ChuckPa-test.mkv
Format                                   : Matroska
Format version                           : Version 4
File size                                : 1.89 GiB
Duration                                 : 5 min 0 s
Overall bit rate mode                    : Variable
Overall bit rate                         : 54.1 Mb/s

@ChuckPa logs are attached for prior run ā€˜12-26’ and this last file ā€˜12-29’. On the prior run, I was able to select resolution to stream, but I wasn’t able to select it on this last file.

I’ve reduced the logs to what I think you need. If you need other elements, let me know and I’ll include them.

Future reference, Please don’t enable VERBOSE unless requested . This includes transcoder logging as well.

Log 26-Dec-2021 shows QSV HW transcoding is engaged.

Dec 26, 2021 17:52:02.692 [0x7f26b5370b38] VERBOSE - [Transcode] [FFMPEG] - VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 21.3.5 (a51add3).
Dec 26, 2021 17:52:02.692 [0x7f26b5370b38] VERBOSE - [Transcode] [FFMPEG] - Driver not found in known nonstandard list, using standard behaviour.
Dec 26, 2021 17:52:02.692 [0x7f26b5370b38] DEBUG - [Transcode] [FFMPEG] - Created surface 0.
Dec 26, 2021 17:52:02.692 [0x7f26b5370b38] DEBUG - [Transcode] [FFMPEG] - Direct mapping possible.
Dec 26, 2021 17:52:02.692 [0x7f26b5370b38] DEBUG - [Transcode] TPU: hardware transcoding: final decoder: vaapi, final encoder: vaapi
Dec 26, 2021 17:52:02.693 [0x7f26b5370b38] VERBOSE - [Transcode] Sufficient disk space: 206.01kB source file, 62.83GB capacity, 62.83GB available on "/dev/shm/Transcode/Sessions"
Dec 26, 2021 17:52:02.693 [0x7f26b5370b38] DEBUG - [Transcode/JobRunner] Job running: EAE_ROOT='/share/ZFS2_DATA/.qpkg/PlexMediaServer/Library/tmp/pms-f76c14ef-1a96-4f3d-bfb4-89baf44c1488/EasyAudioEncoder' FFMPEG_EXTERNAL_LIBS='/share/ZFS2_DATA/.qpkg/PlexMediaServer/Library/Plex\ Media\ Server/Codecs/...-linux-x86_64/' LIBVA_DRIVERS_PATH='/share/ZFS530_DATA/.qpkg/PlexMediaServer/lib/dri' X_PLEX_TOKEN='xxxxxxxxxxxxxxxxxxxx' '/share/ZFS530_DATA/.qpkg/PlexMediaServer/Plex Transcoder' '-codec:0' 'hevc' '-hwaccel:0' 'vaapi' '-hwaccel_fallback_threshold:0' '10' '-hwaccel_output_format:0' 'vaapi' '-hwaccel_device:0' 'vaapi' '-codec:1' 'truehd_eae' '-eae_prefix:1' 'vq4oacuqb0htqptats4hvij5_' '-analyzeduration' '20000000' '-probesize' '20000000' '-i' '/share/ZFS26_DATA/MediaFiles/Videos/Test-File-Abominable (2019).mkv' '-filter_complex' '[0:0]hwupload[0];[0]scale_vaapi=w=2276:h=1280:format=p010[1];[1]hwdownload[2];[2]format=p010,tonemap=mobius[3];[3]hwupload[4]' '-map' '[4]' '-codec:0' 'h264_vaapi' '-b:0' '1214k' '-maxrate:0' '1619k' '-bufsize:0' '3238k' '-r:0' '23.975999999999999' '-force_key_frames:0' 'expr:gte(t,n_forced*1)' '-filter_complex' '[0:1] aresample=async=1:ocl='\''stereo'\'':rematrix_maxval=0.000000dB:osr=48000[5]' '-map' '[5]' '-metadata:s:1' 'language=eng' '-codec:1' 'aac' '-b:1' '256k' '-f' 'dash' '-seg_duration' '1' '-dash_segment_type' 'mp4' '-init_seg_name' 'init-stream$RepresentationID$.m4s' '-media_seg_name' 'chunk-stream$RepresentationID$-$Number%05d$.m4s' '-window_size' '5' '-delete_removed' 'false' '-skip_to_segment' '1' '-time_delta' '0.0625' '-manifest_name' 'http://127.0.0.1:32400/video/:/transcode/session/vq4oacuqb0htqptats4hvij5/fe0334ed-ac24-4a0f-8543-a4c7ad91c2d1/manifest?X-Plex-Http-Pipeline=infinite' '-avoid_negative_ts' 'disabled' '-map_metadata' '-1' '-map_chapters' '-1' 'dash' '-start_at_zero' '-copyts' '-vsync' 'cfr' '-init_hw_device' 'vaapi=vaapi:' '-filter_hw_device' 'vaapi' '-y' '-nostats' '-loglevel' 'quiet' '-loglevel_plex' 'error' '-progressurl' 'http://127.0.0.1:32400/video/:/transcode/session/vq4oacuqb0htqptats4hvij5/fe0334ed-ac24-4a0f-8543-a4c7ad91c2d1/progress'
Dec 26, 2021 17:52:02.693 [0x7f26b5370b38] DEBUG - [Transcode/JobRunner] Jobs: Starting child process with pid 32710
Dec 26, 2021 17:52:02.697 [0x7f26b9b3db38] DEBUG - Request: [127.0.0.1:33642 (Loopback)] PUT /video/:/transcode/session/v

29-Dec-2021 logs also show QSV HW transcoding after the pre-roll

Dec 29, 2021 13:27:26.399 [0x7f5edb6efb38] DEBUG - [Transcode] Codecs: hardware transcoding: testing API vaapi
Dec 29, 2021 13:27:26.400 [0x7f5edb6efb38] DEBUG - [Transcode] TPU: hardware transcoding: final decoder: vaapi, final encoder: vaapi
Dec 29, 2021 13:27:26.400 [0x7f5edb6efb38] VERBOSE - [Transcode] Sufficient disk space: 773B source file, 62.83GB capacity, 62.83GB available on "/dev/shm/Transcode/Sessions"
Dec 29, 2021 13:27:26.400 [0x7f5edb6efb38] DEBUG - [Transcode/JobRunner] Job running: FFMPEG_EXTERNAL_LIBS='/share/ZFS2_DATA/.qpkg/PlexMediaServer/Library/Plex\ Media\ Server/Codecs/...-linux-x86_64/' LIBVA_DRIVERS_PATH='/share/ZFS530_DATA/.qpkg/PlexMediaServer/lib/dri' X_PLEX_TOKEN='xxxxxxxxxxxxxxxxxxxx' '/share/ZFS530_DATA/.qpkg/PlexMediaServer/Plex Transcoder' '-codec:0' 'vp9' '-hwaccel:0' 'vaapi' '-hwaccel_fallback_threshold:0' '10' '-hwaccel_output_format:0' 'vaapi' '-hwaccel_device:0' 'vaapi' '-codec:1' 'aac' '-analyzeduration' '20000000' '-probesize' '20000000' '-i' '/storage/pre-roll/Plex.Logo.Preroll.[4K.HDR].mkv' '-filter_complex' '[0:0]hwupload[0];[0]scale_vaapi=w=718:h=404:format=p010[1];[1]hwdownload[2];[2]format=p010,tonemap=mobius[3];[3]hwupload[4]' '-map' '[4]' '-codec:0' 'h264_vaapi' '-b:0' '1302k' '-maxrate:0' '1736k' '-bufsize:0' '3472k' '-r:0' '25' '-force_key_frames:0' 'expr:gte(t,n_forced*8)' '-filter_complex' '[0:1] aresample=async=1:ocl='\''stereo'\'':rematrix_maxval=0.000000dB:osr=44100[5]' '-map' '[5]' '-codec:1' 'aac' '-b:1' '164k' '-f' 'dash' '-seg_duration' '8' '-dash_segment_type' 'mp4' '-init_seg_name' 'init-stream$RepresentationID$.m4s' '-media_seg_name' 'chunk-stream$RepresentationID$-$Number%05d$.m4s' '-window_size' '5' '-delete_removed' 'false' '-skip_to_segment' '1' '-time_delta' '0.0625' '-manifest_name' 'http://127.0.0.1:32400/video/:/transcode/session/wdkezrvphzqlj5xfzx9jba7s/531a8914-75ba-4d65-99e3-cd52286390ed/manifest?X-Plex-Http-Pipeline=infinite' '-avoid_negative_ts' 'disabled' '-map_metadata' '-1' '-map_chapters' '-1' 'dash' '-start_at_zero' '-copyts' '-vsync' 'cfr' '-init_hw_device' 'vaapi=vaapi:' '-filter_hw_device' 'vaapi' '-y' '-nostats' '-loglevel' 'quiet' '-loglevel_plex' 'error' '-progressurl' 'http://127.0.0.1:32400/video/:/transcode/session/wdkezrvphzqlj5xfzx9jba7s/531a8914-75ba-4d65-99e3-cd52286390ed/progress'
Dec 29, 2021 13:27:26.400 [0x7f5edb6efb38] DEBUG - [Transcode/JobRunner] Jobs: Starting child process with pid 688

Yep, it’s doing the HW transcoding without the card installed after I uninstalled the nvidia driver. Probably due to a statement in the preferences.xml file.

But as you noted before, the 24Mbps limit is very low for this server. Any way to improve that?

The player app quality settings are asserting limits causing it to scale down.

Dec 29, 2021 13:27:26.181 [0x7f5edb147b38] DEBUG - [Transcode] Scaled maximum bitrate for resolution reduction to 2875Kbps.
Dec 29, 2021 13:27:26.181 [0x7f5edc018b38] DEBUG - Completed: [10.205.138.17:64407] 200 GET /status/sessions (14 live) TLS GZIP 0ms 1458 bytes (pipelined: 2)
Dec 29, 2021 13:27:26.181 [0x7f5edafafb38] DEBUG - PlayQueue: total generated: 1, before cursor: 0, after cursor: 2
Dec 29, 2021 13:27:26.181 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Selected protocol dash; container: mp4
Dec 29, 2021 13:27:26.181 [0x7f5edb147b38] DEBUG - [Transcode] MDE: analyzing media item 38457
Dec 29, 2021 13:27:26.181 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Plex.Logo.Preroll.[4K.HDR]: Direct Play is disabled
Dec 29, 2021 13:27:26.181 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Plex.Logo.Preroll.[4K.HDR]: media must be transcoded in order to use the dash protocol
Dec 29, 2021 13:27:26.181 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Plex.Logo.Preroll.[4K.HDR]: no direct play video profile exists for http/mkv/vp9
Dec 29, 2021 13:27:26.181 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Plex.Logo.Preroll.[4K.HDR]: no direct play video profile exists for http/mkv/vp9/aac
Dec 29, 2021 13:27:26.181 [0x7f5edb147b38] DEBUG - [Transcode] Plex.Logo.Preroll.[4K.HDR] - video.bitDepth limitation applies: 10 > 8
Dec 29, 2021 13:27:26.181 [0x7f5edafafb38] DEBUG - PlayQueue: No need to refresh, active window is operational.
Dec 29, 2021 13:27:26.181 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Plex.Logo.Preroll.[4K.HDR]: no remuxable profile found, so video stream will be transcoded
Dec 29, 2021 13:27:26.182 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Cannot direct stream video stream due to profile or setting limitations
Dec 29, 2021 13:27:26.182 [0x7f5edb147b38] DEBUG - [Transcode] Codecs: testing vp9 (decoder) with hwdevice vaapi
Dec 29, 2021 13:27:26.182 [0x7f5edb147b38] DEBUG - [Transcode] Codecs: hardware transcoding: testing API vaapi
Dec 29, 2021 13:27:26.182 [0x7f5edb147b38] DEBUG - [Transcode] Codecs: Testing with profile 'Profile 2'
Dec 29, 2021 13:27:26.182 [0x7f5edb147b38] DEBUG - [Transcode] Scaled up video bitrate to 82233Kbps based on 4.500000x fudge factor.
Dec 29, 2021 13:27:26.182 [0x7f5edb147b38] DEBUG - [Transcode] Scaled maximum bitrate for resolution reduction to 2875Kbps.
Dec 29, 2021 13:27:26.183 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Plex.Logo.Preroll.[4K.HDR]: Audio Direct Streaming is disabled, so video's audio stream will be transcoded
Dec 29, 2021 13:27:26.183 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Cannot direct stream audio stream due to profile or setting limitations
Dec 29, 2021 13:27:26.183 [0x7f5edb147b38] DEBUG - [Transcode] MDE: Plex.Logo.Preroll.[4K.HDR]: selected media 0 / 38457
Dec 29, 2021 13:27:26.183 [0x7f5edb147b38] DEBUG - [Transcode] Streaming Resource: Adding session 0x7f5edbbf6608:client3 which is using transcoder slot.  Used slots is now 1
Dec 29, 2021 13:27:26.183 [0x7f5edb147b38] DEBUG - [Transcode] Streaming Resource: Added session 0x7f5edbbf6608:client3
Dec 29, 2021 13:27:26.183 [0x7f5edb147b38] DEBUG - [Transcode] Streaming Resource: Reached Decision id=24742 codes=(General=1001,Direct play not available; Conversion OK. Direct Play=3000,App cannot direct play this item. Direct play is disabled. Transcode=1001,Direct play not available; Conversion OK.) media=(id=38457 part=(id=38648 decision=transcode container=mp4 protocol=dash streams=(Video=(id=99990 decision=transcode bitrate=1736 encoder=h264_vaapi width=718 height=404) Audio=(id=99991 decision=transcode bitrate=164 encoder=aac channels=2 rate=44100))))
Dec 29, 2021 13:27:26.183 [0x7f5edb147b38] VERBOSE - It took 0.0 sec to serialize a list with 1 elements.

Notice it is scaled down to 2875 kbps.

And here.

Dec 29, 2021 13:27:26.191 [0x7f5edb6efb38] DEBUG - [Transcode] Codecs: testing h264 (decoder) with hwdevice vaapi
Dec 29, 2021 13:27:26.191 [0x7f5edb6efb38] DEBUG - [Transcode] Codecs: hardware transcoding: testing API vaapi
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] Codecs: Testing with profile 'Main'
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] Scaled up video bitrate to 21064Kbps based on 1.500000x fudge factor.
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: Selected protocol dash; container: mp4
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: analyzing media item 38458
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: The_goats: Direct Play is disabled
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: The_goats: media must be transcoded in order to use the dash protocol
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: The_goats: no direct play video profile exists for http/mp4/h264
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: The_goats: no direct play video profile exists for http/mp4/h264/aac
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] The_goats - video.bitrate limitation applies: 14043 > 2000
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] The_goats - video.bitrate limitation applies: 14043 > 2000
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: The_goats: no remuxable profile found, so video stream will be transcoded
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] The_goats - video.bitrate limitation applies: 14043 > 2000
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: Cannot direct stream video stream due to profile or setting limitations
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] Codecs: testing h264 (decoder) with hwdevice vaapi
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] Codecs: hardware transcoding: testing API vaapi
Dec 29, 2021 13:27:26.193 [0x7f5edb6efb38] DEBUG - [Transcode] Codecs: Testing with profile 'Main'
Dec 29, 2021 13:27:26.193 [0x7f5edb6efb38] DEBUG - [Transcode] Scaled up video bitrate to 21064Kbps based on 1.500000x fudge factor.
Dec 29, 2021 13:27:26.193 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: The_goats: selected media 0 / 38458
Dec 29, 2021 13:27:26.193 [0x7f5edb6efb38] DEBUG - [Transcode] Streaming Resource: Calculated bandwidth of 2516kbps exceeds bandwidth limit. Changing decision parameters provided by client to fit bandwidth limit of 2000kbps

Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] MDE: The_goats: no direct play video profile exists for http/mp4/h264/aac
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] The_goats - video.bitrate limitation applies: 14043 > 2000
Dec 29, 2021 13:27:26.192 [0x7f5edb6efb38] DEBUG - [Transcode] The_goats - video.bitrate limitation applies: 14043 > 2000

I just picked one of these bad boys up. Came here investigating how to get the GPU up and running, but based on this conversation, I’m thinking I probably don’t need it.

@ChuckPa, Yep, for some reason I did have that setting restricted on this player. Here is an updated run. In the log below, player was on maximum and all other services on the NAS were turned off. In trying to play these videos at maximum, the dashboard showed hw transcoding for each at 1080p. CPU was about 60%. I played two files simultaneously at maximum and the dashboard showed hw transcoding on them to 1080p although the player showed 4k. They still had some buffering issues about every minute.
Plex Media Server Logs_2021-12-30_10-36-49-mod.zip (60.7 KB)

Any idea why the dashboard showed 1080p but the player showed 4K on the conversion?

In playing a single file there were no buffering issues. I tried at 1080 20Mbps with 1 video each on separate computers and it still had buffering issues. Am I missing a configuration setting somewhere?

@AmazingRando24 I’m interested in your performance. Let me know how it goes as you get it setup. Would like to know how you optimize the system.

1 Like

@Aquaman

The video is transcoding 80.234 Mbps max of H.264 for ā€œPC LOAD LETTERā€

Dec 30, 2021 10:34:36.810 [0x7f5ed9f5db38] DEBUG - [Transcode] Codecs: testing hevc (decoder) with hwdevice vaapi
Dec 30, 2021 10:34:36.810 [0x7f5ed9f5db38] DEBUG - [Transcode] Codecs: hardware transcoding: testing API vaapi
Dec 30, 2021 10:34:36.810 [0x7f5ed9f5db38] DEBUG - [Transcode] Codecs: Testing with profile 'Main 10'
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] Codecs: 10-bit HEVC test succeeded
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] Scaled up video bitrate to 304582Kbps based on 4.500000x fudge factor.
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] Scaled maximum bitrate for resolution reduction to 106979Kbps.
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: Selected protocol dash; container: mp4
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: analyzing media item 18263
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: Direct Play is disabled
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: media must be transcoded in order to use the dash protocol
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no direct play video profile exists for http/mkv/hevc
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no direct play video profile exists for http/mkv/hevc/truehd
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no direct play video profile exists for http/mkv/hevc/dca
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no direct play video profile exists for http/mkv/hevc/ac3
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no direct play video profile exists for http/mkv/hevc/dca
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no direct play video profile exists for http/mkv/hevc/dca
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no direct play video profile exists for http/mkv/hevc/dca
Dec 30, 2021 10:34:36.811 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no direct play video profile exists for http/mkv/hevc/dca
Dec 30, 2021 10:34:36.812 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no direct play video profile exists for http/mkv/hevc/dca
Dec 30, 2021 10:34:36.812 [0x7f5ed9f5db38] DEBUG - [Transcode] MOVIE1 - video.bitDepth limitation applies: 10 > 8
Dec 30, 2021 10:34:36.812 [0x7f5ed9f5db38] DEBUG - [Transcode] MOVIE1 - audio.channels limitation applies: 8 > 6
Dec 30, 2021 10:34:36.812 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: no remuxable profile found, so video stream will be transcoded
Dec 30, 2021 10:34:36.812 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: Cannot direct stream video stream due to profile or setting limitations
Dec 30, 2021 10:34:36.812 [0x7f5ed9f5db38] DEBUG - [Transcode] Codecs: testing hevc (decoder) with hwdevice vaapi
Dec 30, 2021 10:34:36.812 [0x7f5ed9f5db38] DEBUG - [Transcode] Codecs: hardware transcoding: testing API vaapi
Dec 30, 2021 10:34:36.812 [0x7f5ed9f5db38] DEBUG - [Transcode] Codecs: Testing with profile 'Main 10'
Dec 30, 2021 10:34:36.813 [0x7f5ed9f5db38] DEBUG - [Transcode] Codecs: 10-bit HEVC test succeeded
Dec 30, 2021 10:34:36.813 [0x7f5ed9f5db38] DEBUG - [Transcode] Scaled up video bitrate to 304582Kbps based on 4.500000x fudge factor.
Dec 30, 2021 10:34:36.813 [0x7f5ed9f5db38] DEBUG - [Transcode] Scaled maximum bitrate for resolution reduction to 106979Kbps.
Dec 30, 2021 10:34:36.813 [0x7f5ed9f5db38] DEBUG - [Transcode] MOVIE1 - audio.channels limitation applies: 8 > 6
Dec 30, 2021 10:34:36.813 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: Cannot direct stream audio stream due to profile or setting limitations
Dec 30, 2021 10:34:36.813 [0x7f5ed9f5db38] DEBUG - [Transcode] MDE: MOVIEmde0: selected media 1 / 18263

And another session at 76.140 Mbps

Dec 30, 2021 10:34:37.885 [0x7f5edac3cb38] DEBUG - [Now] Adding 3 sessions.
Dec 30, 2021 10:34:37.885 [0x7f5eda532b38] DEBUG - [Transcode/JobRunner] Job running: EAE_ROOT='/share/ZFS2_DATA/.qpkg/PlexMediaServer/Library/tmp/pms-pms0/EasyAudioEncoder' FFMPEG_EXTERNAL_LIBS='/share/ZFS2_DATA/.qpkg/PlexMediaServer/Library/Plex\ Media\ Server/Codecs/server_type0-linux-x86_64/' LIBVA_DRIVERS_PATH='/share/ZFS530_DATA/.qpkg/PlexMediaServer/lib/dri' X_PLEX_TOKEN='xxxxxxxxxxxxxxxxxxxx' '/share/ZFS530_DATA/.qpkg/PlexMediaServer/Plex Transcoder' '-codec:0' 'hevc' '-hwaccel:0' 'vaapi' '-hwaccel_fallback_threshold:0' '10' '-hwaccel_output_format:0' 'vaapi' '-hwaccel_device:0' 'vaapi' '-codec:1' 'truehd_eae' '-eae_prefix:1' 'transcode1_' '-analyzeduration' '20000000' '-probesize' '20000000' '-i' '/share/ZFS25_DATA/movies/movie3.mkv' '-filter_complex' '[0:0]hwupload[0];[0]scale_vaapi=w=2276:h=1280:format=p010[1];[1]hwdownload[2];[2]format=p010,tonemap=mobius[3];[3]hwupload[4]' '-map' '[4]' '-metadata:s:0' 'language=eng' '-codec:0' 'h264_vaapi' '-b:0' '76140k' '-maxrate:0' '101520k' '-bufsize:0' '203040k' '-r:0' '23.975999999999999' '-force_key_frames:0' 'expr:gte(t,n_forced*1)' '-filter_complex' '[0:1] aresample=async=1:ocl='\''stereo'\'':rematrix_maxval=0.000000dB:osr=48000[5]' '-map' '[5]' '-metadata:s:1' 'language=eng' '-codec:1' 'aac' '-b:1' '256k' '-f' 'dash' '-seg_duration' '1' '-dash_segment_type' 'mp4' '-init_seg_name' 'init-stream$RepresentationID$.m4s' '-media_seg_name' 'chunk-stream$RepresentationID$-$Number%05d$.m4s' '-window_size' '5' '-delete_removed' 'false' '-skip_to_segment' '1' '-time_delta' '0.0625' '-manifest_name' 'http://127.0.0.1:32400/video/:/transcode/session/transcode1/ID0/manifest?X-Plex-Http-Pipeline=infinite' '-avoid_negative_ts' 'disabled' '-map_metadata' '-1' '-map_chapters' '-1' 'dash' '-start_at_zero' '-copyts' '-vsync' 'cfr' '-init_hw_device' 'vaapi=vaapi:' '-filter_hw_device' 'vaapi' '-y' '-nostats' '-loglevel' 'quiet' '-loglevel_plex' 'error' '-progressurl' 'http://127.0.0.1:32400/video/:/transcode/session/transcode1/ID0/progress'

Are you running out of network or wifi bandwidth?

Performance-wise, I get 6 full 50+ Mbps transcodes out of our machine in the lab before the QSV starts feeling the strain with tonemapping.

I’m not. I did a test with iperf3 and show around 250Mbps via wifi to the server. I did another test connected directly to the backbone switch and sustained above 2Gbps to the server. Testing Plex while plugged into the switch had the same results of unable to play two 4K streams at maximum transcoding without buffering pauses.
Plex Media Server Logs_2021-12-31_11-46-50-mod.zip (102.7 KB)

My current configuration has the NAS configured with one large array on the HDD side using triple parity raid across 10 HDDs with 2 additional as spares. I don’t know for sure, but I think that may be contributing to some of my performance issues.

I’m currently reconfiguring it to put the Plex media files on a storage pool by itself using RAID 5 across 5 HDDs. I’m using the remaining drives in a RAID 6 array for storage and backups with no remaining spares. That should alleviate issues with accessing other files outside of Plex and improve overall media file access with RAID 5 instead of RAID TP (or 7).

I also have 4 SSDs that I’ll be using in a RAID 1 pool of 2 drives for the system and VMs and another pool of 2 drives in RAID 0 for user storage (these will be backed up daily). I have (2) 2 TB NVMe’s that I’ll use for cache on the 2 raid pools of HDDs. If anyone has suggestions on how to improve Plex file access performance beyond this, please let me know. I have a few days before I’ll be able to implement it and would like to hear your ideas.

I’ll get back here in a few days with an update on performance after everything has been switched over.