Closed dark-swordsman closed 1 year ago
Probably a dupe of https://github.com/obsproject/obs-studio/issues/6437 and https://github.com/obsproject/obs-studio/issues/4191
More info on why this isn't a straightforward or easy fix and has still not been address in those threads.
I guess I didn't see #4191 before, and I would happily concede to it if it wasn't locked. I did see #6437 which is similar, but it was closed. I can't really see why #5029 was a problem. It seems to have been closed due to age and code complexity, rather than it's performance and effectiveness of using Desktop Capture.
Also, I see that you claim you tested both and could not reproduce the issue. How closely did you look, what scenarios did you test, and on what hardware?
I do think this is a discussion that should stay open considering how many people have an issue with it, despite it definitely being low priority, niche issue and it isn't noticeable for most people. But for me, knowing that my 60hz/120hz monitor can display perfectly timed frames at 60, 120, and 240 FPS, but OBS can't on a fresh Windows install with no other programs, tells me that there is still room for improvement. Perhaps this is something that can only be exposed when using a debug mode or something?
Or even then, if not a software fix, having possible alternative methods linked to this issue, like enabling vsync and using a capture card on the same system, would be nice.
I don't intend to close this, just mentioning that this is probably related to those other threads, which contains a lot of information on what has been tested, tried, and just how difficult this has been to track down. Nobody claims this isn't a problem and that there isn't a solution somewhere, but everything attempted so far has made the problem worse. It's also difficult to test as it doesn't seem to affect everyone.
So I went through a few parts frame by frame where I noticed the stutter (more like a brief pause), and I think the closest thing I can think of is that maybe there's some sort of framerate desynchronization. For example, it's entirely possible your monitor is running at a slightly lower framerate than obs, and that some frames just occasionally duplicate causing this issue. But I mean I'm just speculating based upon the video.
Just keep in mind that OBS itself is a compositor, so it runs at its own framerate, then the sources can often run at their own frame rates. Sometimes those framerates don't synchronize perfectly and there can be some unexpected effects from that.
But again, I'm just speculating based upon my best educated estimate. I can't necessarily say for certain that is what's going on, that's just what feels like what's going on. Timing is a pretty critical thing when making a compositor.
hello. There are observations about the work of this assembly and only it works for me https://github.com/obsproject/obs-studio/actions/runs/1244236413 I have been using version 2021-09-17-c1b254664-27.1.0-rc for a long time and I have a question. Why games: Metro exodus, American Truck Simulator, Euro Truck Simulator 2, God of War, Far Cry 5, Assassin's Creed Odyssey, Shadow of the Tomb Raider, Rise of the Tomb Raider do not have jerks in recording and streaming). And the games SnowRunner, MudRunner, ForzaHorizon 5, Far Cry 6 with breakthroughs in recording and broadcasting. Can someone suggest why this is so? How are these games different and how to overcome this jerking problem?
Another test: I set 120 Hz on the desktop and fix 60 Hz with the help of RTSS.exe, in obs 2021-09-17-c1b254664-27.1.0-rc also 60 fps with the DXGI capture method. With these settings, Forza Horizon 5 records smoothly without jerks. This method also helps in other games, but in some games it is not pleasant to play because of the jerky picture in the absence of vertical synchronization.
So I looked at your video, a lot. I've ran quite a bit of analysis, and I can only see a single duplicate frame in the video.
There are times where your character is moving more slowly, or even at a standstill, but you cursor is actually moving in the video, so it must be the game slowing the character down (which it does do, due to "lockstep" networking mode (I play PoE too :) )).
Game Capture oversamples capture, so its quite rare to actually get duplicate frames as long as the game is running at a frame rate a fair bit higher than OBS' framerate. Frametimes can vary, but that is outside of OBS' control, and it seems fine in the video provided.
Based on the information provided, I does not seem to be anything wrong or any microstutters, outside of the character slowing down/freezing, which is due to the game. Video seems perfectly fine outside of that.
As long as frametimes a relatively stable, there is GPU headroom, so there are no sudden spikes in frametimes, and framerate is a fair bit higher than OBS' framerate, then game capture will provide output that is free of duplicate, thanks to its oversampling.
Closing per above.
Closing per the above comment.
Operating System Info
Windows 10
Other OS
No response
OBS Studio Version
27.2.4
OBS Studio Version (Other)
No response
OBS Studio Log URL
https://obsproject.com/logs/lvQZaxkjIyI6v03_
OBS Studio Crash Log URL
No response
Expected Behavior
The Game Capture input should be perfectly smooth, at least in cases where the FPS is a near or identical multiple of the OBS output FPS.
Current Behavior
OBS Game Capture appears to present micro stutters, even while not recording. It is visible in the preview. Even if the frames are manually limited to a multiple of 60 or vsync is enabled on a monitor with 120 Hz refresh rate (and 120 constant FPS), frames will appear to be desynced or delayed.
Steps to Reproduce
Initial steps:
From there, it was a mix of running 120, 240 or 360 FPS limits, toggling vsync on or off, and trying normal vsync vs "fast" vsync via Nvidia Control Panel's 3D settings.
Anything else we should know?
First of all, whether or not this is an actual issue, or if it's just something that is beyond the capabilities of the OBS team to develop: I wanted to open up this issue at least for discussion and elaboration, especially for others to find if they do have the same issue. Every time I tried to solve it, I was never able to find a consistent thread/place where others had the same issues.
This is a problem I've observed with OBS for as long as I've used it (4+ years) and on every system I've used. The only exception was using capture cards capable at running at the display refresh rate as well as the game running vsync and/or using device buffering on the capture card.
In this instance, I only used Path of Exile, but it happens with every game. Also, while I do understand that having an inconsistent FPS can cause desync problems and is pretty much unavoidable, it seems that the frame stuttering/inconsistency is exaggerated with OBS. Even running a 60 Hz display with a weird FPS like 70-80 FPS, the monitor does have some tearing and slight stutter, but it ends up being significantly worse and exaggerated in OBS.
This example was the smoothest example I can get. The game capture is smooth for the most part, but there are microstutters especially towards the end of the video. This was on a 60hz display where the output to the display was perfectly smooth with no microstutters.
To Note: I do not mean the larger hangups and desync, as that was in the game. I am talking about the slight stuttering that is apparent from mis-timed frames:
https://cdn.discordapp.com/attachments/374636015396192257/981390208375332934/fullscreen-vsync-fast-60hz-crf.mp4
The best way to see it is to focus on items on the ground. In this case, namely the red character dead on the ground, or the mix of guts in the water. Some timestamps of very noticeable stutter are 00:15 and 00:44, but are apparent mostly towards the end of the video.