Files
dotfiles/profiles/desktop/.local/bin/video_extract
2026-02-13 04:20:30 +01:00

50 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
usage() {
echo "Usage: $(basename "$0") file_name start end"
}
extract_images() {
local video_file=$1
local start=$2
local end=$3
local start_in_seconds
local end_in_seconds
local date_diff
start_in_seconds=$(date --date "${start}" +%s)
end_in_seconds=$(date --date "${end}" +%s)
date_diff=$((end_in_seconds - start_in_seconds))
ffmpeg -ss "${start}" -t ${date_diff} -i "${video_file}" -qscale:v 2 output_%03d.jpg
}
if [[ $# -ne 3 ]]; then
usage
exit 0
fi
if ! command -v ffmpeg >/dev/null 2>&1; then
echo "ffmpeg: command not found"
exit 1
fi
FILENAME=$1
START=$2
END=$3
if [ ! -f "${FILENAME}" ]; then
echo "${FILENAME}: not a file"
exit 1
fi
if ! { [[ ${START} =~ ^([0-9]{2}:)?[0-9]{2}:[0-9]{2}$ ]] && date -d "${START}" >/dev/null 2>&1; }; then
echo "${START}: incorrect time"
exit 1
fi
if ! { [[ ${END} =~ ^([0-9]{2}:)?[0-9]{2}:[0-9]{2}$ ]] && date -d "${END}" >/dev/null 2>&1; }; then
echo "${END}: incorrect time"
exit 1
fi
extract_images "${FILENAME}" "${START}" "${END}"