[wip]
This commit is contained in:
parent
ac50292883
commit
ed6d6e367c
73
README.md
Normal file
73
README.md
Normal file
@ -0,0 +1,73 @@
|
||||
#Time lapse using phone
|
||||
|
||||
**Goal** : upcycle an old phone into an IP Webcam and then make time lapse.
|
||||
|
||||
**Hardware :**
|
||||
- and old phone
|
||||
- a strong stand for your phone, use clamps and metal sticks
|
||||
- a WIFI network
|
||||
- a PC always on (server, raspberry, old laptop)
|
||||
- free space on the PC hard drive
|
||||
|
||||
**Requirement :**
|
||||
- a linux like system
|
||||
- python
|
||||
- ffmpeg
|
||||
|
||||
|
||||
##Installation of IP Webcam
|
||||
|
||||
- get an old phone
|
||||
- setup Wifi on the phone
|
||||
|
||||
**Install an IP Webcam software on it**
|
||||
|
||||
- using Google play : (not tested)
|
||||
add your credential and install IPWebcam from google play
|
||||
|
||||
- without :
|
||||
get the APK from :
|
||||
\url{https://apkpure.com/ip-webcam/com.pas.webcam/versions}
|
||||
On my android 6 I had to use IP Webcam\_v1.13.25
|
||||
\url{https://apkpure.com/ip-webcam/com.pas.webcam/download/608-APK?from=versions%2Fversion}
|
||||
|
||||
|
||||
##Using IP Webcam
|
||||
|
||||
**On Mobile**
|
||||
- Setup the camera settings
|
||||
- Setup the network settings, notice the capture image URL : \url{http://192.168.?.?:8080/photo.jpg}
|
||||
- Position the phone and start the server
|
||||
|
||||
**On the PC**
|
||||
- From your PC open the capture image URL \url{http://192.168.?.?:8080/photo.jpg}
|
||||
- You should see if it works
|
||||
|
||||
|
||||
##Picture automation
|
||||
|
||||
###Using the python script
|
||||
|
||||
|
||||
$ python capture.py <directory> <delay> <resolution>
|
||||
|
||||
current script take 1 picture and save it as last.jpg
|
||||
it also make a copy of this image, convert it to smaller resolution and save it with an timestamp name
|
||||
you can change line resolution = "1280x960"
|
||||
|
||||
##Produce the timelapse
|
||||
|
||||
|
||||
$ bash makevideo.sh -d <directory> -s <rate> -p <prefix> -v <video_dir> -s <size>
|
||||
|
||||
——————————————————————————————————————————————————————————————————————————————————
|
||||
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'
|
||||
——————————————————————————————————————————————————————————————————————————————————
|
||||
|
||||
Will save an mp4
|
@ -2,7 +2,7 @@
|
||||
usage(){
|
||||
cat << EOF
|
||||
|
||||
$(basename $0) -d <directory> -s <rate> -p <prefix> -v <video_dir>
|
||||
$(basename $0) -d <directory> -s <rate> -p <prefix> -v <video_dir> -s <size>
|
||||
|
||||
——————————————————————————————————————————————————————————————————————————————————
|
||||
Opt | Variable | Type | Definition | Default value
|
||||
@ -73,6 +73,9 @@ video_dir="$( realpath ${video_dir} 2>/dev/null )/"
|
||||
}
|
||||
[ -n "$( ls ${directory}/${prefix}* 2>/dev/null)" ] || panic "${directory}/${prefix}\* doesn't match any file. Exiting."
|
||||
|
||||
|
||||
# Set video file name
|
||||
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"
|
||||
video_file="${video_dir}$date.mp4"
|
||||
echo -e "\nSaving to video file $video_file.\n"
|
||||
|
||||
ffmpeg -hide_banner -loglevel quiet -stats -pattern_type glob -i "pics/*.jpg" -filter:v "setpts=(${pts})*PTS" -pix_fmt yuv420p -s "${size}" -vcodec libx264 "${video_file}"
|
||||
|
Loading…
Reference in New Issue
Block a user