the.bay.news

My FFmpeg Bash Functions

programming.dev
My FFmpeg Bash Functions
bash remove_extension() { sed -E 's/^(.+)\.[^.]+$/\1/' } get_extension() { sed -E '/^\.?[^.]+$/d; s/^.+\.([^.]*)$/\1/' } ffmpeg_av1_opus() { if [ "$#" -lt 4 ]; then return fi ffmpeg -i "$4" -c:v libsvtav1 -preset "$1" -crf "$2" -c:a libopus -b:a "$3" "${5:-"$(echo "$4" | remove_extension)_ffmpeg_av1_$1_$2_opus_$3.mkv"}" } ffmpeg_av1_lossless_flac() { if [ "$#" -eq 0 ]; then return fi ffmpeg -i "$1" -c:v libsvtav1 -svtav1-params lossless=1 -preset -2 -c:a flac "${2:-"$(echo "$1" | remove_extension)_ffmpeg_av1_lossless_flac.mkv"}" } ffmpeg_opus() { if [ "$#" -lt 2 ]; then return fi ffmpeg -i "$2" -c:a libopus -b:a "$1" "${3:-"$(echo "$2" | remove_extension)_ffmpeg_opus_$1.opus"}" } ffmpeg_flac() { if [ "$#" -eq 0 ]; then return fi ffmpeg -i "$1" -c:a flac "${2:-"$(echo "$1" | remove_extension)_ffmpeg_flac.flac"}" } ffmpeg_segment() { if [ "$#" -lt 2 ]; then return fi ffmpeg -i "$2" -c copy -map 0 -segment_time "$1" -f segment -reset_timestamps 1 "${3:-"$(echo "$2" | remove_extension)_ffmpeg_%04d.$(echo "$2" | get_extension)"}" } ffmpeg_concat_auto() { local files=() if [ "$#" -eq 0 ]; then for f in *; do test -f "$f" && files+=("$f") done else files=("$@") fi ffmpeg -f concat -safe 0 -i <(printf "file '$PWD/%s'\n" "${files[@]}") -c copy "$(echo "${files[0]}" | remove_extension | sed -E 's/_ffmpeg_[0-9]+$//').$(echo "${files[0]}" | get_extension)" } ffmpeg_concat() { if [ "$#" -lt 2 ]; then return fi ffmpeg -f concat -safe 0 -i <(printf "file '$PWD/%s'\n" "${@:2}") -c copy "$1" }

0 comments

Sign in to join the discussion — your thebay.events account works here.

No comments yet.