I found this older thread here:
Hello, I did my best to find a solution or an indication on the forum or elsewhere on internet but all I can find is how to disable variable frame rate, and I would be interested to know how to MAKE OBS record/stream in VFR.
I think most of you know that if OBS it's not perfectly in sync with the source it's capturing, the video will stutter during playback.
So if I want to capture a video game as smooth as possible say at 60fps, I have two options:
1) set the refresh rate of the display to a multiple of 60Hz
2) cap the fps of game to a multiple of 60fps
Two limitation arises:
1)I...
Which went unanswered in final question ... here is what I think "might" work (or should work, don't know if OBS will be able to sample:
In game: VRR enabled set max FPS to 40 (LG supports VRR from 40-144 Hz)
Monitor: VRR enabled
Windows 11: VRR enabled
nVidia: enable VRR window and full screen
Output to separate PC with Elgato 4K Pro MKII and run the VRR passthru to LG GSync monitor.
In OBS, set recording FPS to 30 output to CFR.
I think there's a fundamental misunderstanding, but let's see if we can get on the same page.
Factually, OBS is constant framerate (CFR) throughout. The compositing of frames is on a constant cadence, and sources themselves are programmed from the perspective of a constant framerate (async sources are a little different, but ultimately these are "sampled" as you say to the CFR of the rest of the pipeline, to hand-wave it a bit).
If you take a variable framerate (VFR) source and try to make it CFR, it requires making a decision on how to do that. Typically and effectively in OBS, it simply grabs the "most recent" frame when it needs to, at the CFR cadence.
What variable refresh rate (VRR) looks like also follows this principle. For example, Display Capture of a VRR display is ultimately sampled for CFR in OBS.
Now, the capture card. This is where I've looked into more than the average person (by a lot), and I suppose I'll focus on the DirectShow Windows APIs specifically (what is used in OBS for Video Devices sources on Windows). While DShow isn't inherently CFR, again, OBS still is. Same goes for UVC devices to my understanding (i.e. what many Elgato capture cards are). However, you'll find quite often that the way webcams and capture devices are implemented is to deliver CFR, essentially.
Bringing this closer to home, I have an Elgato 4K X. It
also supports VRR passthrough. But as far as I know, the drivers for it provide absolutely no way to
capture VFR -- it'll always sample the closest frame for CFR at the requested frame rate. I couldn't find any capture card that supports VFR capture (and trust me, I wanted to lol)
So you have two things fundamentally working against you capturing true VFR. First, OBS only supports CFR output, and is designed as such throughout. Second, while your capture card supports VRR
passthrough, it only supports CFR
capture (unless everyone, including Elgato themselves, have somehow misunderstood their device's capabilities).
Ultimately, when you take VRR output from a PC and capture it with the capture card, it is still CFR. The only reason the Nvidia App is different (it
can record VFR) is because it has all the timing information and frames available to it
and is designed that way. Even if you record with the Nvidia App on the PC that the capture card is connected to, you don't have any VFR source. Normally, it captures a game running locally, and thus has variable framerate. But the capture card only effectively captures as CFR, so there's no VFR to display for the Nvidia App to capture as VFR.
That was a lot of words... I hope that clears things up, but let me know if it does or doesn't!
P.S. the way some apps "simulate" VFR/VRR is via much-higher rates. If you run a game that fluctuates between, say, 40-90fps but record at 240fps CFR, it's still not VFR but the high rate allows better alignment of the lower frame rates (albeit while duplicating many frames and still sightly misaligning them, ultimately). Similarly, if I recall correctly, Moonlight+Sunshine (local game streaming apps) can do something like this too as a "poor man's VFR", I believe that was their wording in the settings.