Files
ffmpeg-timelapse-script/create_timelapse.sh
2022-07-26 20:25:31 +02:00

65 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail #x for debug
while getopts i:d:D:o: flag
do
case "${flag}" in
i) input_folder=${OPTARG};;
d) days=${OPTARG};;
D) delete=${OPTARG};;
o) output_path=${OPTARG};;
esac
done
if ! [[ -v input_folder ]] || ! [[ -v days ]] || ! [[ -v delete ]] || ! [[ -v output_path ]]
then
echo "Arguments missing. Use -i for input folder, -D to define if you want to delete processed images and -d for number of days"
exit
fi
if [ $delete == "true" ]
then
echo "WARNING old files will be deleted"
else
echo NO DELETO
fi
echo "Input: $input_folder";
echo "Delete: $delete";
echo "Days: $days";
echo "Getting timelapse from $(date -d "now - $days days" +%d-%m-%Y) to $(date -d "now - 1 days" +%d-%m-%Y)";
mkdir -p ./timelapse_temp
out_name="$(date -d "now - $days days" +%d-%m-%Y)__$(date -d "now - 1 days" +%d-%m-%Y)_timelapse.mp4"
startdate=$(date -d "now - $days days" +%d%m%Y)
enddate=$(date -d "now - 1 days" +%d%m%Y)
d=
n=0
until [ "$d" = "$enddate" ]
do
d=$(date -d "now - $days days" +%d%m%Y)
day=$(date -d "now - $days days" +%d)
month=$(date -d "now - $days days" +%m)
year=$(date -d "now - $days days" +%Y)
echo "Working on" $day $month $year
if ! [ $delete == "true" ]
then
echo Not deleting
cp $input_folder/Frame_${year}-${month}-${day}*.jpg ./timelapse_temp
else
echo DELETING FILES
mv $input_folder/Frame_${year}-${month}-${day}*.jpg ./timelapse_temp
fi
days=$(($days - 1))
done
echo Output: $out_name
mkdir -p ${output_path}
ffmpeg -r 25 -pattern_type glob -i "./timelapse_temp/*.jpg" -s 1920x1080 -vcodec libx264 -preset veryfast -crf 25 ${output_path}/${out_name}
rm -rf ./timelapse_temp