GrabboCam 1.0
Introduction
GrabboCam is a full-featured webcam application for BeOS.
Besides the usual webcam features (periodic ftp of stills),
it uses sophisticated motion-detection to trigger recordings of
stills and/or movies; each frame can be timestamped with the current date
and time.
Notification of the motion event can be via email, and/or audio
(for "eyes-free" monitoring).
The moving object is also tracked: the position can be highlighted with
a crosshair and/or output to MIDI.
These unique features make GrabboCam useful for (scary) video surveillance
and (fun) interactive multimedia control.
License
GrabboCam is shareware. If you find it useful, and/or use it for more than
30 days, you must pay for it.
The price is $29 USD.
All payments are handled by PayPal.
Click on this button to pay via credit card:
(BeOS Personal Edition users note: PayPal uses secure connections,
but NetPositive for Personal Edition doesn't support them.
Try using Opera, or use a browser in a different OS.)
The Interface
The basic GrabboCam interface is shown on the right.
The top half of the window shows the menu bar and the
current video input feed; the bottom
half has most of the controls, organized in several categories:
recording, ftp, detection, and notices.
Between the controls and the video image there is a status display
for messages.
File Menu
- Video Preferences: brings up the control panel for the default
video input device. (To change
the default device (if you have multiple video inputs),
use the Media Preferences app from the BeOS menu, and restart
GrabboCam.)
- Node Preferences: brings up a control panel for any options
not provided in the settings window. These are, in general,
less useful. Settings changed in the Node Preferences panel
are NOT saved.
- About: info about the app
- Quit: quit the app
Recording
Settings related to various recordings made by GrabboCam.
Once you start using GrabboCam regularly, especially at
high framerates, these recordings can occupy a significant amount of space.
GrabboCam will not fill up your hard drive to more than 98% of capacity!
Once this limit is reached, old recordings are deleted until the drive
is 95% full. It is often a good idea to store recordings in a separate
partition.
- local directory: This is local directory in which recordings are saved.
Click the "browse" button to select the directory you want to use.
It is highly recommended that you create a separate directory
to hold these files (you can right-click in the file browser window
to create a new directory).
- timestamp recordings: when selected, each still and movie frame
recorded will be timestamped with the current date and time.
- movies: this controls how movies are created. On a PIII-class machine
under BeOS Pro, you can easily get 30fps using the Indeo5 Realtime
Video codec. The next fastest codec seems to be Photo JPEG,
your mileage may vary.
Movies are created with a filename based on the date and time
of the recording: YYYYMMDDHHmmss.ext,
where YYYY=year, MM=month, DD=day, HH=hour, mm=minutes, ss=seconds,
and ext=avi or mov.
- record movie at motion start: when selected, a new movie
is created whenever GrabboCam detects motion. To avoid missing
the onset of motion, the movie will actually start several
frames BEFORE the motion was detected. Recording stops
automatically several frames after the motion stops.
- Format: this selects the file format of movies
- Codec: this selects the compression scheme used
- Rate: this selects the frame rate at which GrabboCam runs,
and the framerate of movies created.
- stills: this controls how and when stills are created.
All stills use the JPEG codec: JPEG works best for "real" images,
as from cameras.
- record still at motion start: when selected, the current
image at the time motion is detected will be recorded.
Filenames are of a form similar to that used for movies:
YYYYMMDDHHmmss.jpg
- record still periodically: when selected, stills are
recorded at regular intervals, regardless of any motion.
- Rate: controls the rate at which stills are periodically
recorded.
- use fixed filename for periodic stills: when selected,
the filename in the "fixed filename" field is used
for periodic stills. If not selected, filenames uses
a scheme similar to movies: YYYYMMDDHHmmss.jpg.
FTP
This tab controls when and how recordings are sent to your FTP server.
You'll need the information about your ISP's FTP setup.
(Note that if you use a webserver like PoorMan, RobinHood, or Apache
running on the same BeOS host as GrabboCam, or don't care about web access
to your recordings, you can forget this tab.)
It's possible that you can be making recordings faster than they can
be uploaded (esp. at high framerates). You can adjust the framerate, the still
recording period or the detection sensitivity to help in these situations.
Uploads are queued by GrabboCam, and only one can be underway at any time.
(However, the queue does not survive reboots.)
- send movies: when selected, movies will be uploaded after recording
stops.
- send stills: when selected, stills will be uploaded after recording
stops.
- server name: this is the hostname of your ftp server
- account: this the account you have on the ftp server
- password: this is the password for your account
- ftp directory: this the directory on your ftp server where files
will be placed.
Detection
GrabboCam uses an "adaptive background subtraction" algorithm to detect
motion. It assumes that incoming video is of a static scene,
where motion occasionally occurs, such as a stationary camera on
an indoor scene. The background is "learned" in the first few seconds
after starting GrabboCam. Small, gradual changes, such as those due
to the passing of the sun, are used to update the background model.
Large or sudden changes, when present for several frames, trigger a
motion event, and recordings are then made if enabled.
This technique works relatively well on outdoor scenes as well,
but can be triggered by clouds transiting the sun, or when leaves
or branches (or their shadows) are moved by the wind.
You can mask out regions you want the motion detector to ignore,
such as trees or passing traffic, by using the "edit mask" feature.
- sensitivity: controls the sensitivity of the motion detector,
from 1 (least sensitive) to 10 (most sensitive).
- crosshair: when selected, a crosshair will be drawn at the
center of the largest moving object detected.
- edit mask: this brings up a window with a low-resolution image
of the scene. Use the left mouse button to draw a blob over
areas you want the detector to ignore. Use the right mouse
button to clear the mask. NOTE: The mask is saved when you exit
GrabboCam, and automatically reloaded the next time you start GrabboCam.
Notices
When motion is detected, you can get an email notice, or play audio of
your choice.
- email
- send email on motion event: when selected, an email notification
will be sent whenever motion is detected.
- email address: the email address to use
- link to put in email: an URL that will be included in the email,
to make it easy for the recipient to launch a browser at your
webcam page, the police department's online crime form,
a cgi program controlling your home security robot, whatever.
- sounds: choosing the right sound can be important.
- play sound on motion event: when selected, play the chosen
file at the onset of motion.
- motion sound: filename of the sound to play at motion onset.
NOTE: this should be a .wav, .au, or .aif file, NOT an MP3
file. Generally you want to use a short, attention-grabbing
sound. The sound is kept in RAM for low-latency response.
Use the "browse" button to pick your own sound file.
You can use a barking dog sound, crank up your speakers,
and scare away prowlers! It's preferable to use
a simple "blink"
that will cut through any audio you happen to be listening to.
- play sound during recording: when selected, play the chosen
file as long as recording is underway, that is, as long
as the detector is detecting motion.
- recording sound: This can be ANY sound file known to BeOS,
even an MP3 file. Use the "browse" button to pick one.
You might want to use music here.
MIDI
GrabboCam will create a MIDI endpoint called "MotionTracker" that you
can connect to any MIDI synth, internal or external.
For example, after starting GrabboCam, you can launch Be's MidiPlayer
application, and select MotionTracker in MidiPlayer's "Live input" menu.
Use Be's "PatchBay" app to connect MotionTracker to an external connector.
Note messages are sent, based on the center of the largest moving object
(crosshair position): low notes on the left of the image, high notes
on the right. Velocity is based on the y-value of the motion center:
large velocities at the bottom of the image, low velocities at the top.
In typical camera setups, where the camera is looking out and slightly
down at the ground, this corresponds to distant objects causing quieter
notes than close objects. It's possible to learn
to tell in which direction objects
are moving based the musical phrase produced, and even tell
if they were passing cars, pedestrians, or birds
based on the rate notes change, etc.
You also just point the camera at yourself,
in front of any static background, and have fun waving your hand around,
if you're easily amused.
Using GrabboCam
GrabboCam is meant to be used with a stationary camera,
looking on a scene where motion is relatively rare.
If a portion of the scene has motion you want to ignore (such as passing
traffic), you can mask out that portion using the mask editor
(on the "detection" tab).
Using television as source of video is not usually a good idea,
since things are constantly in motion on TV, with a couple
of notable exceptions.
When sports such as American football or baseball are broadcast,
there is a moment of stillness just before the play starts,
or just before the pitcher starts his windup. This will usually
cause GrabboCam to stop the current recording. Once the play starts,
the motion triggers a new recording. When later playing the recordings
back, almost every play will be at the start of a recording!
You can stop the playback when the play ends to skip the boring stuff
between plays.
Some TV sports directors seem to avoid ever having a still frame, though,
so your mileage may vary.
A similar effect can happen when a TV program goes to a commercial:
a short fade to black can stop the current recording and start a new one.
Beware, however, that anytime you use television as a source of
video you can expect GrabboCam to be recording almost continuously,
which can rapidly eat up disk space. (GrabboCam's disk space recycler
will avoid the disk from overflowing, of course.)
Disclaimer
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
grabbo.com
Last modified: Thu Nov 23 14:56:01 2000