Question / Help [SOLVED] 720p60fps stream not fluid in OBS Classic

Cinder

New Member
Hello,

I've been having a very weird issue with OBS classic for a while now and although I've spent quite some time trying to debug why it's happening, I haven't had much success. Every 15-30 seconds my stream would look like either my game PC or stream PC are dropping frames (micro stutter/minor tear). Here's the latest VOD from last night:

https://www.twitch.tv/icinder/v/70559128

Most of the time it looks fluid, but every once in a while you'll notice that it looks like the game's lagging a bit, as if the frames are dropping. My in-game FPS can be seen on the top right, it's a steady 164 (capped at 1 frame below the monitor's refresh rate). I have verified that OBS is not dropping any frames either and there's a very minimal amount of duplicated frames:

https://gist.github.com/anonymous/8ef1f3b9b33bf1f4238705d8f3635b32

This issue is being observed on local recordings made with OBS Classic as well. Oddly enough, this is not present with OBS Studio, but I'm dropping frames in OBS Studio due to the network (TCP packet size hard coded at 64KB currently).

My setup for reference:

game PC
5960X (stock)
Titan X (stock)
32GB RAM
Asus PG279Q at 165Hz
Vsync On
Dispay cloned on capture card

stream PC
2xE5-2690v3 (ES)
32GB RAM
GTX 980
Datapath VisionSC-DP2

The capture card is capturing 1440p at 165Hz, which is the monitor's native resolution. OBS Classic has a 1080p canvas, which is then downscaled to 720p. As said, this issue is not present in OBS Studio, when using the exact same settings.
 

Boildown

Active Member
First, get rid of "tune=animation", you don't want that.

Second, its odd that OBS can't identify your CPUs. In any event, 24 virtual cores will spawn 36 threads which is way too many for 720p. The rule of thumb is 1 thread per 40 lines of vertical resolution, which means performance might be going down and not up after 18 cores. Try adding a custom command of "threads=18" and see if performance improves.

2b: You should also try disabling hyperthreading. You have more cores than x264 can use without it, so it seems like you're better off with it turned off. Turning off hyperthreading helped my setup (dual E5-2670v1 with Datapath DVI-DL).

Third, now that you're on OBS Classic, have you tried using the Datapath OBS plugin? Not sure if it works with the DP2, I don't think its been updated since that capture card was sold. And you have to run the 32 bit version. But I'd definitely try it.

Fourth, have you heard of and tried the trick to disable NUMA in your capture PC's bios? https://obsproject.com/forum/threads/unsupported-datapath-vision-capture.12503/page-8#post-203454 . That had a positive impact for me: https://www.reddit.com/r/Twitch/comments/47bzdc/budget_friendly_secondary_streaming_pc_guide/d1a2c88

Fifth (and possibly most relevant): Is this just a playback issue? If you record to disk, does it appear always in the same place in the recording in the save?

Sixth: What happens if you cap at your monitor's refresh instead of 1 fps below it? I've never understood that, I think its a CS:GO thing and I don't see the attraction of CS:GO, so who knows. But it seems to me a mismatched framerate to capture framerate could cause this sort of issue.
 

Cinder

New Member
Hey Boildown,

Thanks for chiming in. I'll reply to your points in the same order:

1. I've tried with and without tune options, it doesn't make a difference.

2. They're ES CPUs (Engineering Samples), which is why OBS can't identify them. Other than that and the fact that they're running 200MHz slower than the retail version (2.4GHz vs 2.6GHz), they're running like champs. It is very, very unlikely this is related to the CPUs. As I said, this micro stutter/tear is not present in OBS Studio.

These are 24 physical cores (12 per CPU), not virtual. I believe @EDGAR_SEC had tried limiting the number of threads on his 36 core stream PC and didn't notice an improvement.

2b. I already have hyperthreading disabled.

3. I believe I already tried that, it was either unsupported, or there was no difference with it.

4. I already have NUMA disabled in the BIOS. That helped with a more even utilization of all CPU cores. With NUMA enabled OBS seemed to favor one of the CPUs more, resulting in 12 cores being utilized at 50ish %, while the other CPU's cores were running at 10-15%. With NUMA disabled all cores are running at about 20ish % on 720p60fps medium preset.

5. No, unfortunately this isn't a playback issue. As I mentioned in the original post, the micro stutter/tear is noticeable in local recordings as well.

6. There's no real difference if I don't cap the refresh rate at 164 and leave it at 165.

I'm open to any more suggestions, or trying other stuff. I'll disable the tune for my next stream/recording, just for reference and will try the 32bit version and check if the SC-DP2 card was supported by the Datapath plugin.
 

Cinder

New Member
I believe I've managed to find what was causing it.

In the Video Capture Device settings I had Custom Resolution enabled and set to 1920x1080 and 60 fps. I checked the drop down menu for the FPS and apparently you can set it to anything (duh.. since I already had it set to 60). The default value, if nothing is entered, is 1-10000 and it seems to default to 10000. When I leave it at 10000 fps, local recordings are smooth and the micro stutter is gone. If I change the FPS back to 60, or if I disable Custom Resolution entirely, the micro stutter is back.
 

Boildown

Active Member
You set it to 10000fps? I would never have thought of that. Can you screenshot that setting for future reference? Thanks!
 
Top