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.
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
.
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.
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.
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:
Format | Rocky Linux 8.6 | Windows 10 |
wav | PCM 12/24/32-bit | (same) |
aiff | PCM 12/24/32-bit | (same) |
mp3 | Constant bit rate | (same) |
aac/m4a | - | CBR, VBR, average |
flac | Yes | (same) |
u-law (mov) | Yes | (same) |
IMF audio (mxf Op1A) | Yes | (same) |
OPUS (mov, mp4) | Yes | (same) |
ac3 | Yes | (same) |
As for the video support:
Format | File ex. | Rocky Linux 8.6 | Windows 10 |
Apple ProRes | imf | 422, 422 HQ, 4444, 4444 XQ | (same) |
Apple ProRes | mov, mkv | 422, 422 HQ, 422 LT, 422 Proxy, 4444, 4444 XQ | (same) |
Apple ProRes | mxf Op1A, mxf Op‑Atom | 422, 422 HQ, 422 LT, 422 Proxy, 4444, 4444 XQ | (same) |
ArriRaw | ari, arx | 12-bit, 16bit | (same) |
ArriRaw | mxf Op1A | Yes | (same) |
Avid 1:1 | mxf Op1A, mxf Op‑Atom | Yes | (same) |
Blackmagic | braw | Yes | (same) |
Canon | mxf Op1A | XF-AVC, XF-AVC Intra, XF-HEVC | (same) |
Canon | xml OpAtom | XF-AVC, XF-AVC Intra, XF-HEVC | (same) |
Canon | mts | C100 8 bit, C100 Mk2, XA15, XA11, XA35, XA30 | (same) |
Canon | mov | C200 RAW, XF-AVC Intra, XF-MPEG | (same) |
Cintel Raw | cri | Yes | (same) |
DNxHD | mov, mxf Op1A, mxf Op‑Atom | Yes | (same) |
DNxHR | mov, mxf Op1A, mxf Op‑Atom | Yes | (same) |
FFV1 | mov,mkv | Yes | (same) |
GIF | gif | Yes | (same) |
GoPro CineForm | avi | Native, YUV 10-bit, RGB 16-bit | (same) |
GoPro CineForm | mov | Native, YUV 10-bit, RGB 16-bit | (same) |
Grass Valley | avi | HQ, HQX, Lossless | (same) |
Grass Valley | mov | HQ, HQX, Lossless | (same) |
H.264 | mov | Studio Only (GPU accelerated on Nvidia graphics) | 8-bit OS-supported profiles. More profiles and GPU acceleration in Studio |
H.264 | mkv | Studio Only (GPU accelerated on Nvidia graphics) | 8-bit OS-supported profiles. More profiles & GPU acceleration in Studio |
H.264 | mp4 | Studio Only (GPU accelerated on Nvidia graphics) | 8-bit OS-supported profiles. More profiles and GPU acceleration in Studio |
H.265 | mov | Studio Only (GPU accelerated on Nvidia graphics) | 8-bit OS-supported profiles. More profiles and GPU acceleration in Studio |
H.265 | mkv | Studio Only (GPU accelerated on Nvidia graphics) | 8-bit OS-supported profiles. More profiles & GPU acceleration in Studio |
H.265 | mp4 | Studio Only (GPU accelerated on Nvidia graphics) | 8-bit OS-supported profiles. More profiles and GPU acceleration in Studio |
AV1 | mov, mp4, mkv | Yes, GPU accelerated (Nvidia graphics) | Yes, GPU accelerated |
IMF and DCP | dcp | Native DCP, Kakadu jpeg2000 formats, HT-J2K | (same) |
IMF and DCP | imf | Native IMF, IMP, Apple ProRes formats, HT-J2K, Kakadu jpeg2000 formats (including Dolby P3D65) | (same) |
JPEG2000 video | mov, mxf Op1A, mxf Op‑Atom | Yes | (same) |
JPEG2000 video | mj2 | Yes | (same) |
MPEG | mts | AVCHD and HDV | (same) |
MPEG | m2ts | AVCHD | (same) |
MPEG | mxf Op1A, mxf Op‑Atom | MPEG2, D-10 IMX | (same) |
MPEG | mov | MPEG2, MPEG4, MPEG IMX variants | (same) |
Nikon RAW | nev | - | Yes |
Panasonic | mxf Op1B | P2 DVC Pro | (same) |
Panasonic | mov | AVC-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) |
Panasonic | shv | 8-bit, Studio only: 10-bit | (same) |
Panasonic | vrw | Yes | (same) |
Phantom CINE | cine | Yes | (same) |
RED | r3d | Yes, GPU accelerated | (same) |
Sony | mov | XAVC, 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) |
Sony | mxf Op1A | mxf 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) |
Sony | mxf Op‑Atom | mxf 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) |
Uncompressed | avi | Uncompressed (BGRA 8-bit, RGB 10-bit, YUV 422 8/10-bit) | (same) |
Uncompressed | mov | Uncompressed (ARGB/BGRA 8-bit, RGB 8/10-bit, YUV 422 8/10-bit) | (same) |
Uncompressed | mxf Op1A | Uncompressed (RGB 10-bit, UYVY 8/10-bit), DNxUncompressed RGB & YUV (8/10/12-bit, float/half) | (same) |
Uncompressed | mxf Op‑Atom | Uncompressed (RGB 10-bit, UYVY 8/10-bit), DNxUncompressed RGB & YUV (8/10/12-bit, float/half) | (same) |
VP9 | mov | Yes | (same) |
AVI | avi | DV and PhotoJPEG | (same) |
MKV | mkv | H.264, H.265 and VP9 | (same) |
MXF AVC | mxf Op1A, mxf Op‑Atom | Yes | (same) |
QuickTime | mov | Animation QuickTime, HDV 720p (24/25/30/50/60), 1080i (50/60), 1080p (24/25/30), DV - PAL, MotionJPEG, PhotoJPEG, PNG | (same) |
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
- https://forum.blackmagicdesign.com/viewtopic.php?f=21&t=183848 (accessed in 2024-08-26) ↩︎
- https://forum.blackmagicdesign.com/viewtopic.php?p=1044644#p1044644 (accessed 2024-08-27) ↩︎
- https://askubuntu.com/questions/30210/what-does-u-mean-when-calling-a-command (accessed 2024-08-27) ↩︎
- https://documents.blackmagicdesign.com/SupportNotes/DaVinci_Resolve_18_Supported_Codec_List.pdf?_v=1705996810000 (accessed 2024-08-27) ↩︎
Leave a Reply