Live Video Delay
Live Video Delay is a simple application with a self-explanatory name. It stores video frames in a “circular buffer,” displaying an old frame each time a new one arrives. Stereo audio is now supported, and delay time is only limited by available system memory (see “known bugs” below).
Dan Graham used analog delay-lines in his Time Delay Room piece in 1974. Richard Serra & Nancy Holt did a wonderful piece called Boomerang which used audio delay to probe the formation of meaning in language.
This app was made to answer a question from a student: “How come there’s no free software to delay a live video feed?” The original version used the GPU for fast video processing and storage, but VRAM is too limited for long delays, so version 2010-04-08 uses system memory to store the recorded frames. Stereo audio is also delayed, with independent delay-time so you can tweak the synchronization between picture and sound. Additionally, you can mix between the live and delayed video feeds with a crossfade slider. DV-NTSC runs at a solid 30fps on a MacBook Pro laptop, but HD resolutions might be faster using the older (more limited) version of the app.
How To Use It
- Launch the application and choose your camera and sound hardware with the Video Settings and Audio Settings windows. (see the camera compatibility page for supported cameras and video input devices.)
- Set your Buffer Length (measured in frames) to the longest duration you think you will need. You will choose your exact delay time later, but the buffer collects frames in the background and it sets the limit for how long your delays can be. While the buffer fills with new frames, your video window may be black. Be patient and wait for your frames to arrive. The total system RAM usage is displayed so you can choose a buffer length that is small enough to fit into available memory. As you approach 100% RAM usage, OS X will start “paging” to the hard-drive which will slow down Live Video Delay and all your other apps.
* In some cases the RAM meter won’t be accurate. Use the Mac OS “Activity Monitor” application to see more accurate numbers. - Choose your Frames of Video Delay to alter the delay length. (A calculator shows you the approximate delay-time in seconds, based on the current frame-rate.)
- Press the “F” key on your keyboard to activate full-screen mode and fill your eyes with recent history. Enjoy your time machine!
- If you want to delay audio too, just choose how many Seconds of Audio Delay you require. You can use the calculated delay-time as a starting point and then adjust until you get perfect synchronicity between video and audio. (This process is not automatic. If you alter the video delay length, you must update the audio delay length again.) Audio meters are provided, and you can adjust the Input Gain and Output Gain to desired levels.
- The floating preview window can be set to Full, Half and Quarter resolutions (useful for HD inputs) and you can de-interlace the video signal to eliminate horizontal motion artifacts in non-progressive sources.
- All important settings are saved in an XML preferences file when the app closes.
Further Research
- This post on the Processing forum contains a sketch for delaying live video.
- ofxSlitScan is a free app (+ source code for openFrameworks) that produces live spatial delays (called “slit-scanning“). It can do plain old delays too (just choose the black square next to “load your own”). The performance is generally better than my app. Note: It has no audio.
- Alex Carpenter uses paused set-top DVRs for his laser video delay performances.
Download Current Version
v 2011-08-17 (Mac Intel/PPC)
August, 2011, 20MB with source “patches” for MAX/MSP/Jitter 5. (Tested with Mac OS 10.5 Leopard.)
For Snow Leopard compatibility you must install Quicktime 7.
There is no Windows version. If you are a MAX/MSP user and want to compile your own, my download link points to a Mac disk image which you can open with HFSExplorer on Windows. Inside you will find the cross-platform source patches.
Changes in this version:
- Added slider to mix between live and delayed video signal.
- Clarified licenses for included code from other sources
Known Bugs:
- The software (and your camera/driver) has unavoidable latency, so ultra-short delays may not be possible.
- There appears to be an internal limit on delay memory that I cannot fix. (see table below)
Maximum Buffer Lengths:
- 320 x 240 resolution: 3494 frames (roughly 2 minutes @ 30fps)
- 640 x 480 resolution: 872 frames (roughly 30 seconds @ 30fps)
- 720 x 480 resolution: 775 frames (roughly 25 seconds @ 30fps)
- higher resolutions untested but you get the idea.
Note: Live Video Delay’s GPL license does not explicitly apply to the following included code:
- co.normal.jxs shader
(exact license unknown, supplied with MAX5, www.cycling74.com) - v001.deinterlace shader
(CC-by-nc-sa license, by Vade 001.vade.info) - Shell object
(exact license unknown, open source, originally by Bill Orcutt, recompiled by Jeremy Bernstein http://cycling74.com/toolbox/bernstein-shell )
Old Versions:
v 2010-10-17 (Mac Intel/PPC)
October, 2010, 20MB with source “patches” for MAX/MSP/Jitter 5. (Tested with Mac OS 10.5 Leopard.)
- Frames are now stored in system RAM and
there is no arbitrary limit on delay time - RAM usage is visible inside the app, to help set your delay buffer.
- De-interlacing option is now available (GPU accelerated)
- Stereo audio delay added
- Mouse pointer is now hidden when in full-screen mode
v 2010-04-08 (Mac Intel/PPC)
April, 2010, 19MB with source “patches” for MAX/MSP/Jitter 5. (Tested with Mac OS 10.5 Leopard.)
For Snow Leopard compatibility you must install Quicktime 7.
- video-only, no audio
- max delay of 148 frames (due to GPU memory concerns)
- might take a few seconds to start, baecause it’s filling your VRAM with frames
- might be slower than some other techniques, or it might be faster
