This commit is contained in:
alban 2019-10-02 21:43:07 +02:00
commit ac50292883
3 changed files with 138 additions and 0 deletions

13
.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
# Project
pics
videos
# Vim
[._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]

47
capture.py Executable file
View File

@ -0,0 +1,47 @@
#!/usr/bin/python
import threading
import requests
import datetime
import time
import os
import sys
delay = 10.0
resolution = "1280x960"
localDir = './photos/'
if sys.argv[1]:
localDir = sys.argv[1] +"/"
if sys.argv[2]:
delay = float(sys.argv[2])
# Change here with your IP
url = 'http://poi:poi@192.168.0.32:8888/photo.jpg'
focusUrl = 'http://poi:poi@192.168.0.32:8888/focus'
def convpicture(infile, outfile,resolution):
quali = 80
command = 'convert {} -quality {} -resize {} {}'.format(infile,quali,resolution,outfile)
os.system(command)
def takePicture():
# focus did better with macro picture
Focus_request = requests.get(focusUrl)
if Focus_request.status_code == 200:
time.sleep(1) # important
Img_request = requests.get(url)
if Img_request.status_code == 200:
time.sleep(1)
now = datetime.datetime.now()
name = now.strftime('%Y%m%d_%H%M%S' ) +'.jpg'
print ('get picture '+ name)
with open( localDir + 'last.jpg', 'wb') as f:
f.write(Img_request.content)
convpicture(localDir+'last.jpg',localDir+ name,resolution)
def printit():
threading.Timer(delay, printit).start()
takePicture()
printit()

78
makevideo.sh Executable file
View File

@ -0,0 +1,78 @@
#!/bin/bash
usage(){
cat << EOF
$(basename $0) -d <directory> -s <rate> -p <prefix> -v <video_dir>
——————————————————————————————————————————————————————————————————————————————————
Opt | Variable | Type | Definition | Default value
——————————————————————————————————————————————————————————————————————————————————
-d directory path Directory path of images to convert ./pics
-r rate int Convert only 1/N images 1
-p prefix str Images filename prefix. ''
-v video_dir path Directory path to store video file. ./videos
-s size str Images geometry. '1024x768'
——————————————————————————————————————————————————————————————————————————————————
EOF
exit
}
panic(){ echo $@; exit 2;}
directory="./pics"
prefix=""
rate="1"
size='1024x768'
video_dir="./videos"
while getopts "hd:s:p:v:" o; do
case "${o}" in
h)
usage
;;
r)
rate=${OPTARG}
;;
d)
directory=${OPTARG}
;;
p)
prefix=${OPTARG}
;;
v)
video_dir=$( realpath ${OPTARG} 2>/dev/null )
;;
\?)
panic "Unknown option at position $OPTIND. Exiting."
;;
esac
done
# Safe test ffmpeg
which ffmpeg &>/dev/null || panic "No ffmpeg found. Exiting."
# Safe test directory
directory="$( realpath ${directory} 2>/dev/null )/"
[ -n "${directory}" ] && [ -d "${directory}" ] || panic "'${directory}' is not a valid directory. Exiting."
# Safe test prefix
[ -n "$( ls ${directory}/${prefix}* 2>/dev/null)" ] || panic "${directory}/${prefix}\* doesn't match any file. Exiting."
# Safe test rate
[ ${rate} -gt 0 ] || panic "Invalid rate '${rate}'"
pts=$( echo 1/$rate | bc -l )
# Safe test video_dir
video_dir="$( realpath ${video_dir} 2>/dev/null )/"
[ -n "${video_dir}" ] || panic "The video_dir option cannot be empty. Exiting."
[ -d "${video_dir}" ] || {
read -p "'${video_dir}' does not exist, do you want to create it? [Y/n] : "
REPLY=${REPLY:-Y}
[ "N" == ${REPLY^^} ] && panic "The video directory must exist. Exiting."
mkdir -p ${video_dir} 2>/dev/null || panic "Failed to create '${video_dir}'. Exiting"
}
[ -n "$( ls ${directory}/${prefix}* 2>/dev/null)" ] || panic "${directory}/${prefix}\* doesn't match any file. Exiting."
date=$(date +%s)
ffmpeg -pattern_type glob -i "pics/*.jpg" -filter:v "setpts=(${pts})*PTS" -pix_fmt yuv420p -s "${size}" -vcodec libx264 "${video_dir}/$date.mp4"