Bug Report Jitter in frame capture causing duplicate and missed frames preventing fluid motion

Mugros

New Member
Note: This mainly applies to 60fps capture. Haven't tested it with 30fps, but I never noticed a major problem in the past.

The first part including a demonstration video can be found in this thread. In was posted in the help section because I was unsure if I was making an error or not. But I did a few more tests and I'm 99% sure it's a problem with OBS.

First the data.
I made a capture of a constantly moving object. Twice with OBS/NVENC, once vsync on, once off. I repeated the same with Shadowplay, This gave me 4 videos.
Then I loaded a bunch of frames into Photoshop and overlaid them so you can see where the object is in the frame.
First up: Shadowplay with vsync on:
3z6i82c.jpg


As you can see by the dark edge appearing at uniform distances the frames are captured in a constant and consistent order. There is one missing animation frame in the middle, noticable by the gap. If I would've included more frames you would be able to see that this won't happen in the remaining movement while the object passes the screen. I also checked for duplicate frames. There are none. If I forward through the motion frame by frame, there is only this one gap where the object jumps twice as far, but without any duplicate frames.

Now, OBS/NVENC with vsync on:
QoXzi1n.gif


As you can see the motion wasn't capture fluidly by the frames in the video. Often the captured frames miss one of the animation frames resulting in jumps twice the step size of the object. At the same time there are many duplicate frames. This is shown with the animation. I lowered the "fill" of the layers. Single frames appear lighter in one picture of the animation. Duplicate frames appear darker.
If you want to see the effect in motion, see the video in the thread I linked above.

So, now to the explanation I came up with. I'm not saying this is the correct explanation, but I think it helps to understand the problem.
dCBEuwE.png

In a perfect capture (top arrows) the frame displayed and the frame captured are in sync. This is happening more or less with Shadowplay. There is always some error, of course, as can be seen with the missing animation frame.
But what "seems" to happen in OBS? A possible explanation is that OBS captures the frame at a time close to the swapping of the frame buffer and the time between screen grabs jitters. If the frame is captured earlier the frame buffer hasn't swapped to the next frame yet and we get a duplicate. Since we still need to get 60fps on average the time between other frame grabs will eventually be longer than 1/60s and two frame buffer swaps have past resulting in a missed frame of the animation.

This happens with NVENC or x264 capture. It doesn't matter if I change to high performance, low bitrate, low quality etc. Certainly I haven't permutated through all the possible combinations of settings, but this shouldn't happen in the first place. All tests with other screen grabbing software left me only with the conclusion that it's a problem of OBS.

Caveat: One thing that doesn't fit into my explanation is the result with vsync off. I expect the animation to be somewhat smoother, because at about 300fps the frame should've been swapped 5 times between captures. Even if the movement of the object isn't captured at a constant pace, the captured distances should be more or less the same, maybe deviate by 1/5 or 2/5 of a step. Instead I still get huge differences in captured movement distance in the frames. And, what I definitely didn't expect, OBS still has duplicate frames in the capture.
2NZbMJg.jpg

I didn't animate this to highlight the duplicate frames, but they are there.
For this to happen the jitter can't be small compared to a frame length at 60fps, it has be huge, practically up to the length of 1/60s. Or there is another severe error in the way the frames are captured.

Shadowplay without vsync:
fDUiLW6.jpg

Well.... if only Shadowplay wouldn't use bt.601 as the color matrix. *sad face*

https://gist.github.com/af5382410e8703e0cbf0
 
Last edited:

Mugros

New Member
8 days without any discussion of the issue. So, what is the problem? Can't be reproduced? Something wrong with my data? Do you want me to do more test? I'm fine with that.
 

Osiris

Active Member
Have you tried this with and without CFR (Constant Frame Rate)?
Because I can only reproduce this with CFR on, which could explain the duplicate frames:
 

n3v3rm1nd

Member
i have the same issue and CFR did nothigng. Must be OBS bug i'm sure and dont hate on me now ugh... Mirillis Action 60fps recording is butter smooth ....
 

Floatingthru

Community Helper
I did a bunch of testing with my new GTX 970 using OBS and Shadowplay then found out that OBS is skipping and or duplicating a ton of frames. CPU/GPU isn't closed to being maxed out, but the videos all come out very stuttery and laggy when using OBS. I am just hoping that OBS Studio will fix a ton of problems that plagued this first iteration of OBS.

All logs will show that at least 5% of the frames are duplicated with some lagging. x264 shows much less duplicated frames, but the jitter is still there.

http://pastebin.com/dQAVsTfJ

https://www.youtube.com/watch?v=kM0FSCEaQC4
 
Last edited:

Mugros

New Member
Have you tried this with and without CFR (Constant Frame Rate)?
Because I can only reproduce this with CFR on, which could explain the duplicate frames:
Normally I use CFR since OBs says that it is needed for some editors. Haven't had a problem without it though in Sony Movie Studio. But in the old log posted above you can see that CFR was off. I'm 99% sure I tested it then and it didn't make a difference. I did a quick test now with the new version and it happens CFR on or off. (Links go to raw OBS captures. I hope the links work. About 1.5MB each. Download, don't watch on Google Drive.)
 

Mugros

New Member
Mirillis Action 60fps recording is butter smooth ....
Have just tried this and as for now results are perfect. I even can capture RAGE in 60fps. Heaven Benchmark is also super smooth. Almost unbelievable.
Yeah, so, I don't want to push people away from OBS, but this just shows that it's not my PC that is incapable of delivering a perfect result.
 

n3v3rm1nd

Member
Have you ever posted a log on this forum? Cause I can't find it.

i will get you one. But you could ask me more nicely instead of whining about ... geesh

Have just tried this and as for now results are perfect. I even can capture RAGE in 60fps. Heaven Benchmark is also super smooth. Almost unbelievable.
Yeah, so, I don't want to push people away from OBS, but this just shows that it's not my PC that is incapable of delivering a perfect result.

Like i said...
 

n3v3rm1nd

Member
Here you are :

Code:
01:17:15: CUDA loaded successfully
01:17:16: 1 CUDA capable devices found
01:17:16: [ GPU #0 - < GeForce GTX 675MX > has Compute SM 3.0, NVENC Available ]
01:18:29: Open Broadcaster Software v0.638b - 64bit ( ^ω^)
01:18:29: -------------------------------
01:18:29: CPU Name: Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz
01:18:29: CPU Speed: 2395MHz
01:18:29: Physical Memory:  10136MB Total, 4064MB Free
01:18:29: stepping id: 9, model 58, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
01:18:29: monitor 1: pos={0, 0}, size={1920, 1080}
01:18:29: Windows Version: 6.2 Build 9200
01:18:29: Aero is Enabled
01:18:29: -------------------------------
01:18:29: OBS Modules:
01:18:29: Base Address     Module
01:18:29: 000000007BED0000 OBS.exe
01:18:29: 00000000F5C30000 OBSApi.dll
01:18:29: 00000000FB280000 DShowPlugin.dll
01:18:29: 00000000F7AF0000 GraphicsCapture.dll
01:18:29: 00000000FAE80000 NoiseGate.dll
01:18:29: 00000000F81F0000 PSVPlugin.dll
01:18:29: ------------------------------------------
01:18:29: Adapter 1
01:18:29:   Video Adapter: NVIDIA GeForce GTX 675MX
01:18:29:   Video Adapter Dedicated Video Memory: 4202704896
01:18:29:   Video Adapter Shared System Memory: 1019607040
01:18:29:   Video Adapter Output 1: pos={0, 0}, size={1920, 1080}, attached=true
01:18:29: ------------------------------------------
01:18:29: Adapter 2
01:18:29:   Video Adapter: NVIDIA GeForce GTX 675MX
01:18:29:   Video Adapter Dedicated Video Memory: 4202704896
01:18:29:   Video Adapter Shared System Memory: 1019607040
01:18:29: =====Stream Start: 2014-11-23, 01:18:29===============================================
01:18:29:   Multithreaded optimizations: On
01:18:29:   Base resolution: 1920x1080
01:18:29:   Output resolution: 1920x1080
01:18:29: ------------------------------------------
01:18:29: Loading up D3D10 on NVIDIA GeForce GTX 675MX (Adapter 1)...
01:18:29: ------------------------------------------
01:18:29: Audio Format: 48000 Hz
01:18:29: ------------------------------------------
01:18:29: Audio Channels: 2 Ch
01:18:29: Playback device Default
01:18:29: ------------------------------------------
01:18:29: Using desktop audio input: Lautsprecher (Realtek High Definition Audio)
01:18:29: Global Audio time adjust: 145
01:18:29: ------------------------------------------
01:18:29: Audio Encoding: AAC
01:18:29:     bitrate: 320
01:18:29: Using graphics capture
01:18:29: Scene buffering time set to 700
01:18:29: NVENC internal init finished successfully
01:18:29: NVENC supports 8 h264 presets
01:18:29: ------------------------------------------
01:18:29: Video Encoding: NVENC
01:18:29:     fps: 60
01:18:29:     width: 1920, height: 1080
01:18:29:     preset: hp
01:18:29:     profile: main
01:18:29:     level: autoselect
01:18:29:     keyint: 30
01:18:29:     CBR: yes
01:18:29:     CFR: yes
01:18:29:     max bitrate: 25000
01:18:29:     avg bitrate: 25000
01:18:29:     buffer size: 0
01:18:29: ------------------------------------------
01:18:35: Trying to hook process: DXHRDC.exe
01:18:35: SharedTexCapture hooked
01:18:48: GraphicsCaptureSource::NewCapture:  eliminating old capture
01:18:48: SharedTexCapture hooked
01:19:47: Exit signal received, terminating capture
01:19:49: FlushBufferedVideo: Flushing 46 packets over 750 ms
01:19:50: Total frames encoded: 4828, total frames duplicated: 80 (1.66%)
01:19:50: Total frames rendered: 4787, number of late frames: 9 (0.19%) (it's okay for some frames to be late)
01:19:50: Encoder closed
01:19:50: NVENC deinitialized
01:19:50:
01:19:50: Profiler time results:
01:19:50:
01:19:50: ==============================================================
01:19:50: video thread frame - [100%] [avg time: 0.88 ms] [children: 13.6%] [unaccounted: 86.4%]
01:19:50: | scene->Preprocess - [0.114%] [avg time: 0.001 ms]
01:19:50: | GPU download and conversion - [13.5%] [avg time: 0.119 ms] [children: 10.9%] [unaccounted: 2.61%]
01:19:50: | | flush - [6.7%] [avg time: 0.059 ms]
01:19:50: | | CopyResource - [1.36%] [avg time: 0.012 ms]
01:19:50: | | conversion to 4:2:0 - [2.84%] [avg time: 0.025 ms]
01:19:50: Convert444Threads - [100%] [avg time: 1.7 ms] [children: 99.6%] [unaccounted: 0.412%]
01:19:50: | Convert444toNV12 - [99.6%] [avg time: 1.693 ms]
01:19:50: encoder thread frame - [100%] [avg time: 6.959 ms] [children: 2.67%] [unaccounted: 97.3%]
01:19:50: | sending stuff out - [2.67%] [avg time: 0.186 ms]
01:19:50: ==============================================================
01:19:50:
01:19:50:
01:19:50: Profiler CPU results:
01:19:50:
01:19:50: ==============================================================
01:19:50: video thread frame - [cpu time: avg 0.228 ms, total 1093.75 ms] [avg calls per frame: 1]
01:19:50: | scene->Preprocess - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
01:19:50: | GPU download and conversion - [cpu time: avg 0.045 ms, total 218.75 ms] [avg calls per frame: 1]
01:19:50: | | flush - [cpu time: avg 0.019 ms, total 93.75 ms] [avg calls per frame: 1]
01:19:50: | | CopyResource - [cpu time: avg 0.013 ms, total 62.5 ms] [avg calls per frame: 1]
01:19:50: | | conversion to 4:2:0 - [cpu time: avg 0.006 ms, total 31.25 ms] [avg calls per frame: 1]
01:19:50: Convert444Threads - [cpu time: avg 1.63 ms, total 15468.8 ms] [avg calls per frame: 2]
01:19:50: | Convert444toNV12 - [cpu time: avg 1.628 ms, total 15453.1 ms] [avg calls per frame: 2]
01:19:50: encoder thread frame - [cpu time: avg 0.875 ms, total 4187.5 ms] [avg calls per frame: 1]
01:19:50: | sending stuff out - [cpu time: avg 0.055 ms, total 265.625 ms] [avg calls per frame: 1]
01:19:50: ==============================================================
01:19:50:
01:19:50: =====Stream End: 2014-11-23, 01:19:50=================================================

What i saw is that my GPU usage goes up by nearly 20% while Mirillis only adds about 8%,,, Somethings funny here
 
Last edited:

Questwizard

New Member
I'm starting to think its a specific problem with game capture in OBS. Something has to be a little "off" in its timing somewhere. I get this problem even with logs that show absolutely no dropped/duplicated frames.

My ancient XP box with a single-core Athlon 64 2.2GHz CPU could make butter smooth 60fps recordings back when I used it (with other software obviously, though using x264 as the codec).Suprisingly, performance there with other software was much better than a modern quad-core system running Win 8. Its definitely an issue in OBS itself.
 

Osiris

Active Member
Here you are :

Code:
01:17:15: CUDA loaded successfully
01:17:16: 1 CUDA capable devices found
01:17:16: [ GPU #0 - < GeForce GTX 675MX > has Compute SM 3.0, NVENC Available ]
01:18:29: Open Broadcaster Software v0.638b - 64bit ( ^ω^)
01:18:29: -------------------------------
01:18:29: CPU Name: Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz
01:18:29: CPU Speed: 2395MHz
01:18:29: Physical Memory:  10136MB Total, 4064MB Free
01:18:29: stepping id: 9, model 58, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
01:18:29: monitor 1: pos={0, 0}, size={1920, 1080}
01:18:29: Windows Version: 6.2 Build 9200
01:18:29: Aero is Enabled
01:18:29: -------------------------------
01:18:29: OBS Modules:
01:18:29: Base Address     Module
01:18:29: 000000007BED0000 OBS.exe
01:18:29: 00000000F5C30000 OBSApi.dll
01:18:29: 00000000FB280000 DShowPlugin.dll
01:18:29: 00000000F7AF0000 GraphicsCapture.dll
01:18:29: 00000000FAE80000 NoiseGate.dll
01:18:29: 00000000F81F0000 PSVPlugin.dll
01:18:29: ------------------------------------------
01:18:29: Adapter 1
01:18:29:   Video Adapter: NVIDIA GeForce GTX 675MX
01:18:29:   Video Adapter Dedicated Video Memory: 4202704896
01:18:29:   Video Adapter Shared System Memory: 1019607040
01:18:29:   Video Adapter Output 1: pos={0, 0}, size={1920, 1080}, attached=true
01:18:29: ------------------------------------------
01:18:29: Adapter 2
01:18:29:   Video Adapter: NVIDIA GeForce GTX 675MX
01:18:29:   Video Adapter Dedicated Video Memory: 4202704896
01:18:29:   Video Adapter Shared System Memory: 1019607040
01:18:29: =====Stream Start: 2014-11-23, 01:18:29===============================================
01:18:29:   Multithreaded optimizations: On
01:18:29:   Base resolution: 1920x1080
01:18:29:   Output resolution: 1920x1080
01:18:29: ------------------------------------------
01:18:29: Loading up D3D10 on NVIDIA GeForce GTX 675MX (Adapter 1)...
01:18:29: ------------------------------------------
01:18:29: Audio Format: 48000 Hz
01:18:29: ------------------------------------------
01:18:29: Audio Channels: 2 Ch
01:18:29: Playback device Default
01:18:29: ------------------------------------------
01:18:29: Using desktop audio input: Lautsprecher (Realtek High Definition Audio)
01:18:29: Global Audio time adjust: 145
01:18:29: ------------------------------------------
01:18:29: Audio Encoding: AAC
01:18:29:     bitrate: 320
01:18:29: Using graphics capture
01:18:29: Scene buffering time set to 700
01:18:29: NVENC internal init finished successfully
01:18:29: NVENC supports 8 h264 presets
01:18:29: ------------------------------------------
01:18:29: Video Encoding: NVENC
01:18:29:     fps: 60
01:18:29:     width: 1920, height: 1080
01:18:29:     preset: hp
01:18:29:     profile: main
01:18:29:     level: autoselect
01:18:29:     keyint: 30
01:18:29:     CBR: yes
01:18:29:     CFR: yes
01:18:29:     max bitrate: 25000
01:18:29:     avg bitrate: 25000
01:18:29:     buffer size: 0
01:18:29: ------------------------------------------
01:18:35: Trying to hook process: DXHRDC.exe
01:18:35: SharedTexCapture hooked
01:18:48: GraphicsCaptureSource::NewCapture:  eliminating old capture
01:18:48: SharedTexCapture hooked
01:19:47: Exit signal received, terminating capture
01:19:49: FlushBufferedVideo: Flushing 46 packets over 750 ms
01:19:50: Total frames encoded: 4828, total frames duplicated: 80 (1.66%)
01:19:50: Total frames rendered: 4787, number of late frames: 9 (0.19%) (it's okay for some frames to be late)
01:19:50: Encoder closed
01:19:50: NVENC deinitialized
01:19:50:
01:19:50: Profiler time results:
01:19:50:
01:19:50: ==============================================================
01:19:50: video thread frame - [100%] [avg time: 0.88 ms] [children: 13.6%] [unaccounted: 86.4%]
01:19:50: | scene->Preprocess - [0.114%] [avg time: 0.001 ms]
01:19:50: | GPU download and conversion - [13.5%] [avg time: 0.119 ms] [children: 10.9%] [unaccounted: 2.61%]
01:19:50: | | flush - [6.7%] [avg time: 0.059 ms]
01:19:50: | | CopyResource - [1.36%] [avg time: 0.012 ms]
01:19:50: | | conversion to 4:2:0 - [2.84%] [avg time: 0.025 ms]
01:19:50: Convert444Threads - [100%] [avg time: 1.7 ms] [children: 99.6%] [unaccounted: 0.412%]
01:19:50: | Convert444toNV12 - [99.6%] [avg time: 1.693 ms]
01:19:50: encoder thread frame - [100%] [avg time: 6.959 ms] [children: 2.67%] [unaccounted: 97.3%]
01:19:50: | sending stuff out - [2.67%] [avg time: 0.186 ms]
01:19:50: ==============================================================
01:19:50:
01:19:50:
01:19:50: Profiler CPU results:
01:19:50:
01:19:50: ==============================================================
01:19:50: video thread frame - [cpu time: avg 0.228 ms, total 1093.75 ms] [avg calls per frame: 1]
01:19:50: | scene->Preprocess - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
01:19:50: | GPU download and conversion - [cpu time: avg 0.045 ms, total 218.75 ms] [avg calls per frame: 1]
01:19:50: | | flush - [cpu time: avg 0.019 ms, total 93.75 ms] [avg calls per frame: 1]
01:19:50: | | CopyResource - [cpu time: avg 0.013 ms, total 62.5 ms] [avg calls per frame: 1]
01:19:50: | | conversion to 4:2:0 - [cpu time: avg 0.006 ms, total 31.25 ms] [avg calls per frame: 1]
01:19:50: Convert444Threads - [cpu time: avg 1.63 ms, total 15468.8 ms] [avg calls per frame: 2]
01:19:50: | Convert444toNV12 - [cpu time: avg 1.628 ms, total 15453.1 ms] [avg calls per frame: 2]
01:19:50: encoder thread frame - [cpu time: avg 0.875 ms, total 4187.5 ms] [avg calls per frame: 1]
01:19:50: | sending stuff out - [cpu time: avg 0.055 ms, total 265.625 ms] [avg calls per frame: 1]
01:19:50: ==============================================================
01:19:50:
01:19:50: =====Stream End: 2014-11-23, 01:19:50=================================================

What i saw is that my GPU usage goes up by nearly 20% while Mirillis only adds about 8%,,, Somethings funny here

Well here it does show that frames were duplicated, in Questwizard's example OBS reports 0 duplicated frames while the test-video clearly shows duplicated frames.
I'm starting to think its a specific problem with game capture in OBS. Something has to be a little "off" in its timing somewhere. I get this problem even with logs that show absolutely no dropped/duplicated frames.

My ancient XP box with a single-core Athlon 64 2.2GHz CPU could make butter smooth 60fps recordings back when I used it (with other software obviously, though using x264 as the codec).Suprisingly, performance there with other software was much better than a modern quad-core system running Win 8. Its definitely an issue in OBS itself.

I did only use window capture to reproduce it, so it could be something in game capture. I'll try game capture tomorrow.
 

Mugros

New Member
Like i said...
After more testing is has other problems though. It only records an I-frame every 120th frame, compared to every 30th frame in SP and OBS. The result is quality pumping in high-motion scenes. This wasn't noticeable in the test I did yesterday. Overall visual quality is noticeable lower. Textures look muddy quickly. Quality high vs. normal doesn't seem to have any impact. Both are lower compared to the other programs. And framerate impact is pretty severe with NVENC in my Warhammer 40K test case. SP has low impact, OBS slightly more, but with Action the fps drop by 33%. Add to this the fact that recording seems to be wonky in general. In Warhammer 40K recording stops when the game loads the benchmark. Doesn't happen with OBS or SP. And with Rage somehow today game capture didn't work and I had to use desktop capture.

OK, nothing seems to be relevant for this issue with OBS though. Just FYI.
 

Lapppy

Member
I've been having this issue with my local recordings for a good while and have been trying to find a solution. Unfortunately this thread is all I can find that shows the problem I am having.

I get what appears to be micro stuttering or duplicated frames. The game runs at a full 60fps, but the 30fps recording is not always smooth and sometimes appears to skip frames. The Logfile shows no duplicated frames or a very small number of them. This happens with Game capture, Monitor capture, 1080p, 720p, x264, QuickSync, different crf value, or anything else.

Two games that I've been trying out some local recording with are Minecraft and League of Legends. In Minecraft, the issue is fixed if Vsync is ON. However, in LoL the issue exists regardless of Vsync setting.

The issue occurs less often in LoL if Monitor capture is used instead of Game capture.

Code:
21:29:14: Open Broadcaster Software v0.64b - 64bit ( ^ω^)
21:29:14: -------------------------------
21:29:14: CPU Name: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
21:29:14: CPU Speed: 3592MHz
21:29:14: Physical Memory:  12193MB Total, 9585MB Free
21:29:14: stepping id: 3, model 60, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
21:29:14: monitor 1: pos={0, 0}, size={1920, 1080}
21:29:14: monitor 2: pos={1920, 0}, size={1024, 768}
21:29:14: Windows Version: 6.2 Build 9200
21:29:14: Aero is Enabled
21:29:14: -------------------------------
21:29:14: OBS Modules:
21:29:14: Base Address     Module
21:29:14: 000000003CF00000 OBS.exe
21:29:14: 00000000EC1A0000 OBSApi.dll
21:29:14: 00000000F9100000 DShowPlugin.dll
21:29:14: 00000000F8C90000 GraphicsCapture.dll
21:29:14: 00000000F8390000 LolSceneSwitch.dll
21:29:14: 00000000F9180000 NoiseGate.dll
21:29:14: 00000000F8D60000 PSVPlugin.dll
21:29:14: ------------------------------------------
21:29:14: Adapter 1
21:29:14:   Video Adapter: NVIDIA GeForce GTX 645
21:29:14:   Video Adapter Dedicated Video Memory: 2082271232
21:29:14:   Video Adapter Shared System Memory: 2147676160
21:29:14:   Video Adapter Output 1: pos={0, 0}, size={1920, 1080}, attached=true
21:29:14:   Video Adapter Output 2: pos={1920, 0}, size={1024, 768}, attached=true
21:29:14: ------------------------------------------
21:29:14: Adapter 2
21:29:14:   Video Adapter: Intel(R) HD Graphics 4600
21:29:14:   Video Adapter Dedicated Video Memory: 0
21:29:14:   Video Adapter Shared System Memory: 1879048192
21:29:14: =====Stream Start: 2015-01-26, 21:29:14===============================================
21:29:14:   Multithreaded optimizations: On
21:29:14:   Base resolution: 1920x1080
21:29:14:   Output resolution: 1920x1080
21:29:14: ------------------------------------------
21:29:14: Loading up D3D10 on NVIDIA GeForce GTX 645 (Adapter 1)...
21:29:14: ------------------------------------------
21:29:14: Audio Format: 48000 Hz
21:29:14: ------------------------------------------
21:29:14: Audio Channels: 2 Ch
21:29:14: Playback device Default
21:29:14: ------------------------------------------
21:29:14: Using desktop audio input: Speakers / Headphones (IDT High Definition Audio CODEC)
21:29:14: Global Audio time adjust: 0
21:29:14: ------------------------------------------
21:29:14: Using auxilary audio input: Desktop Microphone (Microsoft® LifeCam Cinema(TM))
21:29:14: Mic time offset: 0
21:29:14: ------------------------------------------
21:29:14: Audio Encoding: AAC
21:29:14:     bitrate: 128
21:29:14: Using Monitor Capture
21:29:14: Scene buffering time set to 700
21:29:14: Using custom x264 settings: "crf=20"
21:29:14: x264: VBV maxrate specified, but no bufsize, ignored
21:29:14: ------------------------------------------
21:29:14: Video Encoding: x264
21:29:14:     fps: 30
21:29:14:     width: 1920, height: 1080
21:29:14:     preset: veryfast
21:29:14:     profile: high
21:29:14:     keyint: 250
21:29:14:     CBR: no
21:29:14:     CFR: yes
21:29:14:     max bitrate: 1000
21:29:14:     buffer size: 0
21:29:14:     quality: 12
21:29:14: ------------------------------------------
21:29:14: Syncing audio to video time (WARNING: you should not be doing this if you are just having webcam desync, that's a separate issue)
21:29:14: ++++++++++++++++++++++++++++++++++++++++++++++++++++++
21:29:14:   New Scene
21:29:14: ------------------------------------------
21:29:14:     device: Microsoft LifeCam Cinema,
21:29:14:     device id \\?\usb#vid_045e&pid_075d&mi_00#6&277bb8c6&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global,
21:29:14:     chosen type: YUY2, usingFourCC: false, res: 424x240 - 424x240, frameIntervals: 333333-666666
21:29:14:     use buffering: false - 0, fourCC: 'YUY2'
21:29:14:     audio device: Disable,
21:29:14:     audio device id Disabled,
21:29:14:     audio time offset 0,
21:29:14:
21:29:14: Using directshow input
21:29:15: Using Monitor Capture
21:31:25: ++++++++++++++++++++++++++++++++++++++++++++++++++++++
21:31:25:   New Scene
21:31:25: Using Monitor Capture
21:33:05: ++++++++++++++++++++++++++++++++++++++++++++++++++++++
21:33:05:   New Scene
21:33:05: Using Monitor Capture
21:38:11: ++++++++++++++++++++++++++++++++++++++++++++++++++++++
21:38:11:   New Scene
21:38:11: Using Monitor Capture
21:38:15: Total frames encoded: 16205, total frames duplicated: 0 (0.00%)
21:38:15: Total frames rendered: 16223, number of late frames: 1 (0.01%) (it's okay for some frames to be late)
21:38:16:
21:38:16: Profiler time results:
21:38:16:
21:38:16: ==============================================================
21:38:16: video thread frame - [100%] [avg time: 0.549 ms] [children: 87.6%] [unaccounted: 12.4%]
21:38:16: | scene->Preprocess - [63.9%] [avg time: 0.351 ms]
21:38:16: | GPU download and conversion - [23.7%] [avg time: 0.13 ms] [children: 22.6%] [unaccounted: 1.09%]
21:38:16: | | flush - [21.5%] [avg time: 0.118 ms]
21:38:16: | | CopyResource - [0.729%] [avg time: 0.004 ms]
21:38:16: | | conversion to 4:2:0 - [0.364%] [avg time: 0.002 ms]
21:38:16: Convert444Threads - [100%] [avg time: 1.479 ms] [children: 99.7%] [unaccounted: 0.338%]
21:38:16: | Convert444toNV12 - [99.7%] [avg time: 1.474 ms]
21:38:16: encoder thread frame - [100%] [avg time: 2.12 ms] [children: 6.6%] [unaccounted: 93.4%]
21:38:16: | sending stuff out - [6.6%] [avg time: 0.14 ms]
21:38:16: ==============================================================
21:38:16:
21:38:16:
21:38:16: Profiler CPU results:
21:38:16:
21:38:16: ==============================================================
21:38:16: video thread frame - [cpu time: avg 0.033 ms, total 546.875 ms] [avg calls per frame: 1]
21:38:16: | scene->Preprocess - [cpu time: avg 0.005 ms, total 93.75 ms] [avg calls per frame: 1]
21:38:16: | GPU download and conversion - [cpu time: avg 0.016 ms, total 265.625 ms] [avg calls per frame: 1]
21:38:16: | | flush - [cpu time: avg 0.01 ms, total 171.875 ms] [avg calls per frame: 1]
21:38:16: | | CopyResource - [cpu time: avg 0.002 ms, total 46.875 ms] [avg calls per frame: 1]
21:38:16: | | conversion to 4:2:0 - [cpu time: avg 0 ms, total 15.625 ms] [avg calls per frame: 1]
21:38:16: Convert444Threads - [cpu time: avg 1.318 ms, total 42734.4 ms] [avg calls per frame: 2]
21:38:16: | Convert444toNV12 - [cpu time: avg 1.314 ms, total 42609.4 ms] [avg calls per frame: 2]
21:38:16: encoder thread frame - [cpu time: avg 1.566 ms, total 25390.6 ms] [avg calls per frame: 1]
21:38:16: | sending stuff out - [cpu time: avg 0.176 ms, total 2859.38 ms] [avg calls per frame: 1]
21:38:16: ==============================================================
21:38:16:
21:38:16: =====Stream End: 2015-01-26, 21:38:16=================================================
21:38:24: Terminating 0xef8

I've also tried out obs-studio 0.7.3 for windows, because I noticed this was included in an earlier build and I thought it might fix it. The microstutter issue does not seem to occur in Minecraft in obs-studio regardless of whether Vsync is on or not, however the problem is still in LoL. Also the audio quality is really bad, but that's another issue.
 

n3v3rm1nd

Member
I've been having this issue with my local recordings for a good while and have been trying to find a solution. Unfortunately this thread is all I can find that shows the problem I am having.

I get what appears to be micro stuttering or duplicated frames. The game runs at a full 60fps, but the 30fps recording is not always smooth and sometimes appears to skip frames. The Logfile shows no duplicated frames or a very small number of them. This happens with Game capture, Monitor capture, 1080p, 720p, x264, QuickSync, different crf value, or anything else.

Two games that I've been trying out some local recording with are Minecraft and League of Legends. In Minecraft, the issue is fixed if Vsync is ON. However, in LoL the issue exists regardless of Vsync setting.

The issue occurs less often in LoL if Monitor capture is used instead of Game capture.

/removed code

I've also tried out obs-studio 0.7.3 for windows, because I noticed this was included in an earlier build and I thought it might fix it. The microstutter issue does not seem to occur in Minecraft in obs-studio regardless of whether Vsync is on or not, however the problem is still in LoL. Also the audio quality is really bad, but that's another issue.

I'm using Shadowplay for all the games now that are fullscreen DX. Butter smooth 60fps recording as of late. I even contemplated buying Xsplit because the performance is a little better. Like 10fps better. I could only test 30fps because i have no creditcard on hand.

Maybe someone has a license and could test 60fps if it jitters too. But you're right, 30fps isn't smooth too... Latest update sadly didn't fix anything about that.

Maybe someone officially can say about that..
 
Top