ffmpeg_utils/total-duration.sh
2023-08-12 23:21:37 +03:00

36 lines
579 B
Bash
Executable File

#!/bin/sh
set -e
get_duration() {
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$1" | awk '{print int($1+0.5)}'
}
[ -z "$1" ] && {
echo "usage: $0 FILENAME [FILENAME ...]"
echo " or: $0 *.mp4"
exit 1
}
total=0
while [ $# -gt 0 ]; do
if [ -f "$1" ]; then
dur=$(get_duration "$1")
total=$(( total+dur ))
else
>&2 echo "error: $1: no such file"
exit 1
fi
shift
done
echo "$total seconds"
days=$(( total / 86400 ))
if [ $days -gt 0 ]; then
echo -n "${days}d "
fi
human="$(date -d@$total -u +%H:%M:%S)"
echo "$human"