Variable FPS and FPS lock

Bensam123

Member
I sort of hit on this in the bug report forums, but it would be nice if OBS dynamically changed your capture FPS to whatever you're getting in game. So you aren't over using resources when you are getting a lower FPS in game then what you're capturing at. I don't know of a piece of streaming software that does this and it would serve as it's own performance load balancer of sorts. Obviously some sort of arbitrary limit could be added (like 200 or whatever the user wants).

Normally when you stream at a higher FPS then what you're getting in game, the software still consumes resources as if you were streaming at the FPS you set it at, which is a waste and drain on resources.

Also of interest would be a vsync for capture of sorts, where the software makes sure it gets a new frame every time a frame is rendered in game or it would wait till a frame is rendered if it's about to be rendered. I'm not sure if capture like DXtory or OBS does this already, but from what I understand the software simply just captures at a static frame rate regardless of what is happening in the software or in the hardware. So you have your game displaying whatever FPS, DXtory capturing at a static 30fps, then you have OBS or Xsplit encoding at 30fps, and then someones monitor on the other end is displaying at 60hz, so you have a opportunity for all four of these components to end up four frames behind one another (guessing, I don't know how they would stack together), which would result in noticeable screen jitter.

I believe this is why 60fps streams look so much better then 30fps, because they're refreshing that much faster so there is less of a opportunity for one of the components to fall behind. Compared to a movie captured at 29.97fps to one at 60fps which you are viewing locally. Ideally you would want your game FPS, your capture FPS, and your encoding FPS to all be in sync, but software right now doesn't do this (if I'm understanding it correctly). So it would be like a triple vsync. Obviously with the encoding and capture being slave to the game FPS and not locking game FPS as that would kill performance for the person gaming. A buffer probably would work nicely for this, since a stream isn't time critical it can lag behind the game (relatively speaking).

Streaming at higher FPS is simply a brute force way of trying to fix this problem. I assume based on what I've read about the OBS direct capture, this may be possible as it already looks at what the graphics card is doing.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
Hey, it does dynamically change FPS based upon your capture rate -- at least for the regular software capture. Not sure about the rest though. Higher FPS will be available in the next version.
 

Bensam123

Member
Aye, hypothetically speaking... I don't know if the second part is even possible without quite a bit of work.

Does software capture for all streaming software operate that way or is that just something that was built into OBS? I know the encoder FFsplit/xsplit/OBS uses are variable bit rate, I've never heard of variable FPS though.
 
Top