95 lines
3.5 KiB
Bash
95 lines
3.5 KiB
Bash
#!/bin/bash
|
||
# ===================================================================
|
||
# Quality Settings Module - GIT Converter v2.7
|
||
# Handles quality modes and encoding parameters
|
||
# ===================================================================
|
||
|
||
get_quality_settings() {
|
||
local encoder="$1"
|
||
|
||
clear
|
||
cat << "EOF"
|
||
╔═════════════════════════════════════════════════════════════╗
|
||
║ Choose Quality Mode ║
|
||
╚═════════════════════════════════════════════════════════════╝
|
||
|
||
1) Source quality (bypass mode)
|
||
2) High Quality (CRF 18) - Recommended
|
||
3) Good Quality (CRF 20) - Balanced
|
||
4) DVD-NTSC Professional (MPEG-2)
|
||
5) DVD-PAL Professional (MPEG-2)
|
||
6) Custom bitrate
|
||
EOF
|
||
echo
|
||
|
||
while true; do
|
||
read -p " Enter 1–6 → " b
|
||
if [[ -n "$b" && "$b" =~ ^[1-6]$ ]]; then
|
||
break
|
||
else
|
||
echo " Invalid input. Please enter a number between 1 and 6."
|
||
fi
|
||
done
|
||
|
||
case $b in
|
||
1)
|
||
quality_params=""
|
||
quality_name="Source quality"
|
||
;;
|
||
2)
|
||
if [[ "$encoder" == *"av1"* ]]; then
|
||
quality_params="-crf 18 -preset 6"
|
||
quality_name="AV1 CRF 18"
|
||
else
|
||
quality_params="-crf 18 -quality 23"
|
||
quality_name="HEVC CRF 18"
|
||
fi
|
||
;;
|
||
3)
|
||
if [[ "$encoder" == *"av1"* ]]; then
|
||
quality_params="-crf 20 -preset 6"
|
||
quality_name="AV1 CRF 20"
|
||
else
|
||
quality_params="-crf 20 -quality 23"
|
||
quality_name="HEVC CRF 20"
|
||
fi
|
||
;;
|
||
4)
|
||
# DVD-NTSC Professional (MPEG-2)
|
||
quality_params="-c:v mpeg2video -b:v 6000k -g 15 -bf 2 -sc_threshold 1000000000"
|
||
quality_name="DVD-NTSC Professional"
|
||
echo "✅ DVD-NTSC: 720×480 @ 29.97fps, MPEG-2, 6000kbps"
|
||
;;
|
||
5)
|
||
# DVD-PAL Professional (MPEG-2)
|
||
quality_params="-c:v mpeg2video -b:v 8000k -g 12 -bf 2 -sc_threshold 1000000000"
|
||
quality_name="DVD-PAL Professional"
|
||
echo "✅ DVD-PAL: 720×576 @ 25fps, MPEG-2, 8000kbps"
|
||
;;
|
||
6)
|
||
echo
|
||
echo "Enter bitrate (e.g., 5000k, 8000k):"
|
||
read -p "→ " custom_bitrate
|
||
# Clean input - remove control characters but allow numbers and 'k'
|
||
custom_bitrate=$(echo "$custom_bitrate" | tr -cd '0123456789k')
|
||
# Remove any trailing/leading spaces
|
||
custom_bitrate=$(echo "$custom_bitrate" | xargs)
|
||
|
||
if [[ -n "$custom_bitrate" ]]; then
|
||
# Validate format (number followed by 'k')
|
||
if [[ "$custom_bitrate" =~ ^[0-9]+k$ ]]; then
|
||
quality_params="-b:v $custom_bitrate"
|
||
quality_name="Custom $custom_bitrate"
|
||
else
|
||
echo "Invalid format. Use format like: 3000k"
|
||
quality_params="-b:v 3000k"
|
||
quality_name="Custom 3000k"
|
||
fi
|
||
else
|
||
echo "No input provided, using default 3000k"
|
||
quality_params="-b:v 3000k"
|
||
quality_name="Custom 3000k"
|
||
fi
|
||
;;
|
||
esac
|
||
} |