User Tools

Site Tools




Collection of some points regarding generation of timelapse pictures/videos using Linux. Example, taken with Galaxy S7.

Taking the single pictures: dedicated camera

  • First thought: using existing camera, my Sony RX100, first generation. Unfortunately it is not supporting remote control for taking pictures.
  • gphoto2 is the software one wants to use.
  • I have no supported camera. Which one to get?
  • Example from “gphoto2 –summary”
    • For “GoPro HERO5 Black”: Device Capabilities: File Download, File Deletion, File Upload, No Image Capture, No Open Capture, No vendor specific capture
    • For “Nikon COOLPIX A100” (usb id 04b0:0367): Device Capabilities: File Download, File Deletion, File Upload, Generic Image Capture, No Open Capture, No vendor specific capture, Nikon Wifi support

Taking the single pictures: Android phone

  • Using the Android phone looks like a nice alternative. My Samsung Galaxy S7 has a good camera.
  • Connect via usb, shoot pictures with this:
adb shell "am start -a" \
  && sleep 1 \
  && adb shell "input keyevent 27"
  • My final loop:
while :; do 
  echo -n "### "; date; 
  adb shell "am start -a; 
    sleep 1; input keyevent 27"; 
  echo "### done"; 
  sleep 58; # turned out the full loop was slightly <60sec
  • I have the phone connected to wlan, share the pictures folder with the connected Linux system via syncthing. With this, I could even move the pictures out of the folder, if storage is a problem.
  • Issues:
    • the screen stays always on, the phone heats up. Running 'adb shell top', I saw the camera app and screen handling as top users.
    • the gallery app was indexing all of the pictures, and I have no way of enforcing reindex after I removed the pictures from the phone.

processing the single images

Reading timestamp from the exif-field and adding it to the picture, and resize to fullhd:

mkdir tmp && cd tmp
for i in ../2018*.jpg; do 
  convert $i -fill white -undercolor '#00000080' \
    -gravity Southeast -pointsize 48 -annotate +0+5 \
    $(exif $i |grep 'Date and Time      '|sed -e 's,.*|,,' \
      -e 's, ,_,' -e 's,:[0123456789]*$,,') \
    -resize 1920x $(echo $i|sed -e 's,\.,,'); 

generating the video

mencoder mf://2018*.jpg -mf fps=25 -nosound -noskip -ovc copy -o mencoder2.avi

Problem with that: when watching, the format did jump around, bigger/smaller. 'mplayer -fs mencoder2.avi' worked ok.


Leave out the '-s 1920×1080' if you already resized with ImageMagick before.

ffmpeg -pattern_type glob -i "2018100*.jpg" -c:v libx265 \
  -s 1920x1080 -movflags +faststart ffmpeg_1920x_x265.mkv
software/timelapse.txt · Last modified: 2021/03/23 12:22 (external edit)