Having trouble running my software on MacOS Mojave or later? After many years of distributing my software for free, Apple's recent software policies have made it difficult or impossible for me to continue. Independent developers like myself are now required to pay Apple each year and have our software approved by Apple, otherwise our apps will be tagged as dangerous or "damaged" and can't be opened. For the foreseeable future I can't invest the time and money to fix these problems, but you may be able to work around it by right-clicking the app and selecting "Open" or using the method described on OSXDaily.

Live Video Delay

“Why is there no free software to delay a live video feed?”
– a broke college student

Live Video Delay is a simple application with a self-explanatory name. It shows a full-screen time-delayed feed from an attached video camera. Stereo audio can be delayed to match. Delay length is limited by your computer’s GPU memory (VRAM).

How To Use It

  1. Launch the application and choose your video input and sound hardware with the Video Settings and Audio Settings windows. You can choose a camera (see the camera compatibility page) or a Syphon source from another application. The resolution of your input can be adjusted to balance quality and delay time.
  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 buffer uses the VRAM in your GPU. I can’t measure how much is free, so you’ll need to experiment with maximum delay times. If you go too far, crashes may result!
  3. Set the 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 enjoy your time machine!
  5. If you want to delay sound 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 and you can mirror the image for situations where the camera is facing you.
  7. Use the Video Mix slider to mix the live and delayed signals. Turn up the Video Feedback slider to create trippy trails dood.
  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.

Other Software

  • OBS can do live video delay, probably better than my app!
    – Add your webcam as a Video Capture source.
    – Right-click it and choose “Filters”. In the Audio/Video Filters list, add “Video Delay (Async)”.
    – Type the number of milliseconds of delay you want. (Large values seem OK but I haven’t tested the upper limit.)
    – To show the image full-screen, right-click on the video window and choose “Fullscreen Projector (Preview)”.
    (OBS can’t delay the audio while monitoring live. If you need audio, you need to insert a VST plugin.)
  • 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.

Further Research

  • 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.
Download Latest Version (2018-11-24) 62MB MacOS .zip file
See Installation Instructions. There is no Windows version (details).

Changes in this version:

  • Recompiled in Max 8 for better compatibility with recent OS versions
  • Buffer now uses GPU/VRAM instead of CPU/RAM (massive performance boost)
  • Added Syphon input/output
  • Rebuilt resolution GUI so it’s based on native capture dimensions by default, with half / quarter / arbitrary options
  • Improved FPS calculation
  • Removed deinterlace option
  • Added video feedback option
  • Added “sync” button to match audio to video delay time
  • Added “buffer filling…” indicator since long buffers take time to fill

Known Bugs:

  • Sometimes the app reports an absurdly low “native” resolution (like 160 x 120).
    To fix it, start Quicktime player and choose File / New Movie Recording.
    When the window pops up, click the triangle next to the record button and choose your camera. (No need to make a recording.)
    Now launch Live Video Delay and you’ll see the proper resolution.
  • For camera sources, the frame-rate is dependent on what the camera provides. In low light the frame-rate might decrease to accommodate longer shutter speeds. This could throw your audio out of sync.
  • For Syphon sources, the frame-rate is locked at 60fps.
  • The software (and your camera/driver) has unavoidable latency, so ultra-short delays may not be possible.

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

Old Versions

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.

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:

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