Files
godot-website/misc/scripts/process_video.sh
Adam Scott 5387797774 Godot 4.5 release page
Huge thanks to JohnVeness, AThousandShips, and Meorge for their
great help rewording my broken English.
2025-09-15 16:03:40 -04:00

101 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
trap 'exit 1' SIGINT
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
source "${SCRIPT_DIR%/}/utils.sh"
GODOT_WEBSITE_VIDEO_FFMPEG="${GODOT_WEBSITE_VIDEO_FFMPEG:-ffmpeg}"
QUALITY="2M"
INPUT=""
OUTPUT=""
show_help() {
echo "Usage: $(basename "$0") [-q=2M] [-h] input output"
echo " -q Quality"
echo " -s Scale 'N:N', with -1 if you want to keep aspect ratio"
echo " -h Help"
echo ""
echo "Environment variables:"
echo " GODOT_WEBSITE_VIDEO_FFMPEG Path to \`ffmpeg\` (detault: 'ffmpeg')"
returncode="${1:-0}"
exit "$returncode"
}
parse_args() {
while getopts 'q:s:h' opt; do
case "$opt" in
q)
QUALITY="$OPTARG"
;;
s)
SCALE="$OPTARG"
;;
h)
show_help
;;
?)
show_help 1
;;
esac
done
if [ "$#" -eq 0 ]; then
show_help
fi
test_ffmpeg
INPUT="${*:$OPTIND:1}"
OUTPUT="${*:$OPTIND+1:1}"
if [ -z "$INPUT" ]; then
echo_err "Error: no input given"
show_help 1
fi
if [ -z "$OUTPUT" ]; then
echo_err "Error: no output given"
show_help 1
fi
}
main() {
parse_args "$@"
declare -a scale_param=()
if [ -n "$SCALE" ]; then
scale_param+=("-vf" "scale=$SCALE")
fi
set -ex
local pass_one_args=(
"-i" "$INPUT"
"-c:v" "libvpx-vp9"
"-b:v" "$QUALITY"
"-pass" "1"
"-an"
"${scale_param[@]}"
"-f" "null"
"$OUTPUT"
)
pass_two_args=(
"-i" "$INPUT"
"-c:v" "libvpx-vp9"
"-b:v" "$QUALITY"
"-pass" "2"
"-c:a" "libopus"
"${scale_param[@]}"
"$OUTPUT"
)
"$GODOT_WEBSITE_VIDEO_FFMPEG" "${pass_one_args[@]}"
"$GODOT_WEBSITE_VIDEO_FFMPEG" "${pass_two_args[@]}"
set +ex
}
main "$@"