To do a motion recording camera with FreeBSD 8.1 you need to install multimedia/pwcbsd and multimedia/mencoder from ports. With these and a short perl script you can do a camera that records motion and splits them in to separate files when there is inactivity for 600s.
#!/usr/local/bin/perl # # Author: Jan Melen-jan(at)melen.org # use POSIX qw(strftime); use IO::Select; if (($#ARGV + 1) != 1) { print " Usage: camera.pl <Dir for storing mpeg4 files>\n"; exit; } $dir = "$ARGV[0]/"; $sel = new IO::Select(); sub open_pwcview { open(PWCVIEW, "/usr/local/bin/pwcview -hkr -s sif -f 5 |") or die "Can't start pwcview: $!"; binmode(PWCVIEW); $sel->add(\*PWCVIEW); } sub close_pwcview { $sel->remove(\*PWCVIEW); close(PWCVIEW); } sub open_mencoder { $now_string = strftime("%Y%m%d-%H%M%S", localtime); $filename = $dir. $now_string. ".avi"; open(MENCODER, "| /usr/local/bin/mencoder -demuxer rawvideo -rawvideo ". "fps=5:w=320:h=240:i420 - -ovc lavc -lavcopts vcodec=mpeg4 ". "-o ". $filename) or die "Can't start mencoder: $!"; binmode(MENCODER); } sub close_mencoder { close(MENCODER); } open(PID, ">". $dir. "camera.pid") or die "Can't open pidfile: $!"; print PID $$. "\n"; close(PID); open_pwcview(); while (1) { @ready = $sel->can_read(600); if ($#ready >= 0) { if ($mcopen != 1) { open_mencoder(); $mcopen = 1; } $bytes = ; if (length($bytes) == 0) { close_pwcview(); close_mencoder(); $mcopen=0; open_pwcview(); } else { print MENCODER $bytes; } } else { close_mencoder(); $mcopen=0; } }