You encouraged me to try again and somehow, blackmagically ;) it works this time. It may be that recent DaVinci version has made some improvement. I'm so happy!
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.
For those seeking quick solution for missing codecs, here are bash scripts that use ffmpeg to convert any input clips (including these problematic h.265/h.264) to format acceptable for DaVinci
#!/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"
Great to hear!
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!