first commit
This commit is contained in:
49
profiles/desktop/.local/bin/video_extract
Executable file
49
profiles/desktop/.local/bin/video_extract
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user