From 8e440d74da6a906c4f648b5c4cedb17f5e0370f8 Mon Sep 17 00:00:00 2001 From: Michael Campagnaro Date: Thu, 24 Mar 2022 20:18:05 -0400 Subject: [PATCH] Add a script to trim videos --- aliases | 4 ++-- bin/compress-video-with-crf | 2 +- bin/trim-video | 46 +++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 bin/trim-video diff --git a/aliases b/aliases index 0d3e539..ba67f48 100644 --- a/aliases +++ b/aliases @@ -544,9 +544,9 @@ dl_twitch_vid() { printf "${BOLD}Downloading Twitch vid with compression.${NORMAL}\n" fi if [[ $format == "" ]]; then + # Twitch only supplies pre-merged mp4s so we can ask for the best format and not worry about anything else. printf "${BOLD}No format given; using best available.${NORMAL}\n" - format="best" - #opts+=" --merge-output-format mp4" + format="b" fi if [[ $make_folder == "1" ]]; then diff --git a/bin/compress-video-with-crf b/bin/compress-video-with-crf index 3c16911..13b3219 100644 --- a/bin/compress-video-with-crf +++ b/bin/compress-video-with-crf @@ -63,7 +63,7 @@ function encode() { else ffmpeg $timing_args -i "$filename.$extension" -c:v libx264 -crf $crf -preset veryfast -profile:v baseline -level 3.0 -strict -2 "$output" fi - printf "\n${GREEN}${BOLD}Done encoding '$filename.$extension' (CRF $crf) | output name '$output'${NORMAL}\n\n" + printf "\n${GREEN}${BOLD}Finished encoding '$filename.$extension' (CRF $crf) | output name '$output'${NORMAL}\n\n" } if [[ $use_crf -ne -1 ]]; then diff --git a/bin/trim-video b/bin/trim-video new file mode 100644 index 0000000..723fecb --- /dev/null +++ b/bin/trim-video @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +if which tput >/dev/null 2>&1; then + ncolors=$(tput colors) +fi +if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then + RED="$(tput setaf 1)" + GREEN="$(tput setaf 2)" + YELLOW="$(tput setaf 3)" + BLUE="$(tput setaf 4)" + MAGENTA="$(tput setaf 5)" + CYAN="$(tput setaf 6)" + BOLD="$(tput bold)" + NORMAL="$(tput sgr0)" +else + RED="" + GREEN="" + YELLOW="" + BLUE="" + MAGENTA="" + CYAN="" + BOLD="" + NORMAL="" +fi + +filename=$(basename -- "$1") +output_name="$2" +start_time="$3" +end_time="$4" + +if [[ $filename == "" || $output_name == "" || $start_time == "" || $end_time == "" ]]; then + printf "${BOLD}${RED}Usage: $0 ${NORMAL}\n" + exit 1 +fi + +extension="${filename##*.}" +filename="${filename%.*}" +output="${output_name}.$extension" +timing_args="-ss $start_time -to $end_time" + +printf "\n${YELLOW}${BOLD}Trimming '$filename.$extension' | output: $output | start: $start_time | end: $end_time${NORMAL}\n" + +ffmpeg -y -stats -loglevel level+error $timing_args -i "$filename.$extension" -c:a copy -c:v copy "$output" + +printf "\n${GREEN}${BOLD}Finished trimming${NORMAL}\n\n" +