Question / Help Jerky 60fps local recording

Mugros

New Member
Let me start by saying that I've been using OBS with NVENC for a couple of months now and I never noticed any major problem. Total time of recording might be over 70 hours. But every recording in the past was in 30fps, though. Last week with the Youtube switch to 60fps I also started to record 60fps videos and ran into severe quality issues. In the meantime I found that least one reason for it is the use of a inferior codec by Youtube. But they are changing the codec for more popular videos and these look a lot better.
Still I noticed something in the OBS captures that degrade quality. Frankly the problem is that the recording by OBS doesn't capture motion fluidly.

I made a test case with the Unigine Heaven Benchmark. I set everything on low, but kept 1080p@60fps. Vsync is on, which doesn't make a big difference. If anything, it makes the capture smoother. Without vsync the benchmark ran at about 200fps. I wanted to have a test case where the GPU isn't taxed at all, so that that isn't the cause. The constant movement of the wind mill in that benchmark makes it easy to judge the smoothness of the capture.

I captured the screen once with OBS (settings below) and once with Bandicam. For Bandicam I used the x264VFW codec. Settings aren't optimized at all, but more or less out of the box it yielded one of the smoothest captures to date on my setup. A test with Dxtory/x264VFW before in a different game was also very good. Also relatively smooth is the Bandicam capture with MJPEG.
I then loaded the captures into Sony Movie Studio and put them side-by-side. Playback was slowed down to 1/4th and resampling was off. So, what see in the first video is every frame 4 times replicated.


Left is obviously Bandicam, right OBS. The movement left is very smooth, not totally perfect, but usable. On the right the movement is awfully jerky.

If I step through the original OBS capture frame by frame, I noticed every couple of frames a frame is repeated, sometimes more than once, then there are several different frames and then again a duplicate. I counted them once. So, e.g. it looks like this. It starts with different frames and then the sequence alternates with duplicates: 7(diff) 1(same) 7 1 7 1 1 1 1 3 1 1.
In the Bandicam capture you get consistent frames with changes.

So, maybe I'm having the wrong settings?
Code:
00:14:25: Video Encoding: NVENC
00:14:25:     fps: 60
00:14:25:     width: 1920, height: 1080
00:14:25:     preset: hq
00:14:25:     profile: high
00:14:25:     level: autoselect
00:14:25:     keyint: 30
00:14:25:     CBR: no
00:14:25:     CFR: yes
00:14:25:     max bitrate: 80000
00:14:25:     avg bitrate: 80000
00:14:25:     buffer size: 0
00:14:25:     quality: 10
These are setting I found by googling at they were recommended for good local recording. For my 30fps videos I used 50mbps and a default buffer size. But I did try a lot of settings and testing in the last days and nothing seemed to fix the jerky capture in OBS. x264 capture in OBS was even worse or equally worse compared to using NVENC IIRC.
Really the only change that did improve it, was changing the recording program.

Here is my OBS log:

https://gist.github.com/anonymous/804e5f876cfa49e377a9

Another test video:
https://www.youtube.com/watch?v=G_Tb0OipdNQ
Top is OBS with x264 capture IIRC (might also be NVENC). It shows very bad jittery movement, especially towards the end. Middle: Bandicam/MJPEG. Most fluid motion. Bottom: Bandicam/NVENC. Some jitter.

Ingame video Van Helsing with OBS/NVENC:
https://www.youtube.com/watch?v=2-mi8osI2VU#t=952
Go to 16:00. You can see the jittery movement of the whole screen when I start walking. It's of course not so easy to see at 60fps and with that compression. That's why I made the slowed down test case.

Overall this is a big issue for me and prevents me from using OBS for 60fps captures, since the jerky motion is very distracting. With the 60fps on Youtube it simply feels bad and is not pleasing to the eye. I also suspect that it makes the YouTube quality worse, since motion prediction of the codec probably doesn't work that well if there is no fluid motion.

So, any ideas? Questions? Should I do more test? Solutions?
 

Boildown

Active Member
00:14:25: Adapter 1
00:14:25: Video Adapter: NVIDIA GeForce GTX 780
00:14:25: Video Adapter Dedicated Video Memory: 3106725888
00:14:25: Video Adapter Shared System Memory: 4263141376
00:14:25: Video Adapter Output 1: pos={0, 0}, size={1920, 1080}, attached=true
00:14:25: Video Adapter Output 2: pos={1920, 176}, size={1280, 1024}, attached=true
00:14:25: =====Stream Start: 2014-11-06, 00:14:25===============================================
00:14:25: Multithreaded optimizations: On
00:14:25: Base resolution: 1920x1080
00:14:25: Output resolution: 1920x1080
00:14:25: ------------------------------------------
00:14:25: Loading up D3D10 on NVIDIA GeForce GTX 780 (Adapter 1)...

00:14:25: ------------------------------------------
00:14:25: Video Encoding: NVENC
00:14:25: fps: 60
00:14:25: width: 1920, height: 1080
00:14:25: preset: hq

You're using the High Quality NVEnc preset with a Kepler-era video card at 1080p60. Try using the High Performance preset instead.

I would also say that your bitrate is too high, and your keyinterval is too low.
 

Mugros

New Member
You're using the High Quality NVEnc preset with a Kepler-era video card at 1080p60.
Shouldn't be an issue:
https://developer.nvidia.com/sites/default/files/akamai/cuda/files/CUDADownloads/NVENC_AppNote.pdf

See 2.2.
GOP with OBS is 30 frames and IPPPPPP... same as with Shadowplay.
120fps should be doable. All I want is 60 and that in a test case that doesn't stress the GPU at all.

Try using the High Performance preset instead.

No improvement.

I would also say that your bitrate is too high,

OBS typically never uses the entered bit rate. It's more like a ceiling. At least in VBR mode. Although even in CBR it doesn't use all of it.
I set it now to 50mbps and CBR (and High Perf). This way it is comparable to Shadowplay in bitrate. OBS capture is finally 33.2mbps, Shadowplay is 36.7mbps.
OBS jerky, Shadowplay smooth.

and your keyinterval is too low.
Well, it's set to 0(auto). That sets a keyframe every 30 frames, identical to the smooth Shadowplay. I can only set it in seconds and only whole numbers. If I set it to 1 there is one every 60 frames. So, that's nothing I can change. But it obviously doesn't cause this anyway.

BTW, I keep mentioning Shadowplay because I reactivated it. Before I always avoided it, because it uses the wrong colour matrix, bt.601, and this way botches the colours. That's also why I didn't include it in former test. OBS uses bt.709 and that's why I preferred it in the past.. I still have to do more tests but first tests show that SP yields the smoothest NVENC encoding by far. the thing is that I can partially rescue the colours, but I can't fix the stutter yet.
 
Top