Spook is a Linux server application to capture live video and audio and stream it over an IP network. Currently, Spook supports capturing from a Firewire IIDC camera or Video4Linux(2) source and streaming MPEG4 with RTSP or JPEG stills with HTTP.

Spook is made available under the GNU General Public License WITHOUT ANY WARRANTY.


2006-01-16: No updates, yet

Just a short note for all the people who've been asking about updates— Spook hasn't been abandoned! However, much of the current code has been. My last six months have been spent working on a new media handling library that can be used to efficiently move audio and video between various file formats and network protocols, kind of like a combination of FFmpeg's libavformat and the LIVE555 RTP/RTSP libraries. Right now it's in early prototype stages, but once it comes together a little more (or at least, the API solidifies) I'll rewrite Spook to sit on top of it and vastly increase the available features: multiple video and audio codecs, file reading and writing, RTP multicast, RTP/RTSP relaying, and more. No promises on a release date, though...

2005-02-07: Released 20050207

Audio is here! This release contains an OSS audio capture driver and a built-in MP2 encoder based on code from FFmpeg. There is also support for V4L2 frame grabbers with hardware video encoders, including the Plextor ConvertX M402U MPEG4 encoder. (The Linux drivers for it won't be released publicly for a few days though.)

Other improvements include simple RTSP authentication, support for multiple video/audio streams in the same instance of Spook, multipart JPEG streaming, and improved performance in the RTP stack.

2004-11-13: More helpful info

I added a short write-up on embedding Spook streams within a webpage using QuickTime. It may work with the MPlayer plugin for Mozilla as well.

2004-09-12: Released 20040912

BTTV owners rejoice! The incompatibility between Spook and the kernel 2.6 BTTV drivers has been solved! Once I decided that the V4L1 compability layer in V4L2 was horribly broken, I implemented a V4L2 input module which is included in this release. The configuration syntax is nearly identical to the existing V4L module, so take a look at spook.conf.dist and update your config file accordingly.

This will probably be the last incremental release before I integrate the major internal changes necessary to support multiple inputs, audio support, file streaming, and much more.

2004-07-22: Released 20040722

This release adds a configure check for the incompatibility in libdc1394 introduced in 0.9.4. Nothing else has changed. I am working on nifty new stuff, like audio support, but it may be a few months before I have enough time to get it fully working and released. This summer has been exceptionally busy for me so I appreciate your patience.

Incidentally, the mailing list is back up, and has been for a few weeks.

2004-06-03: Server down time

You may have noticed that our server suffered a fairly serious failure. We're back up now, but the mailing list is down for a bit. Feel free to mail me privately in the meantime.

2004-06-02: Released 20040602

The long-awaited 20040602 release is out. I broke with tradition to bring you not one but two new features. First, based on code provided by Christian Schulte, Spook can now log client accesses in a format similar to Apache's combined log format. This is configured as a separate directive in the spook.conf file. Second, preliminary support for Mac OS X has been added. I am pleading for help from developers familiar with Carbon and QuickTime, as my code is not very robust or efficient. Finally, this version does not fix the bug noted in the last news item.

2004-05-22: Problems with BTTV in Linux 2.6

Several people have reported that Spook does not work with the BTTV driver under linux 2.6. My attempts to fix this have uncovered a number of bugs in the BTTV driver in 2.6.5, several of which cause kernel oopses. If you intend to use a Brooktree-based card, I recommend sticking with the 2.4 kernels until this is resolved.

2004-05-01: Released 20040501

This release should be welcome for those of you who have been struggling with their NATs and firewalls. Spook now supports tunnelling RTP over TCP, both as described in RFC 2326 and with the twisted RTP-over-RTSP-over-HTTP protocol that QuickTime uses. Other changes include further enhancements for Philips webcams (thanks to Jason Paulson for loaning me one) and a fix for a nasty socket bug that Christian Schulte brought to my attention.

2004-04-19: Released 20040419

Spook 20040419 is out. This release has working support for the Philips webcams, thanks to help from Christian Schulte. The only real change was to switch the V4L input module to the YUV420P palette, which should work with a wider variety of hardware.

2004-04-18: Philips webcams

Apparently, the Philips webcams don't work correctly with Spook. There should be a new version out soon that fixes the issues.

2004-04-17: Helpful info

I added a page on choosing a video source. It gives some guidance for choosing a webcam for use with Spook.

2004-04-16: Released 20040416 (V4L!)

Spook 20040416 has been released. The big change is the inclusion of the Video4Linux input module, including (untested) Philips webcam support. If you get it working, post a message to the mailing list to let me know.

Update: version 20040416a was released with two tiny updates to make it run on kernel 2.6.

2004-04-12: Mailing list

A new mailing list has been created for Spook. It is for both discussion of development and help for users who are having trouble. Also, you are encouraged to post addresses of any streams you have set up with Spook.

2004-04-11: First release!

Happy Easter! The first release of Spook is now available.

General Information

At the moment, Spook is very limited. It only supports one stream at a time. It lacks polish: it must be run in the foreground, it prints lots of useless messages, and it doesn't deal well with errors and exceptions. That said, it has been quite stable streaming to a small number of clients (3-5), including one that has been running for a week straight.

Spook encodes MPEG4 with XviD. Because MPEG4 is a very efficient compression method, decent-looking 30fps streams can be produced with about 200 kbps, which is less than the upstream bandwidth of most cable modems and DSL lines. Spook also provides JPEG stills from a built-in HTTP server for bandwidth-limited environments.

MPEG4 streams from Spook can be viewed with VLC, MPlayer or Apple QuickTime Player. Real Player should work as well, but I haven't had any luck with it.

Current Release

The current version of Spook is 20050207. Once it becomes mature enough to package for Linux distributions, I'll switch to real version numbers.

Download: spook-20050207.tar.bz2

You can also look at the README.

Older releases

Last modified 2006-01-16 by lutchann.