I started out experimenting with time lapse photography by using the Fire Storm fswebcam program for Linux to trigger web-cams to take periodic frames to monitor my house when I was away for the 2013-14 winter season. By being able to take periodic frames, fswebcam also makes it easy to do time lapse photography. The initial experiments with the cameras involved software scripts that looped taking a frame and pausing over and over. For the house cams, I just fired the fswebcam program by using CRON and making time stamped files. I still use loop scripts when I am taking a time lapse as they are pretty easy to work. I have a bunch for different intervals, making it easy to tune the rates. I have learned a lot along the way and now I have enough to share.
Recently I wanted to convert an AVI file to an m4v on Linux Mint 17.3. I tried to use ffmpeg, it’s not there. I can’t isntall it…hmmm. So I did some digging, it has been replaced by avconv. To get avconv….
sudo apt-get install libav-tools
Online, I read that there are some syntax differences between ffmpeg and avconv, so I was reluctant to just symlink pointing ffmpeg to avconv and have scripts break.
…and, it worked. Got me a much smaller file than the AVI and worked it’s magic in a short minute or two.
Video of Weather Station from April 8,2016 to July 12,2016
This was what I was testing out with the conversion. Video taken by using fswebcam to gather a still shot of my weather station once per hour on the Raspberry Pi. Once per day the shots are rolled up into an AVI video and stored in a tmp folder which is mounted in RAM. Well the RAM folder does fill up after a while and I copied the file off and saved it on my desktop. This video shows the weather changing from spring to summer.
In late October I used a laptop running Linux and fswebcam ran via a looping script to capture pictures of a Hibiscus plant that was blooming. I took one frame every 10 minutes and then used mencoder to produce an AVI video at 12fps. The webcam takes pictures at 640×320 which is a good size for online videos.
The Hibiscus is quite striking as it blooms. Not only does the flower spiral out it opens and spiral back on it self as it closes up again. But the whole thing is constantly vibrating and moving during the blooming process. This movement is something that would not have been noticed without using time lapse photography. It took four takes to get a decent video. On takes 1 to 3, I wound up re-positioning the camera away from the flower as it expanded in size when it opened.
Another fermentation video made via a webcam using the fswebcam software loaded on the Raspberry Pi server. This video takes place over a period of 5 days in March 2015. It is run at 8 frames per second. Notice how the cabbage fades from it’s normal green color to a paler shade.
I ran a webcam pointed at a fermentation of Kombucha capturing frames using fswebcam running on a Raspberry Pi server. It ran for a few weeks.
You can see the Kombucha SCOBY’s forming in the video. The setup is behind the PC monitor with a desk lamp and camera pointing towards the back of the desk. This gives fairly steady ambient lighting. I grew a dozen SCOBY’s for the Summer Fermentation Class that was held on June 29th 2015.
Nothing beats combining two things that are interesting together. I’ve been into fermenting foods and beverages since the late 1990’s and have been experimenting with timelapse photography since late in 2013 ( One of the first projects I set up and Ubuntu Server for ). Combining them together has been an interesting experience lately.
Recently I bought a 50.5 Ounce glass container with a gasketed lid. I got the idea from reading The Art of Fermentation by Sandor Ellix Katz, a must have if you are considering getting serious about fermentation, it covers a lot of territory on the fermentation landscape. This jar is ideal for some fermentation experiments as any pressure built up in the container would vent via the gasketed lid. A lot of times, I don’t worry about pressure build up, because I am close to home and can vent it manually. But this time I was going to be away so this jar would be good to use. I decided to try to ferment some figs in it and create a time lapse video by taking photos every 4 minutes. I ran it for a week, almost 2400 frames.
The Ferment Mixture
The figs were a bit on the hard side so they were not getting used up to much and I decided that they would be good candidates for a fermentation experiment. The fermentation was started by cutting up the figs into small bits and added some sugar water and a pinch of bread yeast. Normally I would have let them ferment naturally based on what wild yeasts are present on the fruit, but I wanted a vigorous fermentation that got going quickly in order to capture the action for the timelapse video.
Timelapse Video Setup
The setup for the timelapse video was a laptop running Ubuntu with Apache and a webcam. The program used to take the frames for the timelapse video is fswebcam ( which I cover in the post on Bread Dough Rising Timelapse GIF ). The frames were taken every four minutes and saved into a folder underneath my home directory. Additionally a frame was copied to the /var/www directory to allow it to be seen on the web. Plus, I have a symbolic link from /var/www to a directory called fswebcam under my home directory. This directory holds the scripts to run fswebcam, under this is a directory called timelapse which collects all of the frames. This allows me to flip through these from the web as well, so I can keep track of the fermentation progress.
I went away for a few days while I was running the timelapse frame capture and it was nice to be able to view it to check on the progress. To get it online, I basically added a virtual server on the router for port 80, pointing to the internal IP address of the laptop, which was hooked to the router via WiFi. This worked flawless and I was able to periodically check in on the fermentation while on the road.
I do a lot of baking of fresh home made bread and I play around with time lapse photography from time to time. It seemed natural to put together a time lapse video of bread dough rising.
How it was done
I have used the Fire Storm fswebcam program for Linux to trigger web-cams to take periodic frames to monitor my house when I was away last winter. By being able to take periodic frames, fswebcam also makes it easy to do time lapse photography.
Basically for this GIF animation, the camera is triggered 10 times per hour. I run it under Linux using a Bash shell script that time and date stamps the images when they are saved and creates folders based on the date. Then I open up the GIMP graphics editor and use File-> Open as Layers to bring all the images in, 140 in this case. Then Filters-> Animation->Optimize (for GIF) creates the animation. I then save it as a GIF with 100ms delay between frames and allow looping. I did find another way to create videos found under the section How To Make a movie, under the section that talks about doing it via SSH on the Raspberry Pi, on the site, How To Capture Time-Lapse Photography With Your Raspberry Pi and DSLR or USB Webcam
The bread dough is a standard type of dough that I use often. It starts with 100g water and 100g white unbleached flour with a pinch f yeast as a poolish. This is left in a container overnight. Then 2 cups of flour, approximately 10 grams of salt and another pinch of yeast are added and thoroughly mixed. Water is added to the poolish, I start with about 1/2 cup. It is all mixed together adding more water if needed. It forms a dough ball that is worked for 1-2 minutes. Then I let it sit for 15 minutes. Water is contained in the starch bonds, this water is released during the working of the dough, it has a bit of a time delay and it will release even more water for a while after it has been worked. Allowing it to rest for 15-30 minutes allows the water to come out of the bonds and at that point you can judge whether or not the proper amount of water/flour ratio exists by the feel. Then I let the dough rise in a bowl that was coated with olive oil. My standard practice would not dictate letting it rise in open air overnight, effectively this dough has over proofed, but to take the pictures, I decide to just let it go and do it’s thing. Normally, it would be punched down a few times and if I am not ready to make it, it might go in the fridge overnight.
How did it come out by just letting it go and rise on it’s own? Surprisingly the end product was OK, I actually baked it as in the Pyrex bowl and it was a fairly good bread after all. Baked at 400 F for about 40 minutes. I preheated the oven with small bowls of water in it to add moisture as well, leaving them in while the bread baked. This enhances the crust of the bread.
Technical details on capturing the frames
I used Fswebcam to capture the images. It has to be compiled from the source code. Below are my notes related to fswebcam. I had a bit of a hard time getting it to run last year, but the essence of what I had to do is captured below.
fswebcam – Small and simple webcam software for *nix.
This is the program used to generate images for a webcam. It captures a number
of frames from any V4L or V4L2 compatible device, averages them to reduce noise
and draws the details on it using the GD Graphics Library which also handles
compressing the image to PNG or JPEG.
sudo apt-get install fswebcam
Alternatively install via the DEB packages below if you want a newer version that apt can install, especially if it installs the 2009 version, which it will do if you are using an older version of Ubuntu Linux. Try the latest one that will work, I was able to get a new version that did not complain about missing packages.
I first ran fswebcam on Ubuntu 10.04 and ran into issue with an old webcam (Using palette SGRBG8 was not supported and I got an unsupported palette error), plus all of the features advertised for the fswebcam such as labeling the photos and printing a time stamp on them was not working. It was probably in the works and didn’t make it into the release, or something on my installation was not supporting the label adding feature. But I was able to get the 20101118 installed via a DEB package above.
If using dpkg to install one of the deb packages fails. Or in the case you want to work through compiling this code, follow the guidelines below, which do not cover all cases.
I did compile from scratch years ago to get a newer version of fswebcam installed, beyond what the package manager would install. I have found out that dpkg will install version 20101118 on Ubuntu 10.04 without complaint. Beyond that version, dpkg will complain about missing dependencies. I was able to compile the version labelled 20110707 and that ran on 10.04. If you need to find the version of fswebcam use….
The versions currently run to 20140113, trusty release, as of 11/26/2014.
Installing GD Library, do this before installing fswebcam
This part gave a bit of a hard time as my notes below state that there was a few failed attempts to get fswebcam up and running.
sudo apt-get install libgd2-xpm-dev
sudo make install
NOT SURE IF THIS IS NEEDED
But I actually tried this first, instead of the command sequence above…
cd to the libgd-2.1.0 directory
sudo make install
Then tried to compile fswebcam again and it complained about missing JPEG GD package, so did the compile again for GD with this command sequence instead…
./configure --with-jpeg --with-png --with-freetype
sudo make install
So I think the first method of config,make,install of libgd2-xpm-dev is the one to try, first!
I only put the failed stuff here because I am not sure if doing the failed stuff first put in JPG, freetype or something that made things work once ibgd2-xpm-dev was loaded in.
Best to use sudo make install so that the files wind up being able to be put where they need to be.
Run the following commands in the source folder to build and install fswebcam:
It’s only requirements are that the GD library be installed with JPEG, PNG
and FreeType support.
Checking to see if the webcam is being read by the PC
Command to see what devices are hooked up to the USB for video…
There is also a porgram called Cheese that can be installed via the package installer for Ubuntu. This lets you see the video live from the web cam. It makes it easy to adjust distance, angles, lighting and focus the cam while setting up the shot.
I created autocam.sh to be called by watch periodically in order to snap a photo, name it the yr,month,day:time.jpg and put it in a created folder label for the date. Then I used to copy to Wuala mirrored path, which would automatically load it onto a Wuala cloud drive. The script below has the Wuala stuff ripped out. At the bottom of this post there is an explanation on how to use Wuala as an NFS drive.
For example, call bash script every 10 seconds…
watch -n 10 bash autocam.sh
Remember to chmod u+x autocam.sh so that it can be made into an executable script.
# this is the command to run this with watch -n 3579 bash autocam.sh for hourly rate at 255 frames to image
# this is the command to run this with watch -n 350 bash autocam.sh for 10x hourly rate
#now is the filename for the date stamped jpg file
#dir is the directory that is dated as the date of the picture. I need an IF statement around this so it doesn't keep creating the same dir.
#pathnow, I don't think is needed anymore.
# example filename: my_program.2012-01-23-47.log