How to use Intel H.264 HW encoder with NoMachine
On Windows and Linux platforms, NoMachine is able to use Intel® Quick Sync technology for GPU-accelerated H.264 encoding provided by QuickSync APIs on those machines which are equipped with suitable hardware.
The current API to access Quick Sync technology is the Intel® Video Processing Library (Intel® VPL, libvpl), which replaces the MFX API provided by Intel® MediaSDK (libmfx).
Older GPUs may still require to use Media SDK.
A list is available here:
https://github.com/intel/libvpl?tab=readme-ov-file#dispatcher-behavior-when-targeting-intel-gpus
NoMachine supports VPL since v8.12.
Previous versions of NoMachine uses and requires libmfx from MediaSDK.
Windows
Windows (from Vista onward) comes with drivers for Quick Sync video support included and hardware accelerated encoding works out-of-the-box in NoMachine sessions provided the processor supports it.
Intel® HD Graphics 4200” and “Intel® HD Graphics P4600” or higher, support Quick Sync Video. There is no additional configuration necessary.
Where old GPUs that require using the MFX library for encoding, the VPL dispatcher will load the Intel® MediaSDK. Note that in the NoMachine session it will still appear that VPL is used.
Linux
On Linux it's necessary to install some additional libraries. Let's distinguish two cases, for VPL and for MediaSDK.
Some requirements
For VPL, please find here the list of GPUs supporting it: https://github.com/intel/libvpl
For MediaSDK, compatible hardware is:
- 5th and 6th Generation Intel Core or newer
- Xeon E3-1200 v4 Family (C226 chipset), E3-1200 v5 and E3-1500 v5 Family (C236).
Please find here the supported architectures: https://github.com/intel/media-driver#supported-platforms
If the architecture is fully supported, it should work out-of-the-box. If not, please check if sample encoder from Intel Media SDK works for you: https://github.com/Intel-Media-SDK/MediaSDK
For VPL
In case of recent GPUs supporting VPL and NoMachine version 8.12 or later, install the necessary packages for libvpl from the official repository of your Linux distribution.
Some examples:
Ubuntu 22.04
$ sudo apt intall libvpl2 libmfx-gen1.2 intel-media-va-driver-non-free
Debian 12:
$ sudo apt intall libvpl2 libmfx-gen1.2 intel-media-va-driver-non-free
It may require to check Non-DFSG-compatible Software (non-free) in Software&Updates
Fedora 39:
(on a single line)
sudo dnf install
https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install libvpl intel-media-driver
For MediaSDK
In case of older GPUs or if you're still using a NoMachine version previous than v8.12,
install the necessary packages for libmfx from the official repository of your Linux distribution.
Some examples:
Ubuntu 20.04
sudo apt install intel-media-va-driver libmfx1 libva2 libva-drm2
Fedora 39:
(on a single line)
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install libva intel-mediasdk intel-media-driver
On other Linux systems which don't have MSDK built-in support or don't have the necessary packages on their repository, you might want to build it by yourself. In such case please check minimum system requirements here and follow instructions provided by Intel®: https://github.com/Intel-Media-SDK/MediaSDK#system-requirements
How to verify that NoMachine is using QuickSync
Connect the NoMachine session and open the menu panel (click on the page peel at the top right of the window or ctrl+alt+0) and click on the Connection button. The encoder in use is displayed in the Encoding field, for example:
Encoding: HW encoding, H.264, VPL
Encoding: HW encoding, H.264, MFX
The same information is available also in the session log file. On the server host, look for the 'session' file for in the user's home/.nx/node/C-*/ directory. If everything is working correctly you will see any the following string in the session file:
Using Intel H.264 VPL hardware encoder
or
Using Intel H.264 MFX hardware encoder
