feat: add audio mode option to videncode script

This commit is contained in:
dabruh 2025-11-17 20:04:14 +01:00
parent b87863f375
commit 530c9307d4

View file

@ -44,6 +44,7 @@ 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() {
@ -62,6 +63,7 @@ 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
} }
@ -86,6 +88,7 @@ parse_args() {
--max-h) MAX_H="$2"; shift 2 ;; --max-h) MAX_H="$2"; shift 2 ;;
--overwrite-same) OVERWRITE_SAME=true; shift ;; --overwrite-same) OVERWRITE_SAME=true; shift ;;
--overwrite-different) OVERWRITE_DIFFERENT=true; shift ;; --overwrite-different) OVERWRITE_DIFFERENT=true; shift ;;
--audio-mode) AUDIO_MODE="$2"; shift 2 ;;
-h|--help) usage; exit 0 ;; -h|--help) usage; exit 0 ;;
--) shift; break ;; --) shift; break ;;
*) echo "Unknown argument: $1" >&2; usage; exit 1 ;; *) echo "Unknown argument: $1" >&2; usage; exit 1 ;;
@ -148,8 +151,13 @@ 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 copy streams unchanged for fidelity. # Sets audio flags to transcode to Opus or copy streams unchanged.
local audio_flags=("-c:a" "copy") local audio_flags
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;