Unofficial Ruby version of VCS

For anyone interested, Thomas has contacted me to let me know he wrote a "Video Contact Sheet Ruby" which reuses part of VCS' code and outputs contact sheets in the same style.
Being written in Ruby, its code will be less of a mess and, even more interestingly, it can run on Windows with less hackery than VCS.

So you're invited to take a look at his project at

VCS 1.13.2 released

A new update of VCS with a couple bugfixes is available to download. Once again, if you had problems with the previous versions there's nothing new.

It fixes a bug when using MPlayer as capturer that could produce one more capture than expected. Thanks to Miya for reporting it.

See the full changelog for more details.

vcs 1.13.2 (script only)
or (script, sample configuration, manpage and profiles)
deb, rpm, PKGBUILD & bz2
as usual at

VCS 1.13.1 released

A minor update of vcs is available to download. In short, if you don't use Arch and you had no problems running it there's no need to update.

It fixes an uncommon bug and updates the build script for Arch Linux. Thanks to Eris Belew for reporting these.

See the full changelog for more details.

vcs 1.13.1 (script only)
or (script, sample configuration, manpage and profiles)
deb, rpm, PKGBUILD & bz2
as usual at

VCS 1.13 released

An updated version of vcs is available to download. Shame on me for the long wait since this has been pretty much completed for months.

The biggest change this time is the "blank frame avoidance" feature, with which (mostly) blank frames will not be captured, if possible, this is one of the cool features found in mtn and worth stealing 🙂

Also worth noting is the ability to load profiles automatically. E.g. adding "profiles=white,mosaic" to your ~/.vcs.conf file will use both profiles. A new profile ("compact") is added, and a list of installed profiles can be obtained with $ vcs –profile :list.
The manual page is finished too.
Of course you'll have to download and install the full package instead of just the script to get the profiles and man page installed.

Other minor additions are the identification of captures from FRAPS and of course the usual batch of fixes and scheduled changes. FreeBSD users, and hopefully Mac OS X too though I can't check, can again use the script too.

Finally, please read «Features to be removed from VCS» if you have any interest in VCS' future versions.

See the full changelog for more details.

vcs 1.13 (script only)
or (script, sample configuration, manpage and profiles)
deb, rpm, PKGBUILD & bz2
as usual at

Features to be removed from VCS

There's some features in vcs I plan to remove to ease working on it's absurdly big code. I haven't seen them used in the wild except long ago, plus in my samples and manuals by others. I'm calling for your opinion, however, to know for sure if I should actually remove them or not. Use the comments section below or, preferably, email me at

Features marked for deletion:

VCS 1.12.3 released

I haven't updated VCS in a while and somehow managed to keep this update ready but unreleased for months, so today I decided it was about time to get rid of it and be free to work on 1.13 😛

This is a minor update with a couple bugfixes, but most importantly, it marks the switch to bash 3; this means a lot of small changes to the code so you should update to 1.12.3 to test if it works correctly before I release future versions (eventually 🙂 with much more important changes.

Changes (excerpt):

  • Bugfix: Actually handle –ffmpeg and –mplayer [#169]
  • Bugfix: Correct parsing of -U [#187]
  • Switch to a minimum of bash 3.1 [#173]
  • Avoid re-capturing the same frame twice [#122]
  • Use getent instead of /etc/passwd when available
  • Bugfix/Internal: Don't use mplayer's length as a ceil for timecode removal [#174]

vcs 1.12.3 (script only)

or (script, sample configuration, manpage and profiles)

deb, rpm, PKGBUILD & bz2
as usual at

VCS 1.12.2 released

Another minor update, although the last few versions have contained a really stupid bug that prevented the temporary files from being removed (leading to a lot of stale, possibly big, files), so upgrading is highly recommended. Thanks to Jason Tackaberry for pointing the bug.

Note though I'm still on holidays so this is a quick and dirty release (with little testing).


vcs 1.12.2 (script only)

or (script, sample configuration, manpage and profiles)

deb, rpm, PKGBUILD & bz2
as usual at

VCS 1.12.1 released

A very small update this time. It's only been delayed by real life stuff.

Only worth mentioning:

  • Workaround for cases in which GAWK uses comma as decimal separator. Many European languages use commas but only a few versions of GAWK do actually print them (and newer versions don't anymore). People encountering this bug will have certainly noticed since it results in all kinds of errors.

vcs 1.12.1 (script only)
or (script, sample configuration and profiles)
deb, rpm, PKGBUILD & bz2
as usual at

VCS 1.12 released

VCS 1.12 is ready to download

As with 1.11 many of the changes are pretty radical and might break but it's been working fine for me so far.

The changes are quite a few so I'll try to explain as best as I can. Documentation for the new stuff is on the way.

New in this version:

  • Profiles
  • On-demand loading of custom configuration files
  • Heading, footer and title based on actual font size
  • Configuration generation from the command-line
  • Relative end-offset
  • More reasonable command-line arguments to capture from DVD
  • Configuration syntax enhancements and more sensible names for settings

→ Profiles

Command-line: --profile <NAME> and -p <NAME>

Profiles allow saving a group of settings and then reusing them by using their name.
They can be saved to ~/.vcs/profiles/ or /usr/share/vcs/profiles/ as name.conf, and then invoked with a command-line like:
$ vcs -p name video.avi

They can also be combined, e.g.
$ vcs -p black -p mosaic video.avi

A list of available profiles can be displayed with
$ vcs -p :list

The deb, rpm, arch package and tarball include some sample profiles.

→ Configuration file loading

Command-line: --config <FILE> and -C <FILE>

A lot like profiles but settings can be loaded from any file on any directory. The only extra condition is the file should contain "vcs:conf:" inside comments towards the beginning or the end of the file.

$ vcs -C /tmp/mysettings.txt video.avi

→ Configuration (and profile) generation

Command-line: --generate config

By adding --generate config to the command-line, the effective settings are printed in a format that can be saved to a configuration or profile file.

All active settings with an appropriate config setting will be printed, no matter if they come from the command-line, profiles or configurations.


$ vcs -n4 --generate config
Will produce a configuration for 4 captures and fixed number of captures:


$ vcs -p myprofile -C myconfig.cfg -E0 --generate config

Will merge profile "myprofile" and file myconfig.cfg, disable end-offset and print the combined settings.

Big warning

In case you aren't familiar with shell redirections, DON'T try to overwrite an existing configuration like:
$ vcs [...] --generate config > myconfig.cfg
This WILL WIPE your configuration BEFORE reading it.


Pre-existing configurations can be "upgraded" to the new names by running without extra arguments:
$ vcs --generate config

→ Relative end-offset

The end offset now accepts percentages and is 5.5% by default. It is now applied always unless disabled.

With the length detection workarounds in 1.11 and relative end offsets, the whole MIN_LENGTH_FOR_END_OFFSET nonsense is gone for good. Good riddance.

→ DVD capture

Handling of DVDs is now like that of normal files. --dvd (or -V) enable the DVD mode and take no arguments anymore:

$ vcs --dvd /dev/dvd

$ vcs --dvd --dvd-title 1 /dev/dvd

Multi-input is also accepted now:

$ vcs --dvd --dvd-title 1 --dvd-title 2 /dev/dvd /dev/dvd somedvd.iso
Will capture titles 1 and 2 from /dev/dvd, and the longest title from somedvd.iso.

DVDs and video files can't be mixed though (it's either DVD mode or no DVD mode for all input files).

→ Configuration syntax enhancements

Finally, configuration files are now easier to read and write:
 — Settings are case insensitive now
 — Names are easier on the brain (e.g. "height" instead of "th_height")
 — Comments no longer need their own line

Also a sample configuration file is provided with all available settings for easier writing of your own if needed.

→ Dynamic heading/footer/title

In previous versions heading and title size based on font pointsize. This lead to a few rare fonts displaying cropped. Footer was a fixed size so it was even worse at that. 1.12 probes the font size and (hopefully) sizes sections accordingly. Example:

Before: 1.11.2

After: 1.12

The font displayed is akaFrivolity in case you're wondering

vcs 1.12 (script only)
or (script, sample configuration and profiles)
deb, rpm, PKGBUILD & bz2
as usual at

VCS 1.11.2 released

A new small update to vcs is available to download. This should be the last update before 1.12 (which will take a while to be ready) but the massive changes in 1.11.x still need more testing so who knows.

Changes in 1.11.2:

  • Some Real Audio codec names (v4, v5 and v6)
  • Bugfix/Feature: Fallback for default font on systems that don't register fonts with ImageMagick
  • Bugfixes: Clean up correctly extra temporary dirs, fix for non-GNU awk (e.g. mawk)

vcs 1.11.2
deb, rpm, PKGBUILD & bz2
as usual at