Compare commits

..

No commits in common. "b1b8ce749b9d42cd270531e66a7d00b5264b006c" and "b87863f37596fd84222420d48b4262585c1e9729" have entirely different histories.

View file

@ -44,7 +44,6 @@ OVERWRITE_DIFFERENT=false
IS_BATCH=false IS_BATCH=false
INPUT_DIR="" INPUT_DIR=""
INPUT_FILES=() INPUT_FILES=()
AUDIO_MODE="transcode"
# Prints usage information to stdout. # Prints usage information to stdout.
usage() { usage() {
@ -63,7 +62,6 @@ Usage: $(basename "$0") -i input.mp4 [options]
--max-h Maximum height in pixels (default: ${DEFAULT_MAX_H}) --max-h Maximum height in pixels (default: ${DEFAULT_MAX_H})
--overwrite-same Overwrite output even if duration matches input --overwrite-same Overwrite output even if duration matches input
--overwrite-different Overwrite output even if duration differs from input --overwrite-different Overwrite output even if duration differs from input
--audio-mode Audio mode: transcode (default) or copy
-h, --help Show this help -h, --help Show this help
EOF EOF
} }
@ -77,67 +75,20 @@ parse_args() {
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case "$1" in case "$1" in
-i | --input) -i|--input) INFILE="$2"; shift 2 ;;
INFILE="$2" -o|--output) OUTFILE="$2"; shift 2 ;;
shift 2 -c|--crf) CRF="$2"; shift 2 ;;
;; -p|--preset) PRESET="$2"; shift 2 ;;
-o | --output) -m|--maxrate) MAXRATE="$2"; shift 2 ;;
OUTFILE="$2" -b|--bufsize) BUFSIZE="$2"; shift 2 ;;
shift 2 --extra) EXTRA_ARGS+=("$2"); shift 2 ;;
;; --max-w) MAX_W="$2"; shift 2 ;;
-c | --crf) --max-h) MAX_H="$2"; shift 2 ;;
CRF="$2" --overwrite-same) OVERWRITE_SAME=true; shift ;;
shift 2 --overwrite-different) OVERWRITE_DIFFERENT=true; shift ;;
;; -h|--help) usage; exit 0 ;;
-p | --preset) --) shift; break ;;
PRESET="$2" *) echo "Unknown argument: $1" >&2; usage; exit 1 ;;
shift 2
;;
-m | --maxrate)
MAXRATE="$2"
shift 2
;;
-b | --bufsize)
BUFSIZE="$2"
shift 2
;;
--extra)
EXTRA_ARGS+=("$2")
shift 2
;;
--max-w)
MAX_W="$2"
shift 2
;;
--max-h)
MAX_H="$2"
shift 2
;;
--overwrite-same)
OVERWRITE_SAME=true
shift
;;
--overwrite-different)
OVERWRITE_DIFFERENT=true
shift
;;
--audio-mode)
AUDIO_MODE="$2"
shift 2
;;
-h | --help)
usage
exit 0
;;
--)
shift
break
;;
*)
echo "Unknown argument: $1" >&2
usage
exit 1
;;
esac esac
done done
} }
@ -197,13 +148,8 @@ validate_input_single() {
# Assembles the full ffmpeg command array with all configured options. # Assembles the full ffmpeg command array with all configured options.
build_ffmpeg_cmd() { build_ffmpeg_cmd() {
# Sets audio flags to transcode to Opus or copy streams unchanged. # Sets audio flags to copy streams unchanged for fidelity.
local audio_flags local audio_flags=("-c:a" "copy")
if [[ "$AUDIO_MODE" == "transcode" ]]; then
audio_flags=("-c:a" "libopus")
else
audio_flags=("-c:a" "copy")
fi
# Constructs the ffmpeg video scaling filter to fit within max dimensions while preserving aspect ratio. # Constructs the ffmpeg video scaling filter to fit within max dimensions while preserving aspect ratio.
# Scale logic: for landscape (w>h), constrain width to MAX_W and height to MAX_H; # Scale logic: for landscape (w>h), constrain width to MAX_W and height to MAX_H;