Installation still requires workarounds and codecs support is limited, but having that aknowledged and accepted, the application is finally usable!
PS. I don't know where the h264 (and other codes?) limitation come from, since ffmpeg has full support of it. Or is it just business model? Weird.
I would guess the codec limitation might come from licensing requirements, as BMD would need to pay for h264/h265 licenses for Linux, and that can't really be sustainable for a free product. MacOS and Windows already come with licensed system codecs.
My project had ProRes source media, so there was no codec issue and everything worked very smoothly. I exported ProRes and used ffmpeg to transcode to whatever I needed.
I don't think I would have bothered trying to run Resolve on Linux were it not for finding that davincibox script. It was incredibly straightforward to install, and now I just start it by clicking on an icon like a regular application.
Have fun!
#!/usr/bin/env bash
set -euo pipefail
INPUT_DIR="${1:-}"
TARGET_FPS="${2:-30}"
if [[ -z "$INPUT_DIR" ]]; then
echo "Usage: $0 <directory with clips> [target fps (defaults to 30)]"
exit 1
fi
if [[ ! -d "$INPUT_DIR" ]]; then
echo "Error: directory does not exist: $INPUT_DIR"
exit 1
fi
OUTPUT_DIR="$INPUT_DIR/conv"
mkdir -p "$OUTPUT_DIR"
EXTENSIONS=(
mp4 avi wmv mpg mpeg mov
mkv m4v flv webm ts mts m2ts 3gp
)
shopt -s nullglob nocaseglob
for ext in "${EXTENSIONS[@]}"; do
for file in "$INPUT_DIR"/*."$ext"; do
filename="$(basename "$file")"
name="${filename%.*}"
output="$OUTPUT_DIR/${name}.mov"
echo "Konwersja: $file -> $output"
ffmpeg -y -i "$file" \
-map 0:v:0 -map "0:a?" \
-vf "fps=${TARGET_FPS}" \
-vsync cfr \
-c:v prores_ks -profile:v 1 \
-pix_fmt yuv422p \
-c:a pcm_s16le -ar 48000 \
"$output"
done
done
echo "Results in: $OUTPUT_DIR"
and then converting final exported video to h.265: #!/usr/bin/env bash
set -euo pipefail
INPUT="${1:-}"
CRF="${2:-21}"
PRESET="${3:-slow}"
if [[ -z "$INPUT" ]]; then
echo "Usage: $0 <input file> [crf=21] [preset=slow]"
exit 1
fi
if [[ ! -f "$INPUT" ]]; then
echo "Error: file does not exist: $INPUT"
exit 1
fi
DIR="$(dirname "$INPUT")"
FILE="$(basename "$INPUT")"
NAME="${FILE%.*}"
OUTPUT="$DIR/${NAME}_h265.mp4"
ffmpeg -y -i "$INPUT" \
-map 0:v:0 -map '0:a?' \
-c:v libx265 \
-preset "$PRESET" \
-crf "$CRF" \
-pix_fmt yuv420p \
-tag:v hvc1 \
-c:a aac \
-b:a 192k \
-movflags +faststart \
"$OUTPUT"
echo "Ready: $OUTPUT"Got my license when I bought a second hand Blackmagic camera, must have been 5-6 major Resolve versions ago, and it still works as a charm! They're a rare star among a sea of trash in the software and (arguably bit less trash) hardware world.
I run Resolve under CachyOS using the project I mentioned -- everything works afaict.
Why though? I run it perfectly fine on Arch as-is, what problem does containers solve here? Install it to different paths and you have different versions working too.