Question / Help OBS recordings cannot maintain 60fps, even with low settings

locke_d

New Member
Please note the distinction in the title: I'm not looking to stream at the moment, only record gameplay with OBS.

I have an Elgato HD 60 S, which I have been using to record Nintendo Switch gameplay as well as Wii gameplay (using a HDMI adaptor). For the Switch in particular, I have been looking to record 1080p 60fps video and simply save it locally to my laptop, which I thought would be no problem. (I'm using an i7-7700HQ and GeForce 1050 + NVENC, which I understand isn't great, but should be enough I would have thought?)

However, the video I get back cannot hold 60 frames per second consistently. Every ten seconds or so, for roughly five seconds at a time, the video dips into what feels more like 30 to 40 fps. I used a greedy bitrate (35000), so I figured that issue would be resolved if I decreased it. However, lowering it as far as 10000 seemed to make no difference. Lowering the resolution to 720p and even 540p was also ineffective: still plenty of stutter.

What interests me most is that OBS is (apparently?) only using ~25% of my GPU, and under 5% of my CPU when I'm recording 1080p60 at 35000 bitrate. The computer runs flawlessly while doing this. Yet, the video I get still has this distracting frame stutter. I'm by no means an expert on this, but is this not strange behaviour?

Logs are below. Is there much I can do to fix this?

Code:
10:46:13.051: CPU Name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
10:46:13.052: CPU Speed: 2808MHz
10:46:13.052: Physical Cores: 4, Logical Cores: 8
10:46:13.052: Physical Memory: 16269MB Total, 12084MB Free
10:46:13.052: Windows Version: 10.0 Build 16299 (revision: 611; 64-bit)
10:46:13.052: Running as administrator: false
10:46:13.052: Aero is Enabled (Aero is always on for windows 8 and above)
10:46:13.052: Windows 10 Gaming Features:
10:46:13.052:     Game DVR: On
10:46:13.054: Sec. Software Status:
10:46:13.055:     Windows Defender Antivirus: disabled (AV)
10:46:13.055:     McAfee VirusScan: enabled (AV)
10:46:13.056:     McAfee Firewall: enabled (FW)
10:46:13.056:     Windows Firewall: disabled (FW)
10:46:13.056:     Windows Defender Antivirus: disabled (ASW)
10:46:13.056:     McAfee VirusScan: enabled (ASW)
10:46:13.057: Browser Hardware Acceleration: true
10:46:13.057: Portable mode: false
10:46:13.160: OBS 22.0.1 (64-bit, windows)
10:46:13.160: ---------------------------------
10:46:13.175: ---------------------------------
10:46:13.175: audio settings reset:
10:46:13.175:     samples per sec: 48000
10:46:13.175:     speakers:        2
10:46:13.175: ---------------------------------
10:46:13.175: Initializing D3D11...
10:46:13.175: Available Video Adapters:
10:46:13.182:     Adapter 1: NVIDIA GeForce GTX 1050
10:46:13.182:       Dedicated VRAM: 4224712704
10:46:13.182:       Shared VRAM:    4234790912
10:46:13.182:       output 1: pos={0, 0}, size={1920, 1080}, attached=true
10:46:13.182:     Adapter 2: Intel(R) HD Graphics 630
10:46:13.182:       Dedicated VRAM: 134217728
10:46:13.182:       Shared VRAM:    4234790912
10:46:13.184: Loading up D3D11 on adapter NVIDIA GeForce GTX 1050 (0)
10:46:13.223: D3D11 loaded successfully, feature level used: 45056
10:46:13.932: ---------------------------------
10:46:13.932: video settings reset:
10:46:13.932:     base resolution:   1920x1080
10:46:13.932:     output resolution: 1920x1080
10:46:13.932:     downscale filter:  Bicubic
10:46:13.932:     fps:               60/1
10:46:13.932:     format:            NV12
10:46:13.932:     YUV mode:          709/Full
10:46:13.936: Audio monitoring device:
10:46:13.936:     name: Default
10:46:13.936:     id: default
10:46:13.936: ---------------------------------
10:46:13.938: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/chrome_elf.dll' not found, loading of module failed
10:46:13.939: [CoreAudio encoder]: CoreAudio AAC encoder not installed on the system or couldn't be loaded
10:46:13.969: [AMF] AMF Test failed due to one or more errors.
10:46:13.969: Failed to initialize module 'enc-amf.dll'
10:46:13.983: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libcef.dll' not found, loading of module failed
10:46:13.984: LoadLibrary failed for '../../obs-plugins/64bit/libEGL.dll': The specified procedure could not be found.
10:46:13.984:  (127)
10:46:13.984: Module '../../obs-plugins/64bit/libEGL.dll' not loaded
10:46:13.985: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libGLESv2.dll' not found, loading of module failed
10:46:13.986: [obs-browser]: Version 2.1.2
10:46:13.990: NVENC supported
10:46:14.013: VLC found, VLC video source enabled
10:46:14.017: No blackmagic support
10:46:14.022: ---------------------------------
10:46:14.022:   Loaded Modules:
10:46:14.022:     win-wasapi.dll
10:46:14.022:     win-mf.dll
10:46:14.022:     win-dshow.dll
10:46:14.022:     win-decklink.dll
10:46:14.022:     win-capture.dll
10:46:14.022:     vlc-video.dll
10:46:14.022:     text-freetype2.dll
10:46:14.022:     rtmp-services.dll
10:46:14.022:     obs-x264.dll
10:46:14.022:     obs-vst.dll
10:46:14.022:     obs-transitions.dll
10:46:14.022:     obs-text.dll
10:46:14.022:     obs-qsv11.dll
10:46:14.022:     obs-outputs.dll
10:46:14.022:     obs-filters.dll
10:46:14.022:     obs-ffmpeg.dll
10:46:14.022:     obs-browser.dll
10:46:14.022:     image-source.dll
10:46:14.022:     frontend-tools.dll
10:46:14.022:     enc-amf.dll
10:46:14.022:     coreaudio-encoder.dll
10:46:14.022: ---------------------------------
10:46:14.022: ==== Startup complete ===============================================
10:46:14.025: All scene data cleared
10:46:14.025: ------------------------------------------------
10:46:14.133: WASAPI: Device 'Speaker/Headphone (Realtek High Definition Audio)' initialized
10:46:14.134: [WASAPISource::WASAPISource] Device '{0.0.1.00000000}.{3e6563ae-f6cc-484a-8c82-9c647e178351}' not found.  Waiting for device
10:46:14.135: Switched to scene 'Screen recording'
10:46:14.135: ------------------------------------------------
10:46:14.135: Loaded scenes:
10:46:14.135: - scene 'Screen recording':
10:46:14.135:     - source: 'HS 60 S 2' (dshow_input)
10:46:14.135: ------------------------------------------------
10:46:14.202: CalculateFileHash: Failed to open file 'C:\OMITTED\AppData\Roaming\obs-studio\updates\whatsnew.json':
10:46:14.829: ---------------------------------
10:46:14.829: [DShow Device: 'HS 60 S 2'] settings updated:
10:46:14.829:     video device: Game Capture HD60 S (Video) (#01)
10:46:14.829:     video path: \\?\usb#vid_0fd9&pid_005e#0412a742f3#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{6f814be9-9af6-43cf-9249-c0340100021f}
10:46:14.829:     resolution: 720x480
10:46:14.829:     fps: 29.97 (interval: 333667)
10:46:14.829:     format: YV12
10:46:14.833:     using video device audio: no
10:46:14.833:     separate audio filter
10:46:14.833:     sample rate: 0
10:46:14.833:     channels: 0
10:46:14.833:     audio type: DirectSound
10:46:15.850: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds
10:46:17.426: ---------------------------------
10:46:17.426: [NVENC encoder: 'recording_h264'] settings:
10:46:17.426:     rate_control: CBR
10:46:17.426:     bitrate:      30000
10:46:17.426:     cqp:          0
10:46:17.426:     keyint:       250
10:46:17.426:     preset:       default
10:46:17.426:     profile:      main
10:46:17.426:     level:        auto
10:46:17.426:     width:        1920
10:46:17.426:     height:       1080
10:46:17.426:     2-pass:       true
10:46:17.426:     b-frames:     2
10:46:17.426:     GPU:          0
10:46:17.426:
10:46:17.762: ---------------------------------
10:46:17.762: [FFmpeg aac encoder: 'Track1'] bitrate: 160, channels: 2, channel_layout: 3
10:46:17.762:
10:46:17.768: ==== Recording Start ===============================================
10:46:17.768: [ffmpeg muxer: 'adv_file_output'] Writing file 'D:/OMITTED/2018-08-23 10-46-17.mp4'...
10:48:48.376: [ffmpeg muxer: 'adv_file_output'] Output of file 'D:/OMITTED/2018-08-23 10-46-17.mp4' stopped
10:48:48.376: Output 'adv_file_output': stopping
10:48:48.376: Output 'adv_file_output': Total frames output: 9021
10:48:48.376: Output 'adv_file_output': Total drawn frames: 9037
10:48:48.376: ==== Recording Stop ================================================
10:48:48.377: Video stopped, number of skipped frames due to encoding lag: 11/9033 (0.1%)
10:48:48.428: warning: 2 frames left in the queue on closing
10:49:04.354: adding 21 milliseconds of audio buffering, total audio buffering is now 42 milliseconds
10:49:57.495: Settings changed (outputs)
10:49:57.496: ------------------------------------------------
10:49:59.235: ---------------------------------
10:49:59.235: [NVENC encoder: 'recording_h264'] settings:
10:49:59.235:     rate_control: CBR
10:49:59.235:     bitrate:      10000
10:49:59.235:     cqp:          0
10:49:59.235:     keyint:       250
10:49:59.235:     preset:       default
10:49:59.235:     profile:      main
10:49:59.235:     level:        auto
10:49:59.235:     width:        1920
10:49:59.235:     height:       1080
10:49:59.235:     2-pass:       true
10:49:59.235:     b-frames:     2
10:49:59.235:     GPU:          0
10:49:59.235:
10:49:59.371: ---------------------------------
10:49:59.372: [FFmpeg aac encoder: 'Track1'] bitrate: 160, channels: 2, channel_layout: 3
10:49:59.372:
10:49:59.723: ==== Recording Start ===============================================
10:49:59.723: [ffmpeg muxer: 'adv_file_output'] Writing file 'D:/OMITTED/2018-08-23 10-49-59.mp4'...
10:52:50.043: [ffmpeg muxer: 'adv_file_output'] Output of file 'D:/OMITTED/2018-08-23 10-49-59.mp4' stopped
10:52:50.043: Output 'adv_file_output': stopping
10:52:50.043: Output 'adv_file_output': Total frames output: 10204
10:52:50.043: Output 'adv_file_output': Total drawn frames: 10219
10:52:50.043: ==== Recording Stop ================================================
10:52:50.098: warning: 2 frames left in the queue on closing
10:55:16.905: ---------------------------------
10:55:16.905: video settings reset:
10:55:16.905:     base resolution:   1920x1080
10:55:16.905:     output resolution: 1280x720
10:55:16.905:     downscale filter:  Bicubic
10:55:16.905:     fps:               60/1
10:55:16.905:     format:            NV12
10:55:16.905:     YUV mode:          709/Full
10:55:16.914: Settings changed (video)
10:55:16.914: ------------------------------------------------
10:55:21.036: ---------------------------------
10:55:21.037: [NVENC encoder: 'recording_h264'] settings:
10:55:21.037:     rate_control: CBR
10:55:21.037:     bitrate:      10000
10:55:21.037:     cqp:          0
10:55:21.037:     keyint:       250
10:55:21.037:     preset:       default
10:55:21.037:     profile:      main
10:55:21.037:     level:        auto
10:55:21.037:     width:        1280
10:55:21.037:     height:       720
10:55:21.037:     2-pass:       true
10:55:21.037:     b-frames:     2
10:55:21.037:     GPU:          0
10:55:21.037:
10:55:21.160: ---------------------------------
10:55:21.161: [FFmpeg aac encoder: 'Track1'] bitrate: 160, channels: 2, channel_layout: 3
10:55:21.161:
10:55:21.167: ==== Recording Start ===============================================
10:55:21.167: [ffmpeg muxer: 'adv_file_output'] Writing file 'D:/OMITTED/2018-08-23 10-55-21.mp4'...
10:56:04.543: adding 21 milliseconds of audio buffering, total audio buffering is now 64 milliseconds
10:57:52.320: [ffmpeg muxer: 'adv_file_output'] Output of file 'D:/OMITTED/2018-08-23 10-55-21.mp4' stopped
10:57:52.320: Output 'adv_file_output': stopping
10:57:52.320: Output 'adv_file_output': Total frames output: 9054
10:57:52.320: Output 'adv_file_output': Total drawn frames: 9069
10:57:52.320: ==== Recording Stop ================================================
10:57:52.320: Video stopped, number of skipped frames due to encoding lag: 6/9065 (0.1%)
10:57:52.361: warning: 2 frames left in the queue on closing
10:59:16.109: ---------------------------------
10:59:16.109: video settings reset:
10:59:16.109:     base resolution:   1920x1080
10:59:16.109:     output resolution: 960x540
10:59:16.109:     downscale filter:  Bicubic
10:59:16.109:     fps:               60/1
10:59:16.109:     format:            NV12
10:59:16.109:     YUV mode:          709/Full
10:59:16.120: Settings changed (video)
10:59:16.120: ------------------------------------------------
10:59:17.639: ---------------------------------
10:59:17.639: [NVENC encoder: 'recording_h264'] settings:
10:59:17.639:     rate_control: CBR
10:59:17.639:     bitrate:      10000
10:59:17.639:     cqp:          0
10:59:17.639:     keyint:       250
10:59:17.639:     preset:       default
10:59:17.639:     profile:      main
10:59:17.639:     level:        auto
10:59:17.639:     width:        960
10:59:17.639:     height:       540
10:59:17.639:     2-pass:       true
10:59:17.639:     b-frames:     2
10:59:17.639:     GPU:          0
10:59:17.639:
10:59:17.764: ---------------------------------
10:59:17.764: [FFmpeg aac encoder: 'Track1'] bitrate: 160, channels: 2, channel_layout: 3
10:59:17.764:
10:59:17.770: ==== Recording Start ===============================================
10:59:17.770: [ffmpeg muxer: 'adv_file_output'] Writing file 'D:/OMITTED/2018-08-23 10-59-17.mp4'...
11:02:31.739: [ffmpeg muxer: 'adv_file_output'] Output of file 'D:/OMITTED/2018-08-23 10-59-17.mp4' stopped
11:02:31.739: Output 'adv_file_output': stopping
11:02:31.739: Output 'adv_file_output': Total frames output: 11623
11:02:31.739: Output 'adv_file_output': Total drawn frames: 11638
11:02:31.739: ==== Recording Stop ================================================
11:02:31.781: warning: 2 frames left in the queue on closing
 

koala

Active Member
For recording, don't use CBR. With nvenc, use CQP mode with a CQP value of 18-23. You can as well just use simple output mode, choose nvenc as encoder and "indistinguishable quality". It's much easier to configure.
As YUV format, you chose "full" - use partial instead. It may help to get rid of the lags, because it will lower the encoder stress.

I don't understand why nvenc is overloaded with 1920x1080 resolution. It should be able to do this, even on a GTX 1050. You have no game that is running concurrently on the GPU. Or do you?
In case you have Geforce experience installed and activated Shadowplay, deactivate Shadowplay. It is an "always on" recording in the background and will stress the encoder without reason.

In case you are not able to get rid of the dropped frames with nvenc, try to switch the encoder to Quicksync. It's a hardware encoder as well and runs on the integrated Intel GPU. Choose ICQ mode with values of 18-23, or as I suggested above, use simple output mode and simply switch from Nvenc to Quicksync (QSV).

And don't output as *.mp4. A partial *.mp4 file is unrecoverable, if OBS or your Computer crashes in the middle of the recording. Use mkv as file format.
 

locke_d

New Member
@koala Thank you for the response! I don't have a lot of experience (obviously!) so the help is really appreciated.

For recording, don't use CBR. With nvenc, use CQP mode with a CQP value of 18-23. You can as well just use simple output mode, choose nvenc as encoder and "indistinguishable quality". It's much easier to configure.
As YUV format, you chose "full" - use partial instead. It may help to get rid of the lags, because it will lower the encoder stress.

I tried setting the rate control to CQP with the value 23, as well as using the simple output mode (both with the 'partial' setting I changed). I'd love say they worked, but on both configurations, I'm getting the exact same lag as before. It's strange -- it seems that no matter what settings I use or how high or low I set them, I get the exact same kind of lag. It goes fine for a bit, dips for a few seconds, and then it's fine again.

I don't understand why nvenc is overloaded with 1920x1080 resolution. It should be able to do this, even on a GTX 1050. You have no game that is running concurrently on the GPU. Or do you?
In case you have Geforce experience installed and activated Shadowplay, deactivate Shadowplay. It is an "always on" recording in the background and will stress the encoder without reason.

Yeah I'm pretty frustrated with it. To be clear, I've not once seen the 'Encoder overloaded!' message while recording, either. Everything seems fine until I play back the file in VLC.

I don't have any games running, and I went the extra length to close everything else (e.g. browsers streaming video) to see if there was any difference. Predictably, I got nothing.

Thanks for bringing my attention to the GeForce setting -- I have that turned off as well, though it doesn't seem to make a difference either. Hopefully it will help in other ways.

In case you are not able to get rid of the dropped frames with nvenc, try to switch the encoder to Quicksync. It's a hardware encoder as well and runs on the integrated Intel GPU. Choose ICQ mode with values of 18-23, or as I suggested above, use simple output mode and simply switch from Nvenc to Quicksync (QSV).

I tried this as well... and still nothing. Remarkably, the exact same lag as usual: good the majority of the time, then slumps for a few seconds. It makes me think the hardware isn't what's causing it, but I can't think of anything else that would be doing this.

And don't output as *.mp4. A partial *.mp4 file is unrecoverable, if OBS or your Computer crashes in the middle of the recording. Use mkv as file format.

Gotcha. I'm curious though: what is the advantage of .mkv over the other formats? I would have thought .flv would be the first in line if .mp4 was not viable.

Thanks again for the help. I'll keep trying to solve this. It is nice to have a second opinion that the processors should be able to take it, though that only complicates finding the real issue huh.
 
Last edited:

koala

Active Member
flv is fine as well, but it supports only one audio track. mkv (and mp4) support multiple audio tracks. If you don't need to record separate audio channels, you can use flv as well.
mkv is superior to mp4, because if the recording is aborted due to a crash, the file is still usable. With mp4, the whole recording isn't recoverable, because vital information is only written on closing the recording gracefully. With a crash this vital information cannot be written. Flv is as robust against crashes as mkv.
 

locke_d

New Member
Quick update on this issue:

I am now 100% certain the issue is with my capturing equipment, and not my laptop. My laptop is able to play and record Overwatch simultaneously and maintain smooth 1080p60fps on both, the entire time. (And with memory to spare: the computer runs perfectly while doing this and doesn't overheat.) However, the gameplay from the capture card stutters, especially through the Wii adapter. The curious thing is that everything displays on my monitor perfectly, with no lag at all. It's getting caught somewhere in the middle.

I'm unsure what I'll do to address this, though it isn't the expertise of this forum so feel free to ignore this. Just posting this in case anyone else finds this experiencing the same problem. Check your equipment out. Middle-tier laptops like mine can record 1080p console gameplay no problem, so if yours doesn't, there's another issue.
 
Top