Server Version#: 1.20.2.3343
Player Version#: 4.34.4
Hi. I made a post on reddit but figured it would probably be smart to make one here. I’ve taken a lot of the narrative and tried to distill this post down to the bare bones.
The long and the short of it is this. When transcoding in general, but I’ll specifically talk about HEVC, PMS correctly uses nvdec to decode the HEVC stream, but fails to encode using nvenc.
I’m using nvidia-docker2 with cuda 11.1 and nvidia drivers version 455.23.05. I’m using the linuxserver plex image. From within that container I can run nvidia-smi and it shows it is working and the correct version. I did turn on verbose and debug logs. I won’t post the entirety here, but a small relevant snippet. I hope that’s OK.
Sep 26, 2020 12:42:21.724 [0x7f0fe27fc700] DEBUG - [Transcode] Codecs: testing h264_nvenc (encoder)
Sep 26, 2020 12:42:21.725 [0x7f0fe27fc700] DEBUG - [Transcode] Codecs: hardware transcoding: testing API nvenc
Sep 26, 2020 12:42:21.725 [0x7f0fe27fc700] DEBUG - [Transcode] [FFMPEG] - Loaded lib: libcuda.so.1
...
Sep 26, 2020 12:42:21.788 [0x7f0fe27fc700] ERROR - [Transcode] [FFMPEG] - Cannot load libnvidia-encode.so.1
Sep 26, 2020 12:42:21.788 [0x7f0fe27fc700] ERROR - [Transcode] [FFMPEG] - The minimum required Nvidia driver for nvenc is 418.30 or newer
Sep 26, 2020 12:42:21.788 [0x7f0fe27fc700] VERBOSE - [Transcode] [FFMPEG] - Nvenc unloaded
Sep 26, 2020 12:42:21.806 [0x7f0fe27fc700] WARN - [Transcode] Codecs: avcodec_open2 returned -1 for encoder 'h264_nvenc'
It is telling me the minimum required nvidia driver is 418.30, but I am running 455.23.05
What is the issue here, exactly? Do I need to downgrade my nvidia drivers to something closer to 418.30? Is the docker image I’m using messed up some how?
edit:
I’ve also just tried with the official plex docker image:
nvidia-docker run \
-d \
--name plex \
-e TZ="America/Los_Angeles" \
-e PLEX_CLAIM="claim-xxxxx" \
-e ADVERTISE_IP="http://192.168.1.6:32400/" \
-e PLEX_UID=10010 \
-e PLEX_GID=10005 \
-e ALLOWED_NETWORKS=192.168.1.0/24 \
-e CHANGE_CONFIG_DIR_OWNERSHIP=false \
-p 32400:32400/tcp \
-p 3005:3005/tcp \
-p 8324:8324/tcp \
-p 32469:32469/tcp \
-p 1900:1900/udp \
-p 32410:32410/udp \
-p 32412:32412/udp \
-p 32413:32413/udp \
-p 32414:32414/udp \
-h plex.example.com \
-v ${PWD}/config:/config \
-v ${PWD}/tmp:/tmp \
-v /mnt/btrfs/media/plex/Movies:/data/Movies \
-v /mnt/btrfs/media/plex/TV\ Shows:/data/TV\ Shows \
-v /mnt/btrfs/media/plex/Pre\ Roll:/data/Pre\ Roll \
-v /dev/shm:/transcode \
--gpus all \
plexinc/pms-docker:latest;
And it doesn’t seem to want to use nvdec even.
From within the container, if I run nvidia-smi, I get what is expected except that it won’t show me the cuda version, but it did in the linuxserver container:
root@plex:/# nvidia-smi
Sat Sep 26 13:49:23 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 455.23.05 Driver Version: 455.23.05 CUDA Version: N/A |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce GTX 1650 On | 00000000:28:00.0 Off | N/A |
| 21% 37C P8 4W / 75W | 1MiB / 3911MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+