Linux platform
  • 24 Apr 2024
  • 6 Minutes to read
  • Dark
    Light
  • PDF

Linux platform

  • Dark
    Light
  • PDF

Article Summary

Note!

From version R1 2023, FFmpeg requirements and installation procedure have changed. Find more information in the FFmpeg section below.

Info!

After the installation, we recommend reading the section Composer Runtime Version

Installation on the Linux platform

The Composer Runtime for Linux is distributed as a gzipped tar-ball. Unpack with the following command:

$ tar xvfz VindralComposerRuntime-Linux.tgz && cd VindralComposerRuntime

Verify Composer by running the following command:

$ ./vindralcomposerruntime --version

Linux - 3rd party requirements

Composer Runtime for Linux requires some third-party packages to be installed.

All versions of Composer:

libgdiplus:

Libgdiplus is the Mono library that provides a GDI+-compatible (graphics device information) API on non-Windows operating systems.
To install libgdiplus:

sudo apt-get install libgdiplus -y

Desktop Video:

(Blackmagic Design). Optional, needed if a Decklink capture card is used for capturing video from an external source https://www.blackmagicdesign.com/support/family/capture-and-playback

Ultralight:

For Ultralight to work you may need to install libgstreamer:

Note!

When upgrading from versions prior R1 2024, before installing libgstreamer, delete the file “libgstreamer-full-1.0.so” which is located in the root folder of Composer.

sudo apt-get install libgstreamer1.0-0

OpenBLAS:

Optional, needed if the Operator Facedetection is used.
Info about OpenBLAS: can be found at https://www.openblas.net/
To install OpenBLAS:

sudo apt-get install libopenblas-base


Composer version 1.5.x (R1 2023 and later)

NVidia GPU driver supporting Cuda 12.2: 

You need at least Nvidia driver >=535.54.03, which supports CUDA installed (at least version 12.2) - which is shipped with the proprietary Nvidia drivers.

CLI-based install: sudo apt install nvidia-driver-535 nvidia-dkms-535 
GUI-based install: Open "Software and Updates" and install nvidia-driver-535 (or later)


.NET6:

The environment must fulfill the .NET6 Runtime dependencies:

.NET6 Runtime dependencies: https://github.com/dotnet/core/blob/main/release-notes/6.0/linux-packages.md
.NET6 Runtime does NOT have to be installed - it is bundled with the application. However, the prerequisites for .NET6 Runtime still applies.


FFmpeg:

Composer R1 2024

Version 6.1: At the moment of writing, FFmpeg 6.1 is not part of the official release of Ubuntu but may be part of other Linux variants. FFmpeg 6.1 is not bundled with Composer and needs to be installed separately. Information about FFmpeg can be found at their official website: https://ffmpeg.org/download.html#build-linux

Installing and compiling FFmpeg:

Step 1 - Download necessary FFmpeg headers for Nvidia Codec APIs

wget https://github.com/FFmpeg/nv-codec-headers/releases/download/n12.1.14.0/nv-codec-headers-12.1.14.0.tar.gz
tar -xvf nv-codec-headers-12.1.14.0.tar.gz
cd nv-codec-headers-12.1.14.0
make
sudo make install
cd ..

Step 2 - Download the necessary dependencies

sudo apt-get update
sudo apt-get install yasm gcc libunistring-dev libgnutls28-dev libvorbis-dev libx264-dev libx265-dev libfontconfig1-dev

Step 3 - Compile FFmpeg

wget https://ffmpeg.org/releases/ffmpeg-6.1.tar.xz
tar -xvf ffmpeg-6.1.tar.xz
cd ffmpeg-6.1
./configure \
                                   --enable-libx264 \
                                   --enable-libx265  \
                                   --enable-gpl \
                                   --enable-libvorbis  \
                                   --enable-shared \
                                   --enable-gnutls \
                                   --enable-pic \
                                   --enable-ffplay \
                                   --enable-gnutls \
                                   --disable-stripping \
                                   --enable-libfontconfig \
                                   --enable-libfreetype \
                                   --enable-nvenc

make -j 12
sudo make install
sudo ldconfig

Important!
Close and restart the terminal(s) after installation is complete.


Step 4 - verify FFmpeg Verify installation with the following command:

$ ffmpeg
ffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
  configuration: --enable-libx264 --enable-libx265 --enable-gpl --enable-libvorbis --enable-shared --enable-gnutls --enable-pic --enable-ffplay --enable-gnutls --disable-stripping --enable-libfontconfig --enable-libfreetype --enable-nvenc
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   4. 12.100 /  4. 12.100
  libpostproc    57.  3.100 / 57.  3.100
Hyper fast Audio and Video encoder


Step 5 -  Set path to FFmpeg files (ffmpeg.rootpath)

To find the path to FFmpeg 6.1 files, Composer uses the .vindralcomposerruntime configuration file found in the application root path. The default configuration is compatible with most Linux environments but might need to change depending on your setup:

To find the path to FFmpeg, in the terminal type:

$ which ffmpeg
/usr/local/bin/ffmpeg

$ ldd /usr/local/bin/ffmpeg
      libavdevice.so.60 => /usr/local/lib/libavdevice.so.60 (0x00007f29a07d9000)
      libavfilter.so.9 => /usr/local/lib/libavfilter.so.9 (0x00007f29a0200000)
      libavformat.so.60 => /usr/local/lib/libavformat.so.60 (0x00007f299fe00000)
      libavcodec.so.60 => /usr/local/lib/libavcodec.so.60 (0x00007f299ea00000)
      libavutil.so.58 => /usr/local/lib/libavutil.so.58 (0x00007f299d800000)
        ...

The rootpath in this example to the FFmpeg files would be "/usr/local/lib"

If different versions of FFmpeg are installed, the system can sometimes detect the older FFmpeg version as default, prohibiting Composer from starting. To override the FFmpeg version check, it is possible to use the Composer start argument -- noffmpegversioncheck.

.vindralcomposerruntime

#On Linux, set the ffmpeg.rootpath variable to the installation path of your FFmpeg 6.x installation
ffmpeg.rootpath="/usr/local/lib"

Composer R3 2023

Version 5.1.x: At the moment of writing, FFmpeg 5.1 is not part of the official release of Ubuntu but may be part of other Linux variants. FFmpeg 5.1 is not bundled with Composer and needs to be installed separately. Information about FFmpeg can be found at their official website: https://ffmpeg.org/download.html#build-linux

Installing and compiling FFmpeg:

Step 1 - Download necessary FFmpeg headers for Nvidia Codec APIs

wget https://github.com/FFmpeg/nv-codec-headers/releases/download/n12.0.16.0/nv-codec-headers-12.0.16.0.tar.gz
tar -xvf nv-codec-headers-12.0.16.0.tar.gz
cd nv-codec-headers-12.0.16.0
make
sudo make install
cd ..

Step 2 - Download the necessary dependencies

sudo apt-get update
sudo apt-get install yasm gcc libunistring-dev libgnutls28-dev libvorbis-dev libx264-dev libx265-dev libfontconfig1-dev

Step 3 - Compile FFmpeg

wget https://ffmpeg.org/releases/ffmpeg-5.1.3.tar.xz
tar -xvf ffmpeg-5.1.3.tar.xz
cd ffmpeg-5.1.3
./configure \
                                   --enable-libx264 \
                                   --enable-libx265  \
                                   --enable-gpl \
                                   --enable-libvorbis  \
                                   --enable-shared \
                                   --enable-gnutls \
                                   --enable-pic \
                                   --enable-ffplay \
                                   --enable-gnutls \
                                   --disable-stripping \
                                   --enable-libfontconfig \
                                   --enable-libfreetype \
                                   --enable-nvenc

make -j 12
sudo make install
sudo ldconfig

Important!


Close and restart the terminal(s) after installation is complete.


Step 4 - verify FFmpeg Verify installation with the following command:

$ ffmpeg
ffmpeg version 5.1.3 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 11 (Ubuntu 11.3.0-1ubuntu1~22.04.1)
  configuration: --enable-libx264 --enable-libx265 --enable-gpl --enable-libvorbis --enable-shared --enable-gnutls --enable-pic --enable-ffplay --enable-gnutls --disable-stripping --enable-libfontconfig --enable-libfreetype --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100


Step 5 -  Set path to FFmpeg files (ffmpeg.rootpath)

To find the path to FFmpeg 5.1 files, Composer uses the .vindralcomposerruntime configuration file found in the application root path. The default configuration is compatible with most Linux environments but might need to change depending on your setup:

To find the path to FFmpeg, in the terminal type:

$ which ffmpeg
/usr/local/bin/ffmpeg

$ ldd /usr/local/bin/ffmpeg
        linux-vdso.so.1 (0x00007fffb339a000)
        libavdevice.so.59 => libavdevice.so.59 => /usr/local/lib/libavdevice.so.59 (0x00007f40093a1000)
        ...
        ...

The rootpath in this example to the FFmpeg files would be "/usr/local/lib"

.vindralcomposerruntime

#On Linux, set the ffmpeg.rootpath variable to the installation path of your FFmpeg 5.x installation
ffmpeg.rootpath="/usr/local/lib"

Composer version 1.0.x (R4 2022 and previous versions)

NVidia GPU driver supporting Cuda 11.6: 

NVIDIA driver that supports at least Cuda 11.6 can be downloaded from:
 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/

FFmpeg:

Version 4.3.2 or higher. FFmpeg 5.x is not compatible. If you don’t have FFmpeg with its accompanying libraries already installed, it should be possible to install via your distribution, e.g. for Ubuntu, that would be:

$ sudo apt-get install ffmpeg

Troubleshooting Linux

The most common problem that might arise is the lack of a proper FFmpeg- and/or CUDA installation.

Missing or faulty CUDA installation

[2021-10-11 09:18:43.666 [Fatal] [4001] Managed CUDA initialization error: Unable to load shared library 'nvcuda' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libnvcuda: cannot open shared object file: No such file or directory 

Please note that NVIDIA Cuda Toolkit can forget to create all the needed symbolic links, so this error might be due to missing links. That can easily be solved by adding it manually as in (Note that the directory "/usr/lib/x86_64-linux-gnu" might differ on your installation) :

$ cd /usr/lib/x86_64-linux-gnu 
$ sudo ln -s libcuda.so.1 libcuda.so
$ sudo ldconfig

Missing or faulty FFMPeg installation:

>>>>>>>>>>>>>>>>>>>>>Error creating input: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.DllNotFoundException: Unable to load DLL 'avutil.56': The specified module could not be found.
   at FFmpeg.AutoGen.ffmpeg.<>c__DisplayClass4_0.<.cctor>b__0(String name, Int32 version)
   at FFmpeg.AutoGen.ffmpeg.<>c.<.cctor>b__4_482()
   at FFmpeg.AutoGen.ffmpeg.av_frame_alloc()
   at FFmpegWrapper.AudioUtils.AllocAudioFrame(Int32 numSamples, AVSampleFormat avSampleFormat, Int32 sampleRate, UInt64 channelLayout)
   at FFmpegWrapper.AudioDeChunker..ctor(Int32 numRenderTargets)
   at MediaFileInput.MediaFileInput._initialize()
   at MediaFileInput.MediaFileInput..ctor()
   --- End of inner exception stack trace ---

Please refer to your distribution if you have any of the above problems or contact our support for further assistance.


Was this article helpful?

What's Next