29 lines
527 B
Bash
Executable File
29 lines
527 B
Bash
Executable File
#!/bin/sh
|
|
|
|
PROGNAME="$0"
|
|
|
|
set -e
|
|
#set -x
|
|
|
|
usage() {
|
|
echo "usage: $PROGNAME FILENAME NUMBER"
|
|
exit
|
|
}
|
|
|
|
get_duration() {
|
|
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$1" | awk '{print int($1+0.5)}'
|
|
}
|
|
|
|
[ $# -lt 2 ] && usage
|
|
|
|
file="$1"
|
|
left="$2"
|
|
|
|
duration=$(get_duration "$file")
|
|
#echo "duration: $duration"
|
|
|
|
for n in $(seq 1 $left); do
|
|
time=$(shuf -i 1-$duration -n 1)
|
|
ffmpeg -y -nostats -loglevel error -ss $time -i "$file" -frames:v 1 -q:v 2 "${file}_$n.jpg" </dev/null || true
|
|
done
|