From db3eebea90e2a547c7892c060b56326df81c5d18 Mon Sep 17 00:00:00 2001 From: Raymaekers Luca Date: Thu, 25 Jan 2024 14:04:30 +0100 Subject: Add mpv-cut and bindings *Also added custom gitignore for mpv --- config/common/mpv/scripts/mpv-cut/utils | 44 +++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 config/common/mpv/scripts/mpv-cut/utils (limited to 'config/common/mpv/scripts/mpv-cut/utils') diff --git a/config/common/mpv/scripts/mpv-cut/utils b/config/common/mpv/scripts/mpv-cut/utils new file mode 100644 index 0000000..b64ca8e --- /dev/null +++ b/config/common/mpv/scripts/mpv-cut/utils @@ -0,0 +1,44 @@ +#! /usr/bin/env bash + +mcc() { + local list=( *.list ) + if [[ ${#list[@]} -ne 1 ]]; then + echo "Number of .list files in cwd must be exactly 1, exiting." + return 1 + fi + make_cuts "$list" "$@" + concat CUT -c copy "CONCAT_${list%.*}" +} + +concat() { + local prefix="$1" + shift + ffmpeg -f concat -safe 0 -i <(printf 'file %q\n' "$PWD"/"$prefix"*) "$@" +} + +make_cuts() { + local list="$1" + local vid="${list%.*}" + local ext="${vid##*.}" + local vid_noext="${vid%.*}" + local start_ts_hms + local end_ts_hms + shift + while IFS=: read -r channel_name start_ts end_ts || [[ -n "$channel_name" ]]; do + if [[ -z "$end_ts" ]]; then continue; fi + start_ts_hms="$(_mpv_cut_to_hms "$start_ts")" + end_ts_hms="$(_mpv_cut_to_hms "$end_ts")" + echo "$channel_name" "$start_ts" "$end_ts" + ffmpeg -nostdin -ss "$start_ts" -to "$end_ts" -i "$vid" "$@" "CUT_${channel_name}_${vid_noext}_${start_ts_hms}_${end_ts_hms}.${ext}" + done < "$list" +} + +_mpv_cut_to_hms() { + local total_seconds="$1" + local hours=$(( ${total_seconds%.*} / 3600 )) + local minutes=$(( (${total_seconds%.*} % 3600) / 60 )) + local seconds=$(( ${total_seconds%.*} % 60 )) + local ms + ms=$(printf "%.0f" "$(echo "($total_seconds - ${total_seconds%.*}) * 1000" | bc)") + printf "%02d-%02d-%02d-%03d\n" $hours $minutes $seconds "$ms" +} -- cgit v1.2.3