From a8d42b2c8fe612252125a9399ef79ccd5dcd5edd Mon Sep 17 00:00:00 2001 From: Stu Leak Date: Wed, 10 Dec 2025 15:37:03 -0500 Subject: [PATCH] Add runtime encoder fallback to git_converter --- scripts/git_converter/git_converter.sh | 42 +++++++++++++++++++++----- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/scripts/git_converter/git_converter.sh b/scripts/git_converter/git_converter.sh index d7c6625..1b954aa 100755 --- a/scripts/git_converter/git_converter.sh +++ b/scripts/git_converter/git_converter.sh @@ -7,6 +7,22 @@ OUT="Converted" mkdir -p "$OUT" +# Choose best available encoder with runtime check +pick_encoder() { + # candidate list in order of preference + local candidates=("$@") + for enc in "${candidates[@]}"; do + # Quick runtime probe: attempt tiny encode and discard output + if ffmpeg -hide_banner -loglevel error \ + -f lavfi -i color=size=16x16:rate=1 -frames:v 1 \ + -c:v "$enc" -f null - >/dev/null 2>&1; then + echo "$enc" + return 0 + fi + done + return 1 +} + clear cat << "EOF" @@ -61,8 +77,8 @@ echo read -p " Enter 1–6 → " c case $c in - 1|3) codec="av1_amf" ;; - 2|4|5|6) codec="hevc_amf" ;; + 1|3) codec_pref=("av1_amf" "libaom-av1") ;; + 2|4|5|6) codec_pref=("hevc_amf" "hevc_nvenc" "h264_nvenc" "libx265") ;; *) echo "Invalid — exiting"; sleep 3; exit ;; esac @@ -76,6 +92,15 @@ case $c in *) fps_filter=""; suf="" ;; esac +# Resolve encoder now, once +codec=$(pick_encoder "${codec_pref[@]}") +if [ -z "$codec" ]; then + echo "No supported encoder found (tried: ${codec_pref[*]})." + echo "Install/enable GPU drivers or fall back to CPU codecs." + echo "Defaulting to libx265." + codec="libx265" +fi + # — Bitrate Selection — clear cat << "EOF" @@ -131,14 +156,17 @@ for f in *.mp4 *.mkv *.mov *.avi *.wmv *.ts *.m2ts; do fi # FINAL FIXED CONVERSION — 1080p FORCED + 60fps works - ffmpeg -y -i "$f" $bitdepth_filter -vf "scale=${scale}:flags=lanczos${fps_filter}" \ - -c:v "$codec" -b:v "$this_bitrate" -c:a aac -b:a 192k -ac 2 "$out" - - echo "DONE → $(basename "$out")" + if ffmpeg -y -i "$f" $bitdepth_filter -vf "scale=${scale}:flags=lanczos${fps_filter}" \ + -c:v "$codec" -b:v "$this_bitrate" -c:a aac -b:a 192k -ac 2 "$out"; then + echo "DONE → $(basename "$out")" + else + echo "FAILED → $f (encoder: $codec). Check ffmpeg output above." + rm -f "$out" + fi echo done echo "========================================================" echo "All finished — files in '$OUT'" echo "========================================================" -read -p "Press Enter to exit" \ No newline at end of file +read -p "Press Enter to exit"