- 30 Aug 2024
- 8 Minutes to read
- Print
- DarkLight
- PDF
Linux platform
- Updated on 30 Aug 2024
- 8 Minutes to read
- Print
- DarkLight
- PDF
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:
Ultralight requires Ubuntu 22+. For Ultralight to work you must install additional dependencies:
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 libgtk-3-dev
OpenBLAS:
Optional, needed if the Operator Facedetection is used.
Info about OpenBLAS: can be found at https://www.openblas.net/
To install OpenBLAS on Ubuntu 24:
sudo apt-get install libopenblas0
To install OpenBLAS (pre Ubuntu 24):
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.