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 recent versions use 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.

How To Use It

  1. 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.)
  2. 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.
  3. 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.)
  4. Press the “Esc” key on your keyboard to activate full-screen mode and fill your eyes with recent history. Enjoy your time machine!
  5. 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.
  6. 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 from interlaced sources) and mirror the image for situations where the camera is facing you.
  7. Use the Video Mix slider to mix the live and delayed signals.
  8. If you check Auto Full-Screen, Live Video Delay will automatically enter full-screen mode each time it starts up.
  9. All important settings are saved in an XML preferences file when the app closes.

Further Research

  • If you are looking for a Windows solution, the free open-source sports analysis package Kinovea does live video delay (among other things.)
  • This old 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.

Download Current Version

v 2014-01-16 (Mac Intel)

January, 2014, 42MB with source “patches” for MAX 6.1.
You may need to adjust your security settings and/or install Java. See Installation Instructions.

There is no Windows version (details).

Changes in this version:

  • re-compiled using MAX 6.1 programming environment (no more PPC support)
  • added mirror function
  • Restyled the interface a bit
  • fixed some of the RAM calculation code
  • full-screen key is now “Esc” instead of “F” so it’s easier to find in dark or cramped situations
  • audio output level defaults to silent if preferences are not set (to avoid feedback on first launch)

Note: The app now contains 32bit and 64bit options. If you have problems with video not showing up, try forcing it to open in 32bit mode (Get Info on the app to change back and forth).

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:

Like Live Video Delay? Donations are appreciated. (sorry, not tax-deductible)

Old Versions:

v 2011-08-17 (Mac Intel/PPC)

August, 2011, 20MB with source “patches” for MAX/MSP/Jitter 5.

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.

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