This encoder offers the best latency, which is most noticeable at higher resolutions.
This encoder requires a supported NVIDIA graphics card:
You must have PyCUDA installed (it is included in the official xpra repositories), and a recent enough version of the nvidia drivers. It is not compatible with the nouveau
driver.
How you install those drivers is entirely up to you, here are some options for Fedora / RHEL:
If your CUDA (libcuda.so
) or NVENC (libnvidia-encode.so
) libraries are installed in an unusual location, it is your responsibility to ensure they can be loaded at runtime, usually by adding the directory to the LD_LIBRARY_PATH
.
If the codec loads properly, it will be used ahead of the other software encoders automatically.
You can verify the video encoder currently in use with:
xpra info | grep "encoder="
Important: the video encoder is only used when needed, usually when there is a stream of screen updates.
To force xpra to use nvenc exclusively as video encoder, you can use the --video-encoders=
command line option:
xpra start :10 --video-encoders=nvenc
To debug the availability of video encoders and GPUs:
xpra encoding
xpra video
xpra nvinfo
Once nvenc is running, you can debug the encoding process step with:
xpra start -d nvenc ...
You can store the license keys in nvenc.keys
, either globally in /etc/xpra/
or per-user in ~/.xpra/
.
Or you can also use the environment variable:
XPRA_NVENC_CLIENT_KEY="0A1B2C3D-4E5F-6071-8293-A4B5C6D7E8F9" xpra ...
Newer SDK versions may not support keys, or just not the same set of keys, in which case the number of sessions will be limited when using consumer cards unless you patch the library.
/opt/
)pkgconfig
file matching your SDK version and location, you can use nvenc.pc as template../setup.py build --with-nvenc
Installation Failed. Using unsupported Compiler
run the CUDA installer with --override
incompatible structure version errors
, etc)