Technical overviewtilaphos makes use of tcl/tk packages tkvideo, Img, jpeg, tktrans, wmx and piemenu.
tkvideo is a BSD licensed package by Pat Thoyts that allows a tcl/tk script to control a web camera, on a Windows machine. The tkvideo API provides the necessary commands for configuring a web camera, recording movies and capturing pictures. tkvideo's demo program, included in the package, provides insight for coding and could be easily modified for time-lapse photography. However its GUI may be difficult to use on mobile devices.
Photos taken with tilaphos are stored in jpeg format in the directory snap_shots which is created inside the directory the program was run from. The user can choose to display basic information (date and frame number) ontop of the saved photograph. The 'comment' EXIF field in each photo always includes the above data with the help of tcllib's jpeg package (though it seems that the Windows desktop does not display this information properly).
At present, the size of the photos is limited to 320x240 pixels, due to a limitation in the version of tkvideo used (1.21). Recent versions of tkvideo may have this limitation removed.
tilaphos can produce a movie in a number of formats by executing ffmpeg. ffmpeg is an open source (LGPL licensed) image and movie composer/converter program with 3rd party binaries available for all major OSs. For tilaphos to find it, the ffmpeg binary (and associated dll) must be put in the same directory with tilaphos (or otherwise, ffmpeg's command must be properly configured in tilaphos.cfg). Up to date ffmpeg Windows binaries can be downloaded here.To produce an flv movie, tilaphos executes the following command (for the flash movie used in this page):
ffmpeg -y -i snap_shots/%d.jpg movie.flv
This will take all *.jpg images in a sequence, starting from 1.jpg, and will create the file movie.flv which will play back at the default rate of 25 fps.
If necessary, the movie producing command and other tilaphos parameters can be directly manipulated by editing the configuration file tilaphos.cfg.
Tilaphos's open source nature allows for modifications and additions to be made. The intend is to have a small footprint application with basic functionality, and add further functionality as needed. For this, Tilaphos looks for plugins in a directory named "plugins" inside the directory it is run from. A plugin is essentially tcl code in a namespace, that provides an initialization procedure ::namespace::init. Tilaphos evaluates ::namespace::init after sourcing the plugin. The name of the plugin file is the namespace itself prefixed with a '_' and with a '.tcl' file extension. The plugin code provides more information on how to write Tilaphos plugins.