A friend of mine asked if I could put together a piece of software that would allow him to have a video playlist and live video in the same screen, for use in a performance art piece. I said sure and started to dust off whatever little knowledge I had of Processing.

As usual, once I got over the usual hurdles (ex. the GSVideo library won’t accept DV capture over Firewire, so I had to use the flaky video library bundled with Processing for that, but then GSVideo 1.0 — much, much better for the video playlist part — would crash when used together with it so I had to settle for a prerelease version of GSVideo… and etecetera) I finally proceeded to pimp the code and throw everything I could think of at it: a dialog to choose the folder where the videos are and a routine to check for valid video file extensions, the ability to swap the video/live feed sides, the ability to switch between multiple cameras (ex. webcam, firewire camera, screen capture driver, etc.), the ability to correct the cameras’ aspect ratio, a fullscreen mode, the ability to reposition the images on the screen, a cool ‘swooshy’ effect for the live feed, the ability to pause or advance the playlist at random.

P.S.: If you’re looking at the code in picture and wondering, I know perfectly well Java/Processing variables don’t need to start with a dollar sign ($). I just use that as a notation for global variables.