Realtime off, specify maximum framerate?

I have a project which outputs multiple synchronized clips of video at 30fps. I want to run the scene with realtime disabled, so in case any frames drop, they’ll still be rendered out to disk. But when I toggle realtime off and then F1 into perform mode, the framerate jumps to 120 (the refresh rate of my display), which creates other problems in scene where I track events that occur on specific frames within a 30fps timeline.

My question is, can I limit the project to a maximum FPS of 30 with realtime toggled off? So it never jumps above the framerate, and presumably any dropped frames will eventually catch up?

Running 2013.11340 on macOS (arm)

If these events are on the timeline, they should still happen at the correct time. Could you elaborate? You are doing the right thing by turning off realtime for your recording, let’s focus on the other problems this is producing for you.

Thanks Ben and sorry I phrased that confusingly! When I say timeline I don’t mean the literal timeline of touch, but the “timeline” which starts when I begin recording and ends when I stop. There are a couple issues which arise when I have realtime toggled off:

  • My different video sources might include a mix of live camera feeds and movies files. While recording (realtime off + project running at my 120 hz display rate), the movie files appear sped up as they track alongside the accelerated timeline. And while the live feeds look normal throughout the recording process, they appear slowed down in their output files.

  • While recording I’m creating a “live cut” of the various footage, and in addition to outputting both the video sources and the master cut, I also output a table of cut points (on which frame the cut occurred and which source was cut to). I do this by feeding a constantCHOP[0] = 30 into a speedCHOP and sampling whenever a cut occurs.

Maybe there’s a smarter way for me to be doing all the above? But it seems to me if I was able to enforce a maximum rate of 30fps on the project, any dips below that would be accounted for by having realtime off, and there wouldn’t be any issue with live footage slowing down etc? One thought that occurred to me was to slow my display refresh rate down, but I’d rather avoid that if possible.

Okay, I understand what you are trying to do now, its not really possible. To capture real-time inputs (like a webcam or audio in) you need to have that realtime flag on. You shouldn’t be dropping many frames, if any, if your frame rate shoots up to 120 when the realtime flag is off, that indicates you have at least 4x the headroom to play with.
So you could try either of the following, both with realtime flag on, a) run the project at 60fps and set the Movie File Out’s frame rate to be 30fps, or b) run the project at 30fps and everything is at 30fps. I think a) is better since you have so much headroom.

But it seems to me if I was able to enforce a maximum rate of 30fps on the project, any dips below that would be accounted for by having realtime off, and there wouldn’t be any issue with live footage slowing down etc?

If it dips below 30 it would mess with the live footage recording as it would be repeated for a number of frames in the output.

Got it, thanks Ben! This is more of a prototype/test with fewer than half the sources I’ll have in production, so I’m not sure how the fps will hold up in the end, but good to know I’ll need realtime on no matter what. In testing the only time I’ve seen frame rate drop below 30 is when I start recording, presumably due to overhead when first creating the output files.

Is there a typical method by which I can track how many frames have been lost? If so maybe I could add that number onto the keyframes log I’m outputting as well. My first thought would be to use a performCHOP to track current fps, subtract that number from 30, and run that through a speed chop for as long as I’m recording, and just keep adding whatever the current value of that is onto the keyframes I’m saving. Janky but might work as long as I’m not constantly dropping frames :sweat_smile: not sure if that’s advisable or if it would introduce more overhead than its worth

Possible way to avoid this is to have a pre-roll in the recording that you then trim of the final movie when finished.

As for monitoring frame drops, look to the ‘cook’ channel of the Perform CHOP (I like monitoring this with a Trail CHOP), when cook = 1 everything is ok, when cook = 0 you dropped a frame.

1 Like