Add GIT Converter Script

Working version (as of v2.5)
This commit is contained in:
Jake P 2025-12-10 20:05:49 +00:00
parent 0c86d9c793
commit 460c4a2214

View File

@ -0,0 +1,144 @@
#!/bin/bash
# ===================================================================
# GIT Converter — FINAL — 1080p FORCED + 60 FPS FIXED
# Author: LeakTechnologies
# ===================================================================
OUT="Converted"
mkdir -p "$OUT"
clear
cat << "EOF"
╔═══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ GIT Converter (December 2025)
║ by LeakTechnologies ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════════╝
EOF
# — Resolution —
echo " Choose your resolution:"
echo
echo " 1) Source file resolution (no upscale)"
echo " 2) 720p (1280×720)"
echo " 3) 1080p (1920×1080)"
echo " 4) 1440p (2560×1440)"
echo " 5) 4K (3840×2160)"
echo " 6) 2X Upscale"
echo " 7) 4X Upscale"
echo
read -p " Enter 17 → " res
case $res in
1) scale="" ; res_name="Source" ;;
2) scale="1280:720" ; res_name="720p" ;;
3) scale="1920:1080" ; res_name="1080p" ;;
4) scale="2560:1440" ; res_name="1440p" ;;
5) scale="3840:2160" ; res_name="4K" ;;
6) scale="iw*2:ih*2" ; res_name="2X" ;;
7) scale="iw*4:ih*4" ; res_name="4X" ;;
*) echo "Invalid — using 1080p"; scale="1920:1080"; res_name="1080p" ;;
esac
# — Codec + FPS + Container —
clear
cat << "EOF"
╔═══════════════════════════════════════════════════════════════╗
║ Choose codec + FPS ║
╚═══════════════════════════════════════════════════════════════╝
1) [MKV] AV1_AMF — Original FPS
2) [MKV] HEVC — Original FPS
3) [MKV] AV1_AMF — 60 FPS
4) [MKV] HEVC — 60 FPS
5) [MP4] HEVC — Original FPS
6) [MP4] HEVC — 60 FPS
EOF
echo
read -p " Enter 16 → " c
case $c in
1|3) codec="av1_amf" ;;
2|4|5|6) codec="hevc_amf" ;;
*) echo "Invalid — exiting"; sleep 3; exit ;;
esac
case $c in
1|2|3|4) ext="mkv" ;;
5|6) ext="mp4" ;;
esac
case $c in
3|4|6) fps_filter=",fps=60"; suf="_60fps" ;;
*) fps_filter=""; suf="" ;;
esac
# — Bitrate Selection —
clear
cat << "EOF"
╔═══════════════════════════════════════════════════════════════╗
║ Choose bitrate ║
╚═══════════════════════════════════════════════════════════════╝
1) 1800 kbps
2) 2000 kbps
3) 2300 kbps
4) 2600 kbps
5) 2900 kbps
6) 3200 kbps
7) 3500 kbps
8) 3800 kbps
9) Source file bitrate
EOF
echo
read -p " Enter 19 → " b
case $b in
1) BITRATE="1800k" ;;
2) BITRATE="2000k" ;;
3) BITRATE="2300k" ;;
4) BITRATE="2600k" ;;
5) BITRATE="2900k" ;;
6) BITRATE="3200k" ;;
7) BITRATE="3500k" ;;
8) BITRATE="3800k" ;;
9) BITRATE="source" ;;
*) BITRATE="2400k"; echo "Invalid → using default 2400k" ;;
esac
# Force 8-bit input
bitdepth_filter="-pix_fmt yuv420p"
echo
echo "Encoding → $codec | $res_name | $ext $suf @ ${BITRATE:-source} kbps"
echo
for f in *.mp4 *.mkv *.mov *.avi *.wmv *.ts *.m2ts; do
[[ -f "$f" ]] || continue
out="$OUT/${f%.*}${suf}__cv.$ext"
[[ -f "$out" ]] && { echo "SKIP $f"; continue; }
# Source bitrate if chosen
if [ "$BITRATE" = "source" ]; then
src_bitrate=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of csv=p=0 "$f" 2>/dev/null || echo 2400000)
this_bitrate=$(( src_bitrate / 1000 ))k
else
this_bitrate="$BITRATE"
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")"
echo
done
echo "========================================================"
echo "All finished — files in '$OUT'"
echo "========================================================"
read -p "Press Enter to exit"