Chapter 32. Capturing Video in Real Time

Marc Lehmann

Perl is not currently a common choice for real time applications. The dynamic nature of the language makes it difficult to predict run-time behavior (and speed) reliably. However, video capturing applications (for instance, digitizing a television signal and saving it to disk) have to be real time. If you miss a frame, it’s gone forever, so the programs have unavoidable deadlines.

One of my principles for programming is to use the right language for the job. In recent years, this has mutated into “let’s combine the strengths of various languages to solve a problem” or, more precisely, “write a Perl interface to the problem.”

Video::Capture::V4l

The Video::Capture::V4l module was created to solve such a problem: I wanted to record a television show that was broadcast daily at different times, on a TV channel that didn’t properly support the Video Programming Service (VPS) signal to switch on my VCR. What I will describe here will not work in the U.S.—but being able to capture fifty 704 x 528 fields per second with a 333 MHz dual Pentium II is worth attention anyway.

To do this, I had to get at the video data and compare it with some prerecorded sequence, trying to match the beginning of the show (which fortunately was always the same). I then used the Kermit serial protocol to transfer commands to my HP-48 calculator and switch on the VCR, but that’s another story.

The Video::Capture::V4l module solves this problem in a generic way. ...

Get Web, Graphics & Perl/Tk Programming now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.