Interval stutter / jitter / duplicated frames bug - workarounds

Jobima

New Member
I apologize it dosent get rid of the issues it just makes them harder to notice but they are definitely there but to a lesser extent. I did some more testing and recorded some videos and it is sadly still visible.
true, but I think you dont need set global vsync in the nvidia control panel to 3d application, only set it for OBS in nvidia control panel program settings not in global settings
also I noted setting "low latency mode" to on in global settings help a lot, maybe also setting "background application max frame rate" to 60
 
Last edited:

Bar_be_que

New Member
Im having the issues as well, glad someone is working on it. Ive noticed it more with the later updates of obs. But ive also notice with the website vertical sync test and nvidia drivers 572 down to 551 with my 4070 ti super makes the vertical sync test be out of sync. If i go back to my 3070 ti with driver 546 ish in that area its smooth as silk. So i am thinking its a combo of hardware. 40 series and 50 series but i don’t have a 50 series to test. I can make a video tonight of the 3070 ti vertical sync test and the 4070 ti super and you’ll see the difference. Rather its windows, graphice cards or hardware its a mess. But i don’t think its obs because like i said with the 3070 ti have a smooth feed and not making it stutter then going to the 4070 ti and it does. I think thats why its so hard to find a answer.
 

javiobs

New Member
Hi,

I don't have OBS, and I have the SAME problem. So, I'm not sure if it's a problem of OBS itself.

I have stuttering at EXACT INTERVALS. Every 1-2 seconds there is a stutter. More noticeable when you "turn the camera".

I play all games with vsync enabled on a 60Hz monitor.

Not all games, but many games: Cyberpunk 2077 (GOG), GTA V Enhanced (Rockstar Games Launcher), Portal With RTX (Steam)...

What's very curious/strange is that the stuttering disappears (temporarily) in these cases:

- when I ALT+TAB to alternate between apps, and then come back to the game,
- or when I press the WINDOWS button twice (to pop up the Windows menu, and then close it to come back to the game)

BUT the stuttering comes back again:

- when I pause the game and then quit from pause...
- after a cinematic
- after a few seconds or minutes

But for example, Assassins Creed Shadows (Ubisoft Connect) runs SMOOTHLY. ZERO stuttering.

So, I think it's something related to vsync, or the focus on the windows.

Maybe a combination of: Windows 11 + drivers for RTX series 4000, 5000... + DX11 or DX12... + or even maybe something related to "libraries" for games (Microsoft Visual C++ redistributable...).

My PC specs:

- Windows 11 Pro (24H2)
- i7-13700K
- 64GB RAM DDR5 4800Mhz (in dual channel)
- RTX 4080
- hard drive: NVME 7000MB/s

Windows and all drivers updated (graphic card, BIOS...)

Here some examples:


 

Bar_be_que

New Member
Okay guys i found the fix for my setup.

My pc specs are

amd 7900x
4070 ti super
windows 10
obs studio 31.0.2
monitor is a dell 2524h 240 hz
gysnc and free sync are off. Yes i get some screen tearing

I changed in the nvdia control panel left hand side. " adjust image settings with preview" i then choose use " use the advanced 3d image settings"

Next under manage 3d settings I leave everything to driver default except "power managment mode" I changed it to "Prefer maximum performance". This will make your gpu run full clock all the time! I then rebooted computer and ther vertical sync test was smooth as silk. Here is website i have been talking about. You want to see all grey. If any blue or red flashes there is something going on.

I now No longer have issues with the preview in obs studio picking up those stutters and throwing it out of sync. I no don't have any stutters now at all in any of my videos or streams.


Conclusion to this. I recently upgraded from a 3070 ti to my now 4070 ti super. The only think i can think of the cause is that when our graphics card are in optimal mode setting in the nvida control panel settings that the idle 210mhz on the 4070ti is lower then what it was on the 3070 ti causing out of sync issues for my hi refreshrate of 240hz. People may not notice this on lower refreshrate monitors like 180hz, 165hz 144hz as it's not a hard on the gpu to match this frame rate. I am not talking about game fps just the system overall refreshrate so don't get confused. It can be tough on a card to hit that refreshrate for graphics cards. I hope this help some people causing all the stutters.

If you were to do the math now that was talked about and set fracitonal fps so forth your encoding it should be perfect a perfect copy! I just do common fps 60 though cause 240 goes into 60 so I don't have any issues. Thanks all hope this helps!
 

javiobs

New Member
Hi, I also found a solution to my problem.

It was the monitor.

My current monitor runs at 59.95Hz, and I can't select 60Hz (on Windows 11).

So, when I run games with VSync ON, sooner or later, they go out of sync, which produces stuttering.

I tested with another monitor that supports 60Hz (also 100Hz), and now the games are perfectly synchronized :) (with both, 60Hz and 100Hz).
 

Bar_be_que

New Member
Okay guys i found the fix for my setup.

My pc specs are

amd 7900x
4070 ti super
windows 10
obs studio 31.0.2
monitor is a dell 2524h 240 hz
gysnc and free sync are off. Yes i get some screen tearing

I changed in the nvdia control panel left hand side. " adjust image settings with preview" i then choose use " use the advanced 3d image settings"

Next under manage 3d settings I leave everything to driver default except "power managment mode" I changed it to "Prefer maximum performance". This will make your gpu run full clock all the time! I then rebooted computer and ther vertical sync test was smooth as silk. Here is website i have been talking about. You want to see all grey. If any blue or red flashes there is something going on.

I now No longer have issues with the preview in obs studio picking up those stutters and throwing it out of sync. I no don't have any stutters now at all in any of my videos or streams.


Conclusion to this. I recently upgraded from a 3070 ti to my now 4070 ti super. The only think i can think of the cause is that when our graphics card are in optimal mode setting in the nvida control panel settings that the idle 210mhz on the 4070ti is lower then what it was on the 3070 ti causing out of sync issues for my hi refreshrate of 240hz. People may not notice this on lower refreshrate monitors like 180hz, 165hz 144hz as it's not a hard on the gpu to match this frame rate. I am not talking about game fps just the system overall refreshrate so don't get confused. It can be tough on a card to hit that refreshrate for graphics cards. I hope this help some people causing all the stutters.

If you were to do the math now that was talked about and set fracitonal fps so forth your encoding it should be perfect a perfect copy! I just do common fps 60 though cause 240 goes into 60 so I don't have any issues. Thanks all hope this helps!

Hi, I also found a solution to my problem.

It was the monitor.

My current monitor runs at 59.95Hz, and I can't select 60Hz (on Windows 11).

So, when I run games with VSync ON, sooner or later, they go out of sync, which produces stuttering.

I tested with another monitor that supports 60Hz (also 100Hz), and now the games are perfectly synchronized :) (with both, 60Hz and 100Hz).
My understanding is 60hz is really 59.99. If you do the monitor test though my monitor is set to 240hz and in nvidia control panel my monitor is also set to 240hz when i do that vertical sync test its really showing 239.9996hz. So that is why i still went with 60hz common in obs studio.
 

flapk1337

New Member
Fractional fps recording was the only one that worked for OBS for me. Looking at your screenshot, I think the way you're doing that might not work. OBS only accepts a max 6 digit numerator, so you'll have to find and multiply your refresh rate with a number that results in a numerator value that's below 1,000,000 for the numerator.

You can use this Python code below to quickly calculate the numerator and denominator combo that gives you the smallest decimal value. Just enter the refresh rate you found using displayhz.com into the "refresh_rate" variable and run it. You can run this code online by pasting it into the W3Schools Python compiler.

Python:
min_decimal_value = float('inf')
number_with_min_decimal = None
refresh_rate = 60.000083 # Change this to your refresh rate

for num in range(1000, 20000):
    result = num * refresh_rate
    if result >= 1000000:  # Skip numbers where the result exceeds 1,000,000
        continue

    decimal_part = result - int(result)  # Get the decimal part

    if decimal_part < min_decimal_value:
        min_decimal_value = decimal_part
        number_with_min_decimal = num

print(f"Numerator: {int(number_with_min_decimal * refresh_rate)}")
print(f"Denominator: {number_with_min_decimal}")
print(f"Refresh rate * Denominator: {refresh_rate*number_with_min_decimal}")

you are a savior dude! i was on placebo the whole time it seems.
 

ennimann

New Member
Hello,
I found a solution here that works for me and is replicable.
First, here are my specifications:
- Single PC
- Windows 11 Pro 24H2
- AMD B550 Motherboard
- AMD 5800x CPU
- 32GB DDR4 3600 RAM
- AMD RX 9070 GPU
- 4K TV with HDMI
- Elgato HD60+
- 4K HDMI dummy monitor (60Hz)

The TV is connected to a DP port using a DisplayPort HDMI adapter and therefore does NOT support FreeSync or anything similar.
The Elgato capture card is plugged into the HDMI output, and the dummy monitor is connected to the Elgato OUT port.
This combination forms an extended display in Windows.
I run my simulation in full screen on this (2540x1440).
OBS and other control tools run on the 4K TV, which is the main display.

The graphics accelerators are enabled in Windows.
1746089125566.png

In the graphics driver, I limit everything to 60 Hz.

1746089222637.png


In OBS, I use the AV codec for recordings and streaming.
Enabling the buffer was important when setting up the Elgato capture card.


1746089464522.png


The preview and stream are now virtually stutter-free, as they should be.

Here is the last stream from our event:


I hope this has helped others who are having the same problem on their single-stream PC.

Regards
ennimann
 

ugie

New Member
i think we need report it to microsoft to fix it, it happen too in amd relive and i see other people said happen to shadowplay too
anyone with capable explanation skill please help report to microsoft

for now i think just use mirilis action for fix, very smooth recording for me with action! , maybe they use different close source technique for game capture, i try its window capture same just like obs choppy
 

ugie

New Member
update : for me its cause of RAM issue my mistake cpu fan goes to ram so the ram is hot , so for people if have same problem check your ram temperature maybe you got wrong fan direction, for people who ask why my gameplay smooth tought ! my answer maybe game is like priority to run so even if got stutter it is very micro but recording not more priority than game so the stutter is visible there

so to fix it try check your RAM temperature check fan direction and limit fps game to 62 (because sometimes it got drop 1-2 fps) , its fix for me already try 10 recording and smooth
 

soniciiboom

New Member
I've entered this battle after deciding to record my daily YT videos in 1440p instead of 1080p.

I have a dual-pc setup. When I used my Elgato 4k60 mk2 at 1080p 240hz, the stuttering was imperceptible, and tearing was very mild.
However, 1440p only captures at 144hz, and even worse, 4k only captures at 60. This should be enough, since the output is 60fps, but because of this intermittent stuttering, it is not.

I use my capture card in duplicated display mode, since my main monitor is 1440p 360hz and pass-through doesn't cut it.

Things I tried:

1. Elgato 4k pro instead of 4k60 pro mk2, same result, returned it.
2. Had a 2060 in the recording pc and a 4070ti in the gaming pc. Bought a 5090 for the gaming pc, swapped the 2060 for the 4070ti, but same result.
3. Tried to use the obs preview to capture card method, but it's even worse.
4. Hundreds of hours of trying different settings and testing.

Things I discovered:

1. The recent nvidia rtx 50 drivers are awful. (stay in 566.36 if u can)
2. 60hz selected via NVCP is around ~60.0017hz, but if I select it in the windows settings page, it goes to ~59.9997hz. (random af)

Most important finds:

3. If I change the refresh rate of either the display or the capture card in windows settings, while the outputs are duplicated, one becomes the main and the other becomes the clone. I tested this with presentmon and with high speed video recording.
- The main display gets tearing, the clone does not. (So if I'm getting tearing on the OBS output, through the capture card, I flip the main monitor to 240hz and back to 360hz, and then the tearing disappears from obs.
- This also happens if I use a second monitor instead of the capture card.
- The main display gets HW: Independent Flip directly from the game, with AllowTearing 1, and the clone gets dwm.exe in HW: Legacy Flip with AllowTearing 0.

4. The stuttering also happens if I use a second monitor instead of the capture card in OBS.

This leads me to believe it's a problem with how Desktop Windows Manager polls frames from the games' swap chain, but I'm not a software engineer, so I won't speculate much further than that.

Conclusion:

With regard to the method of using fractional fps numbers in obs: I tried, but the max I could get was 10 minutes without stuttering, and then a full minute of nearly 30fps stuttery laggy dogs**** motion.

I also tried making custom CRU resolutions, but if I change even a single decimal of my refresh rate, neither my display nor my capture card shows video. Maybe it's due to the display using Display Stream Compression, or the fact that I'm trying to use Dynamic Super Resolution to upscale 1440p to 4k so I can record in native 4k. I still have to try other things.

Anyway, I hope some of this info is helpful to someone. Let's keep this thread going until we can figure out something solid.
 

soniciiboom

New Member
I was able to record a 30minute segment that shows the stuttering happening in 10minute intervals.
Elgato capture card was set as the only output, at 4k 60fps, and obs was also set to 4k 60fps (common value).

 

soniciiboom

New Member
I DID IT! The method with the 4k60 mk2 works, but there are caveats.
My main issue was conflicting drivers. I had bought a 4k pro to test against the 4k60 pro mk2, and its driver didn't uninstall correctly. This caused an issue with how obs received the video stream from the capture card, and the fractional fps method wasn't working because of it.

1. You cannot have 2 elgato pcie capture card drivers simultaneously. Check with the software DriverStoreExplorer.

2. Then, you must check the capture card's refresh rate. I used TestUFO. Make sure the capture card is set as primary display.
In some cases, the refresh rate will be different whether you select it from Nvidia Control Panel or from Windows Settings.
On my system, windows 60hz measured at ~59.997hz, while nvcp 60hz measured at ~60.0017hz. Odd behavior, but it is what it is.

3. After that, go to "set up multiple displays" on NVCP, right-click on the preview of the duplicated displays and select "Clone Source: 1" (or the number your main display is)

4. At the moment I'm making this post there's a bug. Even after selecting the main monitor as primary, it still won't apply, unless you go on Windows Settings and reset your main monitor's refresh rate. In my case 360hz -> 240hz -> 360hz, then it applies.
Now your capture card should be tearing-free and your game lag-free.

4.1. To check if your main monitor is the primary, you can use PresentMon. Run it, play any game, then check the .csv log.
You should be seeing plenty of lines from your game.exe, running in Hardware: Independent Flip (with allowtearing = 1), and in-between them, a dwm.exe line running in Hardware: Legacy Flip (with allowtearing = 0), that's the cloned display.
If you see 1 line from the game followed by 2 lines from dwm, each with a different swapchain (e.g. 0x0 and 0x1), then neither your main display nor your capture card is the main display, this is a battle on its own. Read more about it.

4.2. You can also check for scan line tears with slow motion camera footage, any smartphone will do. Just shake your camera in game (with vsync off), the footage should show tearing, if not, your main monitor is not the main display.

5. Now go to obs, apply the fractional fps number as you checked in step 2. I just set 600017 / 10000.

6. Next, open your capture card source properties on obs and enable buffering.
Buffering with fps mismatch between source and obs can cause unpredictable latency!
This causes audio desync, but if you set the correct fractional fps number, it doesn't. (or maybe it does, but only after recording/streaming for a long time, tbh I still have to test it out for longer than 20 minutes.)

For now, it's good enough, my recordings are in smooth motion, tear-free and with audio nicely synced.

BTW there's no need to have 4k capture utility running in the background.
 

koala

Active Member
I would just download the video with yt-dlp, if you still talk about Youtube. Capturing streamed videos with OBS is like filming a movie in a cinema with a camera.
 
Top