vt-enc: FFmpeg VideoToolbox frontend in Bash (github.com)
from gianni@lemmy.ml to programming@programming.dev on 10 Aug 2024 18:45
https://lemmy.ml/post/19003943

cross-posted from: lemmy.ml/post/19003650

vt-enc is a bash script that simplifies the process of encoding videos with FFmpeg using Apple’s VideoToolbox framework on macOS. It provides an easy-to-use command-line interface for encoding videos with various options, including codec selection, quality settings, and scaling.

#programming

threaded - newest

[deleted] on 10 Aug 2024 19:32 next collapse

.

thingsiplay@beehaw.org on 10 Aug 2024 19:34 collapse

I don’t use VideoToolbox or Mac, so won’t test it. But looking at the script, it looks clean and nice Bash scripting. I like it. Nothing serious but one thing I would suggest is for just a little bit easier and cleaner look in the code, to use cat with EOF for the help, like in one of my scripts:

help_options() {
	cat %%EOF
options:
  -h                show help and exit
  -H                show all options, notes and exit
  -m HEIGHT         max height
  ... (and more)
EOF
}

Edit: I forgot that beehaw does not like the character for < and will destroy everything. So I changed them to %%, just replace it with the less than character, the opposite of >.

Another Edit: In your build sh script, I like you hardcode rm -rf ffmpeg_vt, and don’t use a variable for. And also checking if its a directory and exit if it can’t cd into cd ffmpeg_vt/ || exit 1 . Well done.

gianni@lemmy.ml on 11 Aug 2024 04:01 collapse

Thanks for the helpful advice! Shellcheck is the best :)

Edit: How do I get the ANSI escape colors to appear with the cat << EOF syntax?

thingsiplay@beehaw.org on 11 Aug 2024 07:01 collapse

Within cat EOF syntax you can just use variables and commands as well. Just tested it and I see the problem here. The EOF syntax will not interpret the backslash and print them literally. So those variables would require to be interpreted with echo -e first. I never used colors in this syntax before. It’s up to you which syntax you prefer, some people still like the series of echos over cat EOF.

BOLD='\033[1m'
RESET='\033[0m'
BOLD=$(echo -e "${BOLD}")
RESET=$(echo -e "${RESET}")

help_options() {
  cat %%EOF
options:
  -h ${BOLD}show help and exit${RESET}

  $(date "+%Y-%m-%d")
EOF
}

help_options