#!/bin/bash ###################################################################### #Copyright (C) 2024 Kris Occhipinti #https://filmsbykris.com #This program is free software: you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation version 3 of the License. #This program is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with this program. If not, see . ###################################################################### file=$1 fn=${1##*/} dir=${file%$fn} name=${fn%.*} ext=${fn#$name} echo -n "Scanning ${file} ..." ffmpeg -i "$file" \ -filter:v "select='gt(scene,0.4)',showinfo" \ -f null \ - 2>&1 | tee ffout | while read l; do echo -n "."; done echo "" timestamps=(0) stamps=$(grep showinfo ffout | grep pts_time:[0-9.]* -o | grep [0-9.]* -o) timestamps+=($stamps) timestamps+=($(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$file")) for ((i = 1; i < ${#timestamps[@]}; i++)); do printf -v part '%02d' "$i" echo ffmpeg -ss "${timestamps[i - 1]}" -to "${timestamps[i]}" -i "$file" "$dir$name-$part$ext" done