wiliextreme
New Member
I've lost a lot of time trying to find a solution for this weird bug so below I will dump everything I know including some workarounds for people who are also plagued with it.
What is interval stutter
What is causing it
How to check if your videos have interval stutter
there are a lot of other problems that may cause stutter in your videos (game lags, encodder overload) so to verify that your problems are related to interval stutter bug do the following
Method 1:
you can also do the opposite, you can verify if your video has no stutter
run ffmpeg command
if there is no stutter then frames decoded and frames encoded (for video stream) should be equal or at least very close (<5 frame difference per second of recording). Below is an example of running this command for video with no stuttering (12489/12497 encoded).
How to fix it
I've not found any complete fix for that problem but there are certain workarounds
Now here are certain workarounds that I suspect will work but CAN'T CONFIRM it because didn't tested it
If you know some better solutions please let us all know O.O
What is interval stutter
- it's a very common bug that is plaguing OBS users for many years that is
- NOT related to performance or any OBS settings
- NOT detectable in OBS logs
- NOT visible during gameplay, only present on recordings and in OBS preview
- the bug can be observed as stutter occuring at regular intervals
- after inspecting video frame by frame it can be observed that the stutter is caused by many frames being duplicated
- this stutter is present regardless of what is being recorded (game, browser, desktop) but it is easier to notice it in scenarios where there is a lot of movement (e.g. racing games, smooth scrolling)
- here is an EXAMPLE of such stutter, you can see it at ~12s and then it repeats every 20s (32s, 52s...)
- here are some of the people who enounered it
- https://github.com/obsproject/obs-studio/issues/4191
- https://github.com/obsproject/obs-studio/issues/8896
- https://obsproject.com/forum/threads/game-capture-frames-de-syncs-after-30-minutes.68969/
- https://obsproject.com/forum/thread...review-which-goes-into-recorded-videos.77744/
- https://obsproject.com/forum/threads/unusual-tearing-artifacts-when-using-game-capture.95335/
- https://obsproject.com/forum/thread...-stream-at-true-60-fps-100-of-the-time.95213/
- https://obsproject.com/forum/threads/regular-stutterings-on-preview-recorded-videos.80031/
- https://obsproject.com/forum/threads/duplicate-frames-in-recordings-with-new-pc-build.164682/
- https://obsproject.com/forum/threads/frame-rate-is-cut-in-half-stutters-every-10-minutes.39269/
- https://obsproject.com/forum/threads/stutter-frame-duplication-only-on-some-sources.163734/
- https://www.reddit.com/r/obs/comments/zzxzjw/elgato_frame_stutterframe_duplication/
- https://www.reddit.com/r/elgato/comments/md91mi/comment/guqrcjq/
- https://www.reddit.com/r/obs/comments/11iq5er/dropping_frames_while_recording_but_the_stats/
- stutter is strictly related to difference between your monitor refresh rate and fps of your recording as described in this video by Genshin DPS Calc, it will occur at 1/(fps-hz) seconds intervals, for example:
- monitor refresh rate 59.95Hz and recording 60fps -> 1/(60-59.95) = stutter every 20s interval
- monitor refresh rate 59.999Hz and recording 60fps -> 1/(60-59.999) = stutter every 1000s interval
- the longer the interval, the more sever stutter is (for example at 59.95Hz the stutter last only ~1s but at 59.999 it will last many seconds)
What is causing it
- no idea but it must be the craziest bug I've ever encountered, it is like some kind of curse that follows you no matter what you do
- things I tried that did NOT fix it:
- changing any Windows Settings (game mode, HAGS, clean install, updating NVIDIA drivers)
- changing OBS encoding settings (NVENC, x264, uncompressed, various settings etc.)
- changing OBS source (display capture, window capture, video capture device, DXGI, Win10)
- changing OS (tested Windows 10, 11 and even tried OBS from bootable Linux Ubuntu)
- changing GPU (tested GTX970, RTX3070, RTX4080 Super and AMD R9 290)
- things I didn't tried
- using 144Hz monitor
- changing CPU to Intel (although many people with intel had the same problem)
- changing PSU and RAM
- using old OBS versions
- I found this bug also when recording using ffmpeg dshow so it is not OBS-only bug, i suspect that most of recording software uses certain internal functionality/library that is causing this issue on certain PC configurations. But that is just my guess.
How to check if your videos have interval stutter
there are a lot of other problems that may cause stutter in your videos (game lags, encodder overload) so to verify that your problems are related to interval stutter bug do the following
Method 1:
- Check your REFRESH_RATE at displayhz.com
- Calculate STUTTER_INTERVAL (in seconds) using formula STUTTER_INTERVAL = 1/(60-REFRESH_RATE)
- Run something that looks smooth and won't cause performance issues e.g. UFO Test or smooth youtube video
- Record video in OBS that is several times longer than your STUTTER_INTERVAL
- Play recorded video and wait until you see severe stutter (single missing frames do not count)
- Now wait for STUTTER_INTERVAL seconds and if stutter repeats then it means it is interval stutter bug
you can also do the opposite, you can verify if your video has no stutter
run ffmpeg command
Code:
ffmpeg -i "recording.mp4" -vf mpdecimate -loglevel debug -f null -
Code:
Input file #0 (2024-08-31 18-15-01.mp4):
Input stream #0:0 (video): 12497 packets read (754026767 bytes); 12497 frames decoded;
Input stream #0:1 (audio): 9762 packets read (4194207 bytes); 9762 frames decoded (9996288 samples);
Input stream #0:2 (audio): 1 packets read (6 bytes);
Total: 22260 packets (758220980 bytes) demuxed
Output file #0 (pipe:):
Output stream #0:0 (video): 12489 frames encoded; 12489 packets muxed (6694104 bytes);
Output stream #0:1 (audio): 9762 frames encoded (9996288 samples); 9762 packets muxed (39985152 bytes);
How to fix it
I've not found any complete fix for that problem but there are certain workarounds
- METHOD 1: By changing your monitor refresh rate (e.g. using CRU very close to 60Hz you can increase time without interval (at the cost of stutter being more severe when it eventually happens). This will give you enough time to record what you want before another stutter occurs. Note that even setting exactly 60.0000 won't get rid of stutter completely because in practice it will still not be exact 60hz (more like 60.0001). Apart from that the stutter will last very long and be pretty severe compared to short stutter at ~59.94.
- METHOD 2: Alternatively you can achieve similar result by changing OBS recording framerate to match your monitor refresh rate as closely as possible as explained in this video by Genshin DPS Calc
- METHOD 3: Use Elgato HD60. When used as video capture device there is no stutter. I suspect it is because this card has built in h264 encoder so OBS must handle it better than other capture cards. Unfortunately it supports only 1080p at 40Mb/s and causes problems if you use it with newer Elgato products like Camlink.
- METHOD 4: Use Elgato 4K60 Pro MK2. You HAVE TO have open 4K Capture Utility and enable buffering in Video capture Device options in OBS. I also tested Camlink 4K and it worked too.
Now here are certain workarounds that I suspect will work but CAN'T CONFIRM it because didn't tested it
- METHOD 5?: Use Elgato 4K60 S+. It also has built-in encoder like HD60 so i suspect it will also work fine but with 4K support. Note that it doesn't support 1440p and has bigger delay than other capture cards.
- METHOD 6?: Use other Elgato capture cards that work with 4K Capture Utility. Keep 4K Capture Utility opened and enable buffering in Video Capture Device options. I guess if 4K60 Pro MK2 and Camlink worked fine then other devices should too.
- METHOD 7?: Use HDMI to NDI encoder to stream by NDI, then use NDI source in OBS. I didn't tested it on proper HDMI to NDI encoder but tried streaming NDI from my laptop (where interval stutter bug is not present) to my PC and there was no stuttering on recordings so i suspect that NDI streams are handled by OBS correctly. Unfortunately the cost of HDMI to NDI encoders is very high e.g. Magewell Pro Convert HDMI 4K Plus costs $1000 so this workaround seems kinda pointless compared to other.
If you know some better solutions please let us all know O.O
Last edited: