Transcoders

Installing transcoders for Perfect Streamer.

The following packages are available:

  • pstreamer-tcsw — transcoding on the CPU (Software).

  • pstreamer-tcnv — transcoding on an NVIDIA GPU.

  • pstreamer-tcivpl — transcoding on an Intel GPU (Intel VPL).

The main requirement is GLIBC version >= 2.28.

The transcoder runs on AlmaLinux 8.9. The Intel VPL transcoder runs on AlmaLinux 10 (RHEL 10) and Ubuntu 24.04 systems.

Which Intel hardware is suitable for transcoding, which runtimes and codecs are available on the different graphics generations, and how to check that the hardware has been recognized — see Intel VPL transcoder: supported hardware.

RHEL 8+

  1. Install pstreamer.

  2. For NVIDIA, install the repositories and update the system (if they have not already been installed):

sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
sudo dnf clean all
sudo dnf update -y
reboot
  1. NVIDIA Encoder.

  • Install CUDA:

sudo dnf -y install cuda-toolkit-12-5
  • Install the driver (choose an option):

Legacy

sudo dnf -y module install nvidia-driver:latest-dkms

New

sudo dnf -y module install nvidia-driver:open-dkms

After installation, be sure to reboot the machine:

reboot

After the reboot, check that the driver works:

nvidia-smi
modprobe nvidia
sudo lsmod | grep nvidia

or

modprobe nouveau
sudo lsmod | grep nouveau
  1. Intel VPL Encoder.

  • Installing the Intel driver and Intel VPL (RHEL 10):

dnf install -y intel-gpu-firmware
dnf install -y https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm
dnf install -y intel-media-driver
dnf install -y intel-vpl-gpu-rt
  1. Install the transcoder packages.

  • CPU Software method:

sudo dnf install -y pstreamer-tcsw
  • NVIDIA GPU:

sudo dnf install -y pstreamer-tcnv
  • Intel VPL GPU:

sudo dnf install -y pstreamer-tcivpl

Ubuntu 22/24

  1. Install pstreamer.

  2. NVIDIA Encoder.

  • Install CUDA toolkit version 12.5:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-5
  • Install the driver (choose an option):

legacy kernel module flavor:

sudo apt-get install -y cuda-drivers

or

open kernel module flavor:

sudo apt-get install -y nvidia-driver-555-open
sudo apt-get install -y cuda-drivers-555

After installation, be sure to reboot the machine:

reboot

After the reboot, check that the driver works:

nvidia-smi

The transcoder requires CUDA version 12.5 to work. A different version of CUDA may already be installed on the system. Also, updating the system may upgrade CUDA to a newer version. This does not interfere with operation; they do not need to be removed, since different versions of CUDA are installed in separate directories.

  1. Intel VPL Encoder (Ubuntu 24.04).

The key Intel VPL components are taken from the official Intel Graphics repository — in the standard Ubuntu repositories they are older and do not support modern GPUs.

  • Add the Intel Graphics repository:

sudo apt-get update
sudo apt-get install -y ca-certificates gnupg wget
wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | sudo gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu noble unified" | sudo tee /etc/apt/sources.list.d/intel-gpu-noble.list
sudo apt-get update
  • Install the Intel VPL runtime and the driver:

sudo apt-get install -y libvpl2 libmfxgen1 intel-media-va-driver-non-free
  • Optionally, you can install the diagnostic tools:

sudo apt-get install -y libvpl-tools
  • The pss user under which the service runs must belong to the render and video groups (access to the /dev/dri/ devices):

sudo usermod -aG render,video pss
sudo systemctl restart pss
  • Check that the GPU is visible (with libvpl-tools installed):

vainfo --display drm --device /dev/dri/renderD128
vpl-inspect

The vainfo output must contain the line “Driver version: Intel iHD …”, and vpl-inspect must list the hardware implementation (AccelerationMode VAAPI).

  1. Install the transcoder packages.

  • CPU Software method:

sudo apt-get install -y pstreamer-tcsw
  • NVIDIA GPU:

sudo apt-get install -y pstreamer-tcnv
  • Intel VPL GPU (Ubuntu 24.04):

sudo apt-get install -y pstreamer-tcivpl

Files and installation verification

The transcoder packages will install the following files:

  • /usr/local/bin/tcsw — the executable file of the SW (CPU) transcoder.

  • /usr/local/bin/tcnv — the executable file of the NVIDIA (GPU) transcoder.

  • /usr/local/bin/tcivpl — the executable file of the Intel VPL (GPU) transcoder.

  • /opt/pss/config/pss_tc_sw.properties — the startup configuration file for the SW (CPU) transcoder.

  • /opt/pss/config/pss_tc_nv.properties — the startup configuration file for the NVIDIA (GPU) transcoder.

  • /opt/pss/config/pss_tc_ivpl.properties — the startup configuration file for the Intel VPL (GPU) transcoder.

Installing the transcoder packages will restart the pss service. You can verify the transcoder installation in the About section of the web interface: the transcoder version or an error will be shown.

Other OSes based on Debian and RHEL

To install the pstreamer-tcnv transcoder on OSes other than Ubuntu 22/24 and RHEL 8+, use the configurator to select the required CUDA and driver version on the NVIDIA website:

https://developer.nvidia.com/cuda-toolkit-archive

When selecting each CUDA version, information is available about which OS version it is suitable for. The supported architecture is x86_64. If you need an older OS version, check its support in older CUDA versions. The main requirement for the OS is support for GLIBC version >= 2.28.

The NVIDIA driver must be installed from the repository offered for your OS version on the page of the selected CUDA version.

Support for NVIDIA graphics cards for the pstreamer-tcnv transcoder functionality can be checked on the NVIDIA website in the Video Encode and Decode Support Matrix. This page provides a video format support matrix for the decoder and encoder, as well as other characteristics.

Removing the old CUDA version and driver

If an incorrect version of CUDA and the driver was installed, it may be necessary to install a different version, first removing the installed one.

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html?highlight=uninstall#removing-cuda-toolkit

Removing CUDA

RHEL:

dnf remove "cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*" "*nvptx*"

Debian/Ubuntu:

apt remove --autoremove --purge "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*" "*nvptx*"

Removing the driver

Ubuntu 22/24:

apt remove --autoremove --purge -V \
   cuda-compat\* \
   cuda-drivers\*  \
   libnvidia-cfg1\* \
   libnvidia-compute\* \
   libnvidia-decode\* \
   libnvidia-encode\* \
   libnvidia-extra\* \
   libnvidia-fbc1\* \
   libnvidia-gl\* \
   libnvidia-gpucomp\* \
   libnvidia-nscq\* \
   libnvsdm\* \
   libxnvctrl\* \
   nvidia-dkms\* \
   nvidia-driver\* \
   nvidia-fabricmanager\* \
   nvidia-firmware\* \
   nvidia-headless\* \
   nvidia-imex\* \
   nvidia-kernel\* \
   nvidia-modprobe\* \
   nvidia-open\* \
   nvidia-persistenced\* \
   nvidia-settings\* \
   nvidia-xconfig\* \
   xserver-xorg-video-nvidia\*

RHEL 9:

dnf module remove --all nvidia-driver
dnf module reset nvidia-driver

RHEL 10:

dnf remove nvidia-driver\*