When my VHS (analog) camcorder died in 1999, I thought I should probably buy one of the then-new DV camcorders. The camcorder came with a rather lame Windows video editing software. The videos created with that software were often jerky and I suspected that the device driver was unable to read the DV data fast enough, or that the disk driver could not write to the hard disk fast enough, or both.

So I decided to write my own Linux command line utility to transfer DV data to the disk drive. An ieee 1394 (Firewire) device driver was available in an experimental version, so after a few hours of kernel recompiling and writing some test code I was able to talk to the Camcorder, send start/stop commands and listen to the byte stream. The first version of dvgrab was born. And yes, I made sure that every single frame of DV data was in fact written to disk (if not, dvgrab printed a warning message).

The data rate of my DV camcorder was about 25 MBit/s. It turned out that this was near the limit of typical standard PC hardware at the time so I had to use lots of tricks such as turning on IDE DMA mode, running parallel threads for reading from the camcorder and writing to the disk, writing an efficient AVI library etc.

The dvgrab utility made it into all standard distributions. It has been maintained by other developers since I left the Linux DV projects, it supports most modern DV camcorders (even HDTV) and it is still very useful today. see Debian install statistics:

The source code for dvgrab can be downloaded from kinodv.org, the official dvgrab and Kino website. If you want to use it, it is probably easier to just install dvgrab by the package manager of your distribution.