Question / Help 60FPS recordings are ~30FPS with most frames duplicated.

Woogity

New Member
I just went through one second of footage frame-by-frame. Out of 60 frames, 25 were duplicates. So basically 35 frames per second. Previously I was recording with Shadowplay, and was getting a full 60FPS recording with no issues. I'm using NVENC at 21mbps (Shadowplay was doing 30), high quality preset. Let me know if there are any other settings that might help with solving this so I can record at a real 60FPS.
 

Attachments

  • 2016-05-07-0239-47.log
    52.9 KB · Views: 192
Looks like it's taking a long time to load frames from the GPU. Does this happen with other games? And is your GPU running at PCIe x16?
 
Last edited:

Woogity

New Member
Yes, my GPU is in an x16 slot. I tested the behavior in some other games. Playing a much less intense game, I still get frame duplication, but much less frequently. One out of every 8 frames was duplicated. I also tried using monitor capture instead of game capture to record that same game, and it completely killed my performance, including in-game FPS, so that wasn't much of a test.

I still don't really see why shadowplay can do perfect 60FPS recording but OBS using NVENC can't, unless there is some setting that I have very wrong.
 
Is this happening with vertical sync enabled? You may be hitting some GPU bottleneck. Try limiting the game's frame rate and upload another log.

OBS using NVENC isn't as efficient as ShadowPlay. It copies frames to the CPU, then back, which is very expensive. I can upload a modified version that eliminates this copy, if you like.
 

Woogity

New Member
Is this happening with vertical sync enabled? You may be hitting some GPU bottleneck. Try limiting the game's frame rate and upload another log.

OBS using NVENC isn't as efficient as ShadowPlay. It copies frames to the CPU, then back, which is very expensive. I can upload a modified version that eliminates this copy, if you like.

No VSync. But I was using Shadowplay so I wouldn't have to take a framerate hit when playing, so if getting OBS to work requires limiting framerate, there's not much point.

Do you mean a modified build of OBS, or of the NVENC codec? Either way, I'd definitely like to give it a try
 

Boildown

Active Member
The duplicated frames are reflected in most of your OBS log file entries though. Most of them have a duplicated frame rate of 40% or more. Probably because you're recording 1440p60. 2560x1440 is 1.777 (repeating of course) times larger than 1080p, and that needs to be accounted for.

You should try changing the preset to HP (high performance) instead of HQ (high quality). Increase your bitrate to 40000, maybe even 50000. And change the keyinterval to auto, which will set it to 250 frames, or set it to something longer, like 5 seconds, or more.

When testing do recordings of at least five minutes of high action content. There's only one remotely long recording in that log file, and its statistics are less bad, so I assume that wasn't the sample you analyzed.
 

Woogity

New Member
The duplicated frames are reflected in most of your OBS log file entries though. Most of them have a duplicated frame rate of 40% or more. Probably because you're recording 1440p60. 2560x1440 is 1.777 (repeating of course) times larger than 1080p, and that needs to be accounted for.

You should try changing the preset to HP (high performance) instead of HQ (high quality). Increase your bitrate to 40000, maybe even 50000. And change the keyinterval to auto, which will set it to 250 frames, or set it to something longer, like 5 seconds, or more.

When testing do recordings of at least five minutes of high action content. There's only one remotely long recording in that log file, and its statistics are less bad, so I assume that wasn't the sample you analyzed.

Yeah, I wasn't totally sure which log file to grab. I thought it would do one per recording rather than one per "OBS being open" period, but I guess not. Almost all my recordings were 5-7 minutes, and high action (Overwatch). I'll test those settings when I get home from work. Although if I have to record at 40-50mbps then I'll still probably stick with Shadowplay.
 
Here's a test build you can try:

https://onedrive.live.com/redir?resid=D9E409615CAF7866!132973&authkey=!AKiauGi4YWwLVY0&ithint=file,7z

It's optimized for smoothness and low CPU usage. Colorspace conversion is done on the GPU. It still won't be as efficient as ShadowPlay, since we can't use NVFBC or NVIFR, but it'll be interesting to see how it performs with the reduced GPU synchronization. For best results, enable VSync, use windowed fullscreen mode, and use window capture.

Edit: You may need to install the x64 VC runtimes from here: https://www.microsoft.com/en-us/download/details.aspx?id=51682
 
Last edited:

Woogity

New Member
Here's a test build you can try:

https://onedrive.live.com/redir?resid=D9E409615CAF7866!132973&authkey=!AKiauGi4YWwLVY0&ithint=file,7z

It's optimized for smoothness and low CPU usage. Colorspace conversion is done on the GPU. It still won't be as efficient as ShadowPlay, since we can't use NVFBC or NVIFR, but it'll be interesting to see how it performs with the reduced GPU synchronization. For best results, enable VSync, use windowed fullscreen mode, and use window capture.

Edit: You may need to install the x64 VC runtimes from here: https://www.microsoft.com/en-us/download/details.aspx?id=51682
Well, I started to test it, planning on doing a bunch of comparisons between VSync, no VSync, different bitrates, and the test build vs the standard OBS build, but when using your build, I just get empty 2KB video files when I record (I still get a performance hit though as if it is really recording).
 
Well, I started to test it, planning on doing a bunch of comparisons between VSync, no VSync, different bitrates, and the test build vs the standard OBS build, but when using your build, I just get empty 2KB video files when I record (I still get a performance hit though as if it is really recording).
That's odd. Can you upload a log file?
 
@Timothy003 do you have information if NVFBC or NVIFR are working in OBS Studio 0.14.1? I found that nvenc in studio can perform worse than shadowplay and quicksync for some games like dark souls3 and overwatch. I was looking for a cause but didnt find any....maybe this is the reason? Are these capture methods "closed source" or not exposed outside of shadowplay?
 
Here's the log. A little too big to attach or put on pastebin.

https://www.dropbox.com/s/2uradwte37daku6/2016-05-09-1813-55.log?dl=0
Hmm. Audio isn't starting for some reason. This is actually a good test, though - it shows the performance of capturing without encoding, similar to disabling encoding while previewing. From the scene preprocessing times, it's appears that the GPU can't keep up. (Window capture happens in scene preprocessing, and internally synchronizes with the GPU.) What's the GPU usage during this test?

@Timothy003 do you have information if NVFBC or NVIFR are working in OBS Studio 0.14.1? I found that nvenc in studio can perform worse than shadowplay and quicksync for some games like dark souls3 and overwatch. I was looking for a cause but didnt find any....maybe this is the reason? Are these capture methods "closed source" or not exposed outside of shadowplay?
To my knowledge, NVFBC and NVIFR aren't publicly exposed outside of the GRID SDK, which is intended for cloud gaming and gives very little control over the output - it essentially grabs frames from the game and feeds them straight to the encoder without further processing.
 
Top