Question / Help Optimization suggestions

saturdayxiii

New Member
I always seem to have some kind of problem with screen capturing. I know that my pc isn't the best, but I think it should be more than good enough... I hope. My pet peeve right now is choppy video. My games play smoothly, OBS doesn't register any dropped frames but my videos are, at the best of times, subtly choppy, and more often than not, downright stuttery. Usually I feel like "good enough", but maybe I've got something set blatantly wrong? Or maybe a piece of hardware just gots to go? I would love some advice. I was pushed to post for help because I can't get Tomb Raider Anniversary to record without stuttering. Maybe this game is worse than others? I'd also love to know if there's a blacklist of resource hogging games somewhere.

I am trying to record to file, but the problem is the same with streaming. My game is installed on an HDD while OBS is in portable mode on my SSD C: drive. Here are two sessions: one at 1080 that is quite stuttery, and the other downscaled to 720 which is subtly choppy. Honestly, the 720p was acceptable, but if someone knows why I can't do 1080, I'd love to hear it. I like to think that I have a pretty clean system otherwise. Not a lot of junk installed and I run gamebooster3.5 before playing/recording.
code in following post vvvvvv
 

saturdayxiii

New Member
Code:
13:24:58: No Intel graphics adapter visible in QSVHelper.exe, Optimus problem?
13:24:58: CUDA loaded successfully
13:24:58: 1 CUDA capable devices found
13:24:58: [ GPU #0 - < GeForce GT 440 > has Compute SM 2.1, NVENC Not Available ]
13:24:58: No NVENC capable devices found
13:25:36: Open Broadcaster Software v0.625b - 64bit ( ^ω^)
13:25:36: -------------------------------
13:25:36: CPU Name: AMD FX(tm)-6200 Six-Core Processor
13:25:36: CPU Speed: 4118MHz
13:25:36: Physical Memory:  16285MB Total, 14679MB Free
13:25:36: stepping id: 2, model 1, family 21, type 0, extmodel 0, extfamily 3, HTT 1, logical cores 6, total cores 3
13:25:36: monitor 1: pos={0, 0}, size={1680, 1050}
13:25:36: Windows Version: 6.2 Build 9200
13:25:36: Aero is Enabled
13:25:36: -------------------------------
13:25:36: OBS Modules:
13:25:36: Base Address     Module
13:25:36: 00000000302F0000 OBS.exe
13:25:36: 00000000B4D80000 OBSApi.dll
13:25:36: 00000000B9D70000 DShowPlugin.dll
13:25:36: 00000000BA120000 GraphicsCapture.dll
13:25:36: 00000000B86E0000 NoiseGate.dll
13:25:36: 00000000B7550000 PSVPlugin.dll
13:25:36: ------------------------------------------
13:25:36: Adapter 1
13:25:36:   Video Adapter: NVIDIA GeForce GT 440
13:25:36:   Video Adapter Dedicated Video Memory: 1018621952
13:25:36:   Video Adapter Shared System Memory: 3221106688
13:25:36:   Video Adapter Output 1: pos={0, 0}, size={1680, 1050}, attached=true
16:45:38: =====Stream Start: 2014-08-01, 16:45:38===============================================
16:45:38:   Multithreaded optimizations: On
16:45:38:   Base resolution: 1920x1080
16:45:38:   Output resolution: 1920x1080
16:45:38: ------------------------------------------
16:45:38: Loading up D3D10 on NVIDIA GeForce GT 440 (Adapter 1)...
16:45:38: ------------------------------------------
16:45:38: Audio Format: 44100 Hz
16:45:38: ------------------------------------------
16:45:38: Audio Channels: 2 Ch
16:45:38: Playback device Default
16:45:38: ------------------------------------------
16:45:38: Using desktop audio input: Multichannel (M-Audio Delta Audiophile)
16:45:38: Global Audio time adjust: 0
16:45:38: ------------------------------------------
16:45:38: Using auxilary audio input: Microphone (2- C-1U                     )
16:45:38: Mic time offset: 0
16:45:38: ------------------------------------------
16:45:38: Audio Encoding: AAC
16:45:38:     bitrate: 320
16:45:38: ------------------------------------------
16:45:38:     device: Logitech HD Webcam C615,
16:45:38:     device id \\?\usb#vid_046d&pid_082c&mi_02#8&2801730b&0&0002#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{bbefb6c7-2fc4-4139-bb8b-a58bba724083},
16:45:38:     chosen type: MJPG, usingFourCC: false, res: 320x240 - 320x240, frameIntervals: 333333-2000000
16:45:38:     use buffering: false - 0, fourCC: 'MJPG'
16:45:38:     audio device: Disable,
16:45:38:     audio device id Disabled,
16:45:38:     audio time offset 0,
16:45:38:
16:45:38: Using directshow input
16:45:39: Using Window Capture
16:45:39: Using graphics capture
16:45:39: Scene buffering time set to 700
16:45:39: Using custom x264 settings: "crf=20 bframes=2 keyint=15"
16:45:39: x264: VBV maxrate specified, but no bufsize, ignored
16:45:39: ------------------------------------------
16:45:39: Video Encoding: x264
16:45:39:     fps: 25
16:45:39:     width: 1920, height: 1080
16:45:39:     preset: veryfast
16:45:39:     profile: main
16:45:39:     keyint: 15
16:45:39:     CBR: no
16:45:39:     CFR: yes
16:45:39:     max bitrate: 1000
16:45:39:     buffer size: 0
16:45:39:     quality: 12
16:45:39: ------------------------------------------
16:45:42: Trying to hook process: tra.exe
16:45:45: SharedTexCapture hooked
16:49:54: Exit signal received, terminating capture
16:49:59: Total frames encoded: 6498, total frames duplicated: 8 (0.12%)
16:49:59: Total frames rendered: 6516, number of late frames: 3 (0.05%) (it's okay for some frames to be late)
16:50:00:
16:50:00: Profiler time results:
16:50:00:
16:50:00: ==============================================================
16:50:00: video thread frame - [100%] [avg time: 1.178 ms] [children: 48.2%] [unaccounted: 51.8%]
16:50:00: | scene->Preprocess - [38%] [avg time: 0.448 ms]
16:50:00: | GPU download and conversion - [10.2%] [avg time: 0.12 ms] [children: 8.15%] [unaccounted: 2.04%]
16:50:00: | | flush - [5.77%] [avg time: 0.068 ms]
16:50:00: | | CopyResource - [2.21%] [avg time: 0.026 ms]
16:50:00: | | conversion to 4:2:0 - [0.17%] [avg time: 0.002 ms]
16:50:00: Convert444Thread - [100%] [avg time: 1.787 ms] [children: 99.8%] [unaccounted: 0.224%]
16:50:00: | Convert444toNV12 - [99.8%] [avg time: 1.783 ms]
16:50:00: encoder thread frame - [100%] [avg time: 2.336 ms] [children: 2.01%] [unaccounted: 98%]
16:50:00: | sending stuff out - [2.01%] [avg time: 0.047 ms]
16:50:00: ==============================================================
16:50:00:
16:50:00:
16:50:00: Profiler CPU results:
16:50:00:
16:50:00: ==============================================================
16:50:00: video thread frame - [cpu time: avg 0.541 ms, total 3525.62 ms] [avg calls per frame: 1]
16:50:00: | scene->Preprocess - [cpu time: avg 0.007 ms, total 46.801 ms] [avg calls per frame: 1]
16:50:00: | GPU download and conversion - [cpu time: avg 0.014 ms, total 93.6 ms] [avg calls per frame: 1]
16:50:00: | | flush - [cpu time: avg 0.009 ms, total 62.4 ms] [avg calls per frame: 1]
16:50:00: | | CopyResource - [cpu time: avg 0.004 ms, total 31.2 ms] [avg calls per frame: 1]
16:50:00: | | conversion to 4:2:0 - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
16:50:00: Convert444Thread - [cpu time: avg 1.681 ms, total 10920.1 ms] [avg calls per frame: 1]
16:50:00: | Convert444toNV12 - [cpu time: avg 1.681 ms, total 10920.1 ms] [avg calls per frame: 1]
16:50:00: encoder thread frame - [cpu time: avg 1.879 ms, total 12214.9 ms] [avg calls per frame: 1]
16:50:00: | sending stuff out - [cpu time: avg 0.026 ms, total 171.601 ms] [avg calls per frame: 1]
16:50:00: ==============================================================
16:50:00:
16:50:00: =====Stream End: 2014-08-01, 16:50:00=================================================
 

saturdayxiii

New Member
err... code part 2... working around character limits here.
Code:
16:51:16: =====Stream Start: 2014-08-01, 16:51:16===============================================
16:51:16:   Multithreaded optimizations: On
16:51:16:   Base resolution: 1920x1080
16:51:16:   Output resolution: 1280x720
16:51:16: ------------------------------------------
16:51:16: Loading up D3D10 on NVIDIA GeForce GT 440 (Adapter 1)...
16:51:16: ------------------------------------------
16:51:16: Audio Format: 44100 Hz
16:51:16: ------------------------------------------
16:51:16: Audio Channels: 2 Ch
16:51:16: Playback device Default
16:51:16: ------------------------------------------
16:51:16: Using desktop audio input: Multichannel (M-Audio Delta Audiophile)
16:51:16: Global Audio time adjust: 0
16:51:16: ------------------------------------------
16:51:16: Using auxilary audio input: Microphone (2- C-1U                     )
16:51:16: Mic time offset: 0
16:51:16: ------------------------------------------
16:51:16: Audio Encoding: AAC
16:51:16:     bitrate: 320
16:51:16: ------------------------------------------
16:51:16:     device: Logitech HD Webcam C615,
16:51:16:     device id \\?\usb#vid_046d&pid_082c&mi_02#8&2801730b&0&0002#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{bbefb6c7-2fc4-4139-bb8b-a58bba724083},
16:51:16:     chosen type: MJPG, usingFourCC: false, res: 320x240 - 320x240, frameIntervals: 333333-2000000
16:51:16:     use buffering: false - 0, fourCC: 'MJPG'
16:51:16:     audio device: Disable,
16:51:16:     audio device id Disabled,
16:51:16:     audio time offset 0,
16:51:16:
16:51:16: Using directshow input
16:51:17: Using Window Capture
16:51:17: Using graphics capture
16:51:17: Scene buffering time set to 700
16:51:17: Using custom x264 settings: "crf=20 bframes=2 keyint=15"
16:51:17: x264: VBV maxrate specified, but no bufsize, ignored
16:51:17: ------------------------------------------
16:51:17: Video Encoding: x264
16:51:17:     fps: 30
16:51:17:     width: 1280, height: 720
16:51:17:     preset: veryfast
16:51:17:     profile: main
16:51:17:     keyint: 15
16:51:17:     CBR: no
16:51:17:     CFR: yes
16:51:17:     max bitrate: 1000
16:51:17:     buffer size: 0
16:51:17:     quality: 12
16:51:17: ------------------------------------------
16:51:20: Trying to hook process: tra.exe
16:51:23: SharedTexCapture hooked
16:52:25: Exit signal received, terminating capture
16:52:30: Total frames encoded: 2182, total frames duplicated: 11 (0.50%)
16:52:30: Total frames rendered: 2199, number of late frames: 3 (0.14%) (it's okay for some frames to be late)
16:52:31:
16:52:31: Profiler time results:
16:52:31:
16:52:31: ==============================================================
16:52:31: video thread frame - [100%] [avg time: 1.295 ms] [children: 49.3%] [unaccounted: 50.7%]
16:52:31: | scene->Preprocess - [41.6%] [avg time: 0.539 ms]
16:52:31: | GPU download and conversion - [7.72%] [avg time: 0.1 ms] [children: 5.71%] [unaccounted: 2.01%]
16:52:31: | | flush - [4.4%] [avg time: 0.057 ms]
16:52:31: | | CopyResource - [1.16%] [avg time: 0.015 ms]
16:52:31: | | conversion to 4:2:0 - [0.154%] [avg time: 0.002 ms]
16:52:31: Convert444Thread - [100%] [avg time: 0.832 ms] [children: 99.5%] [unaccounted: 0.481%]
16:52:31: | Convert444toNV12 - [99.5%] [avg time: 0.828 ms]
16:52:31: encoder thread frame - [100%] [avg time: 1.089 ms] [children: 2.2%] [unaccounted: 97.8%]
16:52:31: | sending stuff out - [2.2%] [avg time: 0.024 ms]
16:52:31: ==============================================================
16:52:31:
16:52:31:
16:52:31: Profiler CPU results:
16:52:31:
16:52:31: ==============================================================
16:52:31: video thread frame - [cpu time: avg 0.595 ms, total 1310.41 ms] [avg calls per frame: 1]
16:52:31: | scene->Preprocess - [cpu time: avg 0.014 ms, total 31.2 ms] [avg calls per frame: 1]
16:52:31: | GPU download and conversion - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
16:52:31: | | flush - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
16:52:31: | | CopyResource - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
16:52:31: | | conversion to 4:2:0 - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
16:52:31: Convert444Thread - [cpu time: avg 0.667 ms, total 1450.81 ms] [avg calls per frame: 1]
16:52:31: | Convert444toNV12 - [cpu time: avg 0.667 ms, total 1450.81 ms] [avg calls per frame: 1]
16:52:31: encoder thread frame - [cpu time: avg 0.465 ms, total 1014.01 ms] [avg calls per frame: 1]
16:52:31: | sending stuff out - [cpu time: avg 0.042 ms, total 93.601 ms] [avg calls per frame: 1]
16:52:31: ==============================================================
16:52:31:
16:52:31: =====Stream End: 2014-08-01, 16:52:31=================================================
 

Tivan

Member
You're using 1 i-frame every 15 frames (keyint=15) i-frames take a lot of resources (bandwidth and processing power) and other frames are derived from them.

Having one every 15 frames is way too many.

If you want to stream to twitch you should not set a keyint value in the custom settings but instead use the 'keyframe interval' setting in advanced and set it to 2 (meaning 1 per 2 seconds), that's what twitch recommends for compatibility with their service (less delay between broadcasting and viewers seeing).

Also it's recommended to avoid screen capture. Try using game capture and select the bottom most source, to get a fake screen capture of your primary monitor, if you absolutely need to capture your whole screen.

Also, for twitch it's recommended to use CBR, and then there's no point to set crf=20.

Also not sure about bframes=2, that wouldn't really improve anything, maybe makes the quality worse when more b-frames would be beneficial.

It's nice that you show interest in customizing your encoder settings, but you should start with comparing what different settings the different x264 presets use, and fine tune from there, if you want to target quality between for example veryfast and faster. Or just stick to veryfast, and no custom settings, it's pretty good.

edit, as for local recordings, you're right, you want crf=something, variable bitrate, buffer of zero. But not for streaming. And the keyint/bframes settings don't make much sense to me either way.

If you aren't streaming with the setting, you'll fare best with the default keyint, and no keyframe interval set in the advanced 'keyframe interval' setting (1 per 2 seconds is still a lot, it's just something to set for twitch/html5 compatibility)
 
Last edited:

saturdayxiii

New Member
Thanks for the advice, but I'm not interested in streaming. I have done streaming in the past with the settings you described and still have the same stuttering output problem. I've recently included the keyint and bframe value based on youtube's suggestions as that's where I upload after recording. I have uploaded files without those commands before with no noticable problems, so I don't mind dropping them if that's a safer option. Thanks for your input.
 

Tivan

Member
Pretty sure Youtube recommends 1 keyframe per 2 seconds as well, not 2 per 1 second. c; But yeah I think fixing that setting is going help a bit at least!

You could also try superfast instead of veryfast encoding preset, but the filesize is going to go up a good bit.
 
Top