Add Delay to Program Output

I’m needing to mix two video inputs and add a 5-7 second delay to the program output, which will be on an external display. The best way to think about it is a 5-7 second buffer that delays the Program output.

Is there a way to do this with the Instant Replay or the source layers?

Thank you!

You can add the “Video delay” effect on your video input source. It does exactly what you describe, add a buffer of # frames.

Thanks for the response Hindrik! I’ve tried the ‘Video Delay’ effect, but there seems to be a limit of 100 frames. From what I can tell, if I’m running at 30 fps, then that gets me 3.5 seconds at best.

Am I missing something? Are there any other options?

For what it’s worth, I did come up with a very ugly solution where I host an RTSP server on the mimoLive computer, then use that server as an output destination then run the video on an external display using VLC. I was able to get the timing close to what I needed it for, but again, it was a very ugly and convoluted solution.

Thanks again for your help Hindrik!

Hello there @mijealab ,

As @Hindrik mentioned, you can use the “Video delay” filter in your sources, but, in fact, it’s limited to 100 frames.

I thought about an additional “ugly solution”: you could create an additional mimoLive document and use NDI to send video from the first document to the second one. This way, you would have 100 available frames in the first document and an additional 100 frames in the second one, which you could use to adjust your total delay between 6 and 7 seconds.

All the best,

Oh damn that’s an ugly solution, :joy: Creative though! @mijealab may I ask why you need a video delay in the first place? Every time I use it I know I’m doing something wrong in the first place. It’s usually the audio that needs to be delayed.

Let’s make it a contest! The ugliest solution wins! :joy:

I also thought about sending video to OBS using NDI, since OBS has a “stream delay” option, but it can only be used for streaming, not for real time display. Then @mijealab would still need to stream to the RTSP server, which I guess would make his solution just a little uglier, I guess…

Anyway, I had the same question: why the 5-7 second delay, after all? :thinking:


This is a pretty specialized application of mimoLive for volleyball practice. To help give the athletes immediate feedback after performing a play or drill, we’re mixing two camera sources, one adjacent to the court looking across the net from the side and the other from the back of the court.

The back court is a PIP layer with a 5 second delay and the ‘net’ view is larger, with a 7 second delay. This allows the athletes two different perspectives to help with depth (when passing) and form when jumping/attacking. The hope is the setter will get a better feel with how far the ball is off the net for the attacker and the attacker can better understand how to adjust based on where the pass is.

The delay introduced is to allow time for them to get from the court to the sideline where they can watch the replay first from the PIP back court (for orientation) followed by the play from the larger ‘main screen’ side/net view.

In theory, it seemed like it should be pretty simple, but ugly solutions were required. Another solution I considered was streaming it to YouTube with ultra-low latency, and then use the YouTube playback as a buffer. Unfortunately, internet access in the practice facility is terrible, so that wouldn’t work. The locally hosted RTSP server/VLC solution was clunky, but it got the job done. Fortunately, when someone needed this pelt and carcass, they didn’t care how I skinned the cat. :slight_smile:

I didn’t mention this, but thanks again @profgustavoreis and @Hindrik for responding and providing some additional insight, no matter how ‘ugly’ it was! :slight_smile:

1 Like