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?
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