How to Install DaVinci Resolve in Linux Mint

Share
In this tutorial, we'll learn how to install DaVinci Resolve 19 in Linux Mint 22. It's not easy, but it's possible. This tutorial may help you install other versions or distros, but I can't guarantee that will work.

Observation: I only use DaVinci Resolve (the free version) for editing tutorial videos for Youtube and TikTok, and mainly on Windows. If you use it for more professional video-editing, including editing long video footage, audio-mixing, or the paid version (DaVinci Studio), I'm not sure how well it's going to work for you. It seems someone has tried to get it to work on Fedora and Arch Linux before [youtube.com/watch?v=j1khJ6tQfc0] but ran into problems with audio and video glitches even after getting it to run. Despite these shortcomings, I still believe it's best free video editor available for Linux, so it's worth trying to get it to run if you want to edit videos on Linux.

DaVinci Resolve 19's project selection window shown at start up, with only a new, "Untitled Project" to select, running on Linux Mint's default desktop environment: Cinnamon.
A screenshot of DaVinci Resolve 19 running on Linux Mint 22, on Cinnamon.

Part 1: Downloading the Installer

1: download the Linux version of DaVinci Resolve from the official website: [blackmagicdesign.com/products/davinciresolve/studio].

This should be a zipped folder. For DaVinci Resolve version 19.0, its filename is DaVinci_Resolve_19.0_Linux.zip.

Observation: if you want to install a different version, the instructions of this tutorial may work, but you'll need the write the correct filename.

2: open Nemo (Cinnamon's file manager) and navigate to your downloads folder (or wherever you saved that .zip file).

3: right click on the .zip to open its context menu and select Extract Here. This will create a folder called DaVinci_Resolve_19.0_Linux and place the contents of the zipped folder inside of it.

4: navigate to the folder where the zipped folder contents were extracted. There should be a file named DaVinci_Resolve_19.0_Linux.run in it and a PDF with installation instructions.

Part 2: Installing Dependencies

You'll notice that the downloaded file isn't a .deb file, but a .run file. It seems DaVinci Resolve only supported CentOS, and then Rocky Linux1, both related to Fedora, so support on other linuxes such as Mint and Ubuntu, which are Debian-based, isn't great.

We can execute .run files by double-clicking them in Nemo, but unfortunately this won't work in our case. We'll need the terminal. We'll see why in a moment.

1: in Nemo, while in the directory where the .run file is, right click on an empty space in the main pane to open the context menu, then select Open in Terminal. A terminal window should appear with its current directory set to the folder where the .run file is.

2: make the the .run file executable running the command:

chmod +x DaVinci_Resolve_19.0_Linux.run

3: execute the .run file from the terminal using the command:

./DaVinci_Resolve_19.0_Linux.run

A dialog box will appear telling you that there are several dependencies missing. As DaVinci wasn't package for Debian, it can't make use of the package manager to install those dependencies automatically, which means we need to install them manually.

4: close the dialog box (the installer) and return to the terminal window.

5: run the command apt install as sudoer to install the dependencies listed by the installer.

Warning: the algorithm the installer uses to detect the dependencies also wasn't designed for Debian-based linuxes, which means that even after you install all dependencies, the installer will still tell you that there are dependencies missing.

There are a few dependencies that can not be installed by their name alone.

For, example, say you run the command:

sudo apt install libapr1 libaprutil1 libasound2 libglib2.0-0 libxcb-cursor0

You'll be prompted for your sudoer password.

This will install most of these, but it will fail to install libasound2 on a fresh Linux Mint 22 installation (anedoctelly), and on a Ubuntu 22 fresh install2. That's because there is no libasound2 in the repository to install, you need to install either libasound2t64 or liboss4-salsa-asound2 which should fix this requirement. I don't really know the difference between these two, and I only tried libasound2t64. It seems to work.

sudo apt install libasound2t64

Part 3: Skipping the Dependency Check

After you installed the dependencies, you must run the installer while telling it to skip checking if the dependencies are installed.

For the record, the installer will tell you that you must install libapr1 libaprutil1 libasound2 libglib2.0-0 even after you installed them.

1: in the terminal, set the environment variable SKIP_PACKAGE_CHECK that the installer uses to 1.

export SKIP_PACKAGE_CHECK=1

2: execute the installer again.

./DaVinci_Resolve_19.0_Linux.run

3: follow the instructions in the installation wizard.

The system will ask you to type your password when the installer needs perform an operation with elevated privileges. This happened two times with me, once at start, and once at the end.

It seemed stuck at 99% at first for a few minutes, but the installer should finish without problems.

With this you should have a DaVinci Resolve icon appear on your desktop that you can double click to run Resolve.

Part 4: Installing the Nvidia Drivers

It seems DaVinci won't work if you have a Nvidia graphics card without updated drivers. When you run it, it will tell it requires a CUDA version higher than what you have (12.3 if I remember correctly). It does give you an option to configure it to not use that so it runs, but there doesn't seem to be a way to actually configure the part that needs to be configured, so it can't run.

First, check if you have up to date Nvidia drivers by running the command nvidia-smi.

The command nvidia-smi being run in the terminal. Some information displayed includes: Driver Version: 550.90.07. CUDA Version: 12.4. GPU name: NVIDIA GeForce GTX 1050 Ti. Fan: 0%. Temperature: 53C. Power Usage/Capcity: N/A / 72W. Memory-Usage: 183MiB / 4096MiB. GPU Utilization: 1%. A list of processes, their PIDs, names, and GPU memory (VRAM) usage: /usr/lib/xorg/Xorg 92MiB, cinnamon 86MiB.
The output of nvidia-smi (Nvidia's System Manager Interface command line utility) a terminal.

If the command is not found, you have the libreware Nouveau drivers instead of proprietary Nvidia drivers. If the command exists but shows an error, you might have problems with Secure Boot. If it works, but your CUDA Version is under 12.3, DaVinci may not actually run, and you need updated drivers that (as of writing) can only be installed through the command line. I have a separate tutorial that can help you with these problems:

Part 5: Fixing the Launcher

After going through all this trouble, if you try double-clicking DaVinci Resolve's icon on your desktop, you'll see that nothing happens.

If you're savvy enough, you'll have right-clicked the launcher icon, copied its command, and ran it into a terminal window to see if there is any error that is only visible on a terminal window.

/opt/resolve/bin/resolve %u

Note: the %u you find in launcher files (.desktop files) is only there to be replaced by a filepath if you ever associate a file type with a launcher3. By default, if you just double click the launcher icon on the desktop, the %u evaluates to nothing, so what we should really execute is actually just:

/opt/resolve/bin/resolve

Sure enough, it does display an error: "/opt/resolve/bin/resolve: symbol lookup error: /lib/x86_64-linux-gnu/libpango-1.0.so.0: undefined symbol: g_once_init_leave_pointer." And that's all it displays before returning the control to the terminal.

This happens because it failed to load the required libraries. You know, those libraries that we had to install, because it couldn't install automatically, and then we had to skip the dependencies, because it also couldn't find them after we installed them. Now we also have to manually tell the system to load those libraries because DaVinci can't find them.

We do this with the environment variable LD_PRELOAD. For example, if we run the following single-line command in the terminal, DaVinci Resolve will run.

env LD_PRELOAD=/lib/x86_64-linux-gnu/libglib-2.0.so.0:/lib/x86_64-linux-gnu/libgio-2.0.so.0:/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0:/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 /opt/resolve/bin/resolve

This should work. If it doesn't, I don't know how to help you.

If it does, then we can just fix the launcher. Right-click the launcher on the desktop to open its context menu, click on Properties, then replace the command with the code above plus the %u it had before. I'll just write all of it below:

env LD_PRELOAD=/lib/x86_64-linux-gnu/libglib-2.0.so.0:/lib/x86_64-linux-gnu/libgio-2.0.so.0:/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0:/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 /opt/resolve/bin/resolve %u

Just copy the code above and paste it in the command field in the launcher properties, and DaVinci should run with a simple double-click on its desktop icon.

A dialog window titled "DaVinci Resolve Properties." It has four fields, Name, Description, Command, and Comment, related to launching DaVinci Resolve. The value for the command field starts with "env LD_PRELOAD=/lib/x9._64-linux-gnu/..."
Launcher properties of DaVinci Resolve on Linux Mint.

If in the future you need to change this or test it, it's a good idea to the Text Editor (xed) to write the code you want to run in the terminal (in bash) in a text file; save it somewhere with the .sh file extension, e.g. davinci.sh, then make it executable by going to its file properties or with chmod +x davinci.sh. Then you'll be able to run the file by double-clicking it, or from the terminal with ./davinci.sh.

The first time you successfully run DaVinci Resolve, you'll be prompted to configure it, setting for example where you want your videos to be stored. This defaults to ~/videos. If you want to change it to ~/video-projects, or save them in a different disk from your operating system, now would be a good time to configure it.

After that, you should see DaVinci's typical start up screen, and from there on it works like on Windows.

DaVinci Resolve 19's project selection window shown at start up, with only a new, "Untitled Project" to select, running on Linux Mint's default desktop environment: Cinnamon.
A screenshot of DaVinci Resolve 19 running on Linux Mint 22, on Cinnamon.

Part 6: Fixing Mute & Black Mp4 Video Clips

One problem you may run into using DaVinci Resolve on Linux, specially if you have used it on Windows before, is that some video clips you import, video files with sound, will be imported without audio, mute, or will be imported without video, just the audio with a black screen, i.e. the clip will have no audio output or no video output, and if you're unlucky it won't get imported at all.

The reason for this is that DaVinci Resolve supports (slightly) different formats in different platforms. For every format, there is different support for encoding (saving as) and decoding (importing). I'm only going to include here a summary of decoding support, since that will be the biggest problem. And some conclusions below with possible workarounds.

According to the official documentation for DaVinci Resolve 18.54, the situation on audio is the following:

FormatRocky Linux 8.6Windows 10
wavPCM 12/24/32-bit(same)
aiffPCM 12/24/32-bit(same)
mp3Constant bit rate(same)
aac/m4a-CBR, VBR, average
flacYes(same)
u-law
(mov)
Yes(same)
IMF audio
(mxf Op1A)
Yes(same)
OPUS
(mov, mp4)
Yes(same)
ac3Yes(same)
Audio formats supported by DaVinci Resolve 18.5. "(same)" indicates the same value was found the support tables of both systems.

As for the video support:

FormatFile ex.Rocky Linux 8.6Windows 10
Apple ProResimf422, 422 HQ, 4444, 4444 XQ(same)
Apple ProResmov, mkv422, 422 HQ, 422 LT, 422 Proxy,
4444, 4444 XQ
(same)
Apple ProResmxf Op1A,
mxf Op‑Atom
422, 422 HQ, 422 LT, 422 Proxy,
4444, 4444 XQ
(same)
ArriRawari, arx12-bit, 16bit(same)
ArriRawmxf Op1AYes(same)
Avid 1:1mxf Op1A,
mxf Op‑Atom
Yes(same)
BlackmagicbrawYes(same)
Canonmxf Op1AXF-AVC, XF-AVC Intra, XF-HEVC(same)
Canonxml OpAtomXF-AVC, XF-AVC Intra, XF-HEVC(same)
CanonmtsC100 8 bit, C100 Mk2, XA15, XA11,
XA35, XA30
(same)
CanonmovC200 RAW, XF-AVC Intra, XF-MPEG(same)
Cintel RawcriYes(same)
DNxHDmov,
mxf Op1A,
mxf Op‑Atom
Yes(same)
DNxHRmov,
mxf Op1A,
mxf Op‑Atom
Yes(same)
FFV1mov,mkvYes(same)
GIFgifYes(same)
GoPro CineFormaviNative, YUV 10-bit, RGB 16-bit(same)
GoPro CineFormmovNative, YUV 10-bit, RGB 16-bit(same)
Grass ValleyaviHQ, HQX, Lossless(same)
Grass ValleymovHQ, HQX, Lossless(same)
H.264movStudio Only (GPU accelerated
on Nvidia graphics)
8-bit OS-supported profiles.
More profiles and GPU acceleration
in Studio
H.264mkvStudio Only (GPU accelerated
on Nvidia graphics)
8-bit OS-supported profiles.
More profiles & GPU acceleration
in Studio
H.264mp4Studio Only (GPU accelerated
on Nvidia graphics)
8-bit OS-supported profiles.
More profiles and GPU acceleration
in Studio
H.265movStudio Only (GPU accelerated
on Nvidia graphics)
8-bit OS-supported profiles.
More profiles and GPU acceleration
in Studio
H.265mkvStudio Only (GPU accelerated
on Nvidia graphics)
8-bit OS-supported profiles.
More profiles & GPU acceleration
in Studio
H.265mp4Studio Only (GPU accelerated
on Nvidia graphics)
8-bit OS-supported profiles.
More profiles and GPU acceleration
in Studio
AV1mov, mp4,
mkv
Yes, GPU accelerated (Nvidia graphics)Yes, GPU accelerated
IMF and DCPdcpNative DCP, Kakadu jpeg2000
formats, HT-J2K
(same)
IMF and DCPimfNative IMF, IMP, Apple ProRes
formats, HT-J2K, Kakadu jpeg2000
formats (including Dolby P3D65)
(same)
JPEG2000 videomov,
mxf Op1A,
mxf Op‑Atom
Yes(same)
JPEG2000 videomj2Yes(same)
MPEGmtsAVCHD and HDV(same)
MPEGm2tsAVCHD(same)
MPEGmxf Op1A,
mxf Op‑Atom
MPEG2, D-10 IMX(same)
MPEGmovMPEG2, MPEG4, MPEG IMX variants(same)
Nikon RAWnev-Yes
Panasonicmxf Op1BP2 DVC Pro(same)
PanasonicmovAVC-Intra 50M and 100 M: 720p
(24/25/30/50/60), 1080i (50/60),
1080p (24/25/30/50/60),
DVCPRO: NTSC, PAL, DVCPRO50:
NTSC, PAL, DVCPRO: 720p (50/60),
1080i (50/60), 1080p (25/30)
(same)
Panasonicshv8-bit, Studio only: 10-bit(same)
PanasonicvrwYes(same)
Phantom CINEcineYes(same)
REDr3dYes, GPU accelerated(same)
SonymovXAVC, XAVC Intra, XDCAM 35MB VBR:
720p EX (24/25/30/50/60), 1080i
EX (50/60), 1080p EX (24/25/30),
1080p HD (24/25/30), XDCAM
HD422 (50MB CBR): 720p (50/60),
1080i (50/60), 1080p (24/25/30)
(same)
Sonymxf Op1Amxf Op-1A, CV X-OCN LT/ST/XT,
F5/F55 X-OCN LT/ST,
F5/F55 Raw SQ/SQ Lite,
F65 Raw HFR/SQ/SQ Lite,
FS700 Raw SQ/SQ Lite,
XAVC, XAVC Intra, XAVC-H,
XDCAM MPEG2, Cine AltaV,
Cine AltaV2
(same)
Sonymxf Op‑Atommxf Op-Atom, CV X-OCN LT/ST/XT,
F5/F55 X-OCN LT/ST, F5/F55 Raw
SQ/SQ Lite, F65 Raw HFR/SQ/
SQ Lite, FS700 Raw SQ/SQ Lite,
XAVC, XAVC Intra, XDCAM MPEG2,
Cine AltaV, Cine AltaV2
(same)
UncompressedaviUncompressed (BGRA 8-bit,
RGB 10-bit, YUV 422 8/10-bit)
(same)
UncompressedmovUncompressed (ARGB/BGRA 8-bit,
RGB 8/10-bit, YUV 422 8/10-bit)
(same)
Uncompressedmxf Op1AUncompressed (RGB 10-bit, UYVY
8/10-bit), DNxUncompressed
RGB & YUV (8/10/12-bit, float/half)
(same)
Uncompressedmxf Op‑AtomUncompressed (RGB 10-bit, UYVY
8/10-bit), DNxUncompressed
RGB & YUV (8/10/12-bit, float/half)
(same)
VP9movYes(same)
AVIaviDV and PhotoJPEG(same)
MKVmkvH.264, H.265 and VP9(same)
MXF AVCmxf Op1A,
mxf Op‑Atom
Yes(same)
QuickTimemovAnimation QuickTime, HDV 720p
(24/25/30/50/60), 1080i (50/60),
1080p (24/25/30), DV - PAL,
MotionJPEG, PhotoJPEG, PNG
(same)
Video formats supported by DaVinci Resolve 18.5. "(same)" indicates the same value was found the support tables of both systems.

As you may notice from a quick glance on the tables above, the support is remarkably almost identical on both Windows and Linux, which means that for the most apart, assuming there are no issues with Nvidia, Wayland, Pulseaudio, or some other Linux thing, DaVinci should be able to import almost every file format it supports on Windows.

A few notable exceptions:

There is no aac support on Linux. I wish it said "No" instead of "-" to be clearer. That might sound like it's not a problem since it's only one audio format, but many .mp4 video files will have their embedded audio encoded as either ac3 or aac, which means some of them simply won't have working audio on Linux.

The H.264 and H.265 video codecs can be decoded on Windows on their 8-bit profiles in the free version of DaVinci resolve, but they can't on the Linux version. You can imagine, considering everything else just works on both platforms, that the problem here isn't that DaVinci doesn't have the code to make it work, it's just they don't have the license. I assume Microsoft has paid the codec developers for the license that they include in Windows, and because the codec is proprietary it doesn't come installed by default in Rocky Linux. These codecs are also very commonly used with .mp4 files, which means .mp4 files can only be reliably imported on Windows, and not on Linux.

Lastly, the AVI format seems to only work Nvidia graphics cards. And Nikon RAW is only available for Windows.

Except for these, you probably won't have trouble importing video clips, so I assume it's not a problem at all if you import data from a professional video camera. If all you want to do is take a .webm from Reddit to add a text to it then reupload it to a meme subreddit, you're out of luck because DaVinci doesn't even support WebM's on Windows.

In any case, there is a way to "fix" the files. For this, we'll FFMpeg, which a CLI program to convert video files.

First, install FFMpeg as it doesn't come installed by default in Linux Mint.

sudo apt install ffmpeg

Next, figure out which settings you have to give to ffmpeg to get a video file that actually imports into DaVinci.

Let's say you have a webm file. WebM is an unsupported container format, but it could contain supported audio and video data. So, in the best case scenario, all you would need to do is to copy the contained data to a container in a different format. We can do this with FFMpeg using this command:

ffmpeg -i input.webm -c:a copy -c:v copy output.mkv

If your problem is that the audio or video data isn't in a support format, which is likely to happen with MP4 files, you'll need to re-encode it, which of course means you'll lose data because audio and video formats are often lossy. In this case we need something like this instead:

ffmpeg -i input.mp4 -c:a ac3 -q:a 0 -c:v mpeg4 -q:v 0 output.mp4

This will convert the audio to ac3 and video to mpeg4 with maximum possible (lossy) quality, 0. Note that this may generate huge files depending on how large was your footage to begin with, so you may need to change the quality parameters a higher number, which will decrease the quality of the audio and video, but will create smaller files.

In theory, this should work.

I tested with a random mp4 video I downloaded from a social media website. As one would expect, it had no audio, and the video was fully black. According to mediainfo, the video codec was avc1, and the audio codec was mp4a-40-5. So these codecs don't work, at least on Linux.

I converted it with the command above. Now I have video, but still no audio. mediainfo says the output file has the video codec mp4v-20, and the audio codec ac-3.

Note: the file I downloaded was 7 minutes long and 27 megabytes. After being converted it became over 140 megabytes, so you can see why you may want to use something other than 0 for quality.

Note: in both cases, I can play the video with audio just fine in a web browser or in Celluloid, Cinnamon's default video player. It's just DaVinci Resolve that doesn't decode it properly.

I tried with mkv instead, same settings, same result. It seems ac3 isn't actually supported on Linux, or perhaps it only works on Rocky Linux? I'm not sure. I don't know a lot about video. But now I'm uncertain about my ability to get reliable information from the official documentation. Does DaVinci support all those formats on Linux like it said, or does it just say it supports them and when you try it, it doesn't actually work?

We still have some audio codecs to try. At least the video works, so we don't have to worry about that. Let's see Opus, next. This is a libreware codec used in WebMs, so it should have less problems.

ffmpeg -i input.mp4 -c:a libopus -q:a 0 -c:v mpeg4 -q:v 0 output.mp4

This works. There is audio in DaVinci.

Another codec we can use is FLAC, which is a lossless, compressed audio codec. Note that it seems some FFMpeg versions are compiled without FLAC support. This varies from distro to distro. On Linux Mint 22, we do have FLAC support, so we can run this:

ffmpeg -i input.mp4 -c:a flac -q:a 0 -c:v mpeg4 -q:v 0 output.mp4

This works. There is audio in DaVinci.

A last codec we can try is uncompressed audio in PCM format. It seems we have pcm_s16le for 16-bit and pcm_s24le for 24-bit PCM. If I remember correctly, there is only official support for 12/24/32-bit PCM. Do we have a 12?

ffmpeg -i input.mp4 -c:a pcm_s12le -q:a 0 -c:v mpeg4 -q:v 0 output.mp4

This doesn't work. There is no pcm_s12le codec. Let's try with 16.

ffmpeg -i input.mp4 -c:a pcm_s16le -q:a 0 -c:v mpeg4 -q:v 0 output.mp4

This works. there is audio in DaVinci.

I don't know why this works. I suppose they just forgot to write they supported 16-bit PCM? Let's try with 24-bit.

ffmpeg -i input.mp4 -c:a pcm_s24le -q:a 0 -c:v mpeg4 -q:v 0 output.mp4

MY EARS!!!

Okay, this definitely won't work, since it turns into static noise in Celluloid for some reason. Does it miraculously work inside DaVinci only? Nope. It just doesn't work. It ruins the audio completely. I didn't even know this was possible.

In conclusion, we can use flac, libopus, and pcm_s16le audio codecs, and the mpeg4 codec to make a MP4 file functional in DaVinci on Linux.

References

  1. https://forum.blackmagicdesign.com/viewtopic.php?f=21&t=183848 (accessed in 2024-08-26) ↩︎
  2. https://forum.blackmagicdesign.com/viewtopic.php?p=1044644#p1044644 (accessed 2024-08-27) ↩︎
  3. https://askubuntu.com/questions/30210/what-does-u-mean-when-calling-a-command (accessed 2024-08-27) ↩︎
  4. https://documents.blackmagicdesign.com/SupportNotes/DaVinci_Resolve_18_Supported_Codec_List.pdf?_v=1705996810000 (accessed 2024-08-27) ↩︎

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *