#!/bin/bash # # Join and encode video N-times faster. # set -e # VARIABLES SELFNAME=$(basename $0) # FUNCTIONS cleanup() { rm -f "$CONCAT_FILE" } get_video_filter() { echo "setpts=PTS/$1" } get_audio_filter() { bc < max) { break; } if (f > 1) { print "," } print "atempo=2.0" f *= 2 } if (f == max) { } else { print ",atempo=", max/f } END } die() { printf "%s\n" "$1" >&2 exit 1 } print_help() { cat >&2 <> "$CONCAT_FILE" done [[ -z "$OUTPUT" ]] && OUTPUT=$(tempfile -d . --suffix .mp4) ffmpeg -f concat -i "$CONCAT_FILE" \ -strict -2 \ -c:v libx264 -preset slow -crf 22 \ -c:a aac -b:a 128k \ -filter_complex "[0:v]$VIDEO_FILTER[v];[0:a]$AUDIO_FILTER[a]" \ -map "[v]" -map "[a]" \ -y "$OUTPUT"