Question / Help No in-game lag, no dropped frames, but Twitch preview + viewers' stream VERY choppy

Tungsten

New Member
I've tried streaming fast shooters like Warframe, Doom 2016, and Dusk a few times, and every time I run into the same problem: the stream gets ridiculously choppy whenever there are large amounts of camera movement. The game itself runs flawlessly, the preview in OBS looks equally smooth, and the "dropped frames" counter at the bottom of the window shows 0 frames dropped. Yet when I look at the stream preview on my Twitch dashboard, the game is a slideshow. Viewers have confirmed they experience the same choppiness. I've tried bitrates of 4000 and 6000, as well as using a game capture instead of a monitor capture. Nothing has helped, and none of my searching has lead to anyone else having the same problem. The log file is too big to fit in one message, so I'll include it in the replies.
 

Tungsten

New Member
First half of log:
Code:
18:30:40.995: CPU Name: Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
18:30:40.995: CPU Speed: 3408MHz
18:30:40.995: Physical Cores: 4, Logical Cores: 4
18:30:40.995: Physical Memory: 8155MB Total, 5960MB Free
18:30:40.995: Windows Version: 10.0 Build 17134 (revision: 590; 64-bit)
18:30:40.995: Running as administrator: false
18:30:40.996: Aero is Enabled (Aero is always on for windows 8 and above)
18:30:40.996: Windows 10 Gaming Features:
18:30:40.996:     Game DVR: On
18:30:40.998: Sec. Software Status:
18:30:41.000: Portable mode: false
18:30:41.081: OBS 21.1.0 (64bit, windows)
18:30:41.081: ---------------------------------
18:30:41.098: ---------------------------------
18:30:41.098: audio settings reset:
18:30:41.098:     samples per sec: 44100
18:30:41.098:     speakers:        2
18:30:41.098: ---------------------------------
18:30:41.098: Initializing D3D11...
18:30:41.098: Available Video Adapters:
18:30:41.099:     Adapter 1: NVIDIA GeForce GTX 1050 Ti
18:30:41.099:       Dedicated VRAM: 4213178368
18:30:41.099:       Shared VRAM:    4275910656
18:30:41.099:       output 1: pos={0, 0}, size={1920, 1080}, attached=true
18:30:41.100:       output 2: pos={1920, 3}, size={1920, 1080}, attached=true
18:30:41.101: Loading up D3D11 on adapter NVIDIA GeForce GTX 1050 Ti (0)
18:30:41.150: D3D11 loaded successfully, feature level used: 45056
18:30:41.798: ---------------------------------
18:30:41.798: video settings reset:
18:30:41.798:     base resolution:   1920x1080
18:30:41.798:     output resolution: 1280x720
18:30:41.798:     downscale filter:  Bicubic
18:30:41.798:     fps:               60/1
18:30:41.798:     format:            NV12
18:30:41.798:     YUV mode:          601/Partial
18:30:41.800: Audio monitoring device:
18:30:41.800:     name: Default
18:30:41.800:     id: default
18:30:41.802: ---------------------------------
18:30:41.810: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/chrome_elf.dll' not found, loading of module failed
18:30:41.817: [CoreAudio encoder]: CoreAudio AAC encoder not installed on the system or couldn't be loaded
18:30:41.854: [AMF] AMF Test failed due to one or more errors.
18:30:41.854: Failed to initialize module 'enc-amf.dll'
18:30:41.912: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libcef.dll' not found, loading of module failed
18:30:41.913: LoadLibrary failed for '../../obs-plugins/64bit/libEGL.dll': The specified procedure could not be found.
18:30:41.913:  (127)
18:30:41.913: Module '../../obs-plugins/64bit/libEGL.dll' not loaded
18:30:41.920: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libGLESv2.dll' not found, loading of module failed
18:30:41.933: [browser_source: 'Version: 1.31.0']
18:30:41.962: NVENC supported
18:30:42.063: Couldn't find VLC installation, VLC video source disabled
18:30:42.079: No blackmagic support
18:30:42.110: ---------------------------------
18:30:42.110:   Loaded Modules:
18:30:42.110:     win-wasapi.dll
18:30:42.110:     win-mf.dll
18:30:42.110:     win-dshow.dll
18:30:42.110:     win-decklink.dll
18:30:42.110:     win-capture.dll
18:30:42.110:     vlc-video.dll
18:30:42.110:     text-freetype2.dll
18:30:42.110:     rtmp-services.dll
18:30:42.110:     obs-x264.dll
18:30:42.110:     obs-vst.dll
18:30:42.110:     obs-transitions.dll
18:30:42.110:     obs-text.dll
18:30:42.110:     obs-qsv11.dll
18:30:42.110:     obs-outputs.dll
18:30:42.110:     obs-filters.dll
18:30:42.110:     obs-ffmpeg.dll
18:30:42.110:     obs-browser.dll
18:30:42.110:     image-source.dll
18:30:42.110:     frontend-tools.dll
18:30:42.110:     enc-amf.dll
18:30:42.110:     coreaudio-encoder.dll
18:30:42.110: ---------------------------------
18:30:42.110: ==== Startup complete ===============================================
18:30:42.111: obs-data.c: [obs_data_create_from_json] Failed reading json string (-1): wrong arguments
18:30:42.132: All scene data cleared
18:30:42.132: ------------------------------------------------
18:30:42.320: WASAPI: Device 'Speakers (Realtek High Definition Audio)' initialized
18:30:42.338: WASAPI: Device 'Microphone (Blue Snowball)' initialized
18:30:42.377: adding 46 milliseconds of audio buffering, total audio buffering is now 46 milliseconds
18:30:42.425: [WASAPISource::WASAPISource] Device '{0.0.1.00000000}.{d5b7add7-4d2c-4774-b20e-e3d2a6664b85}' not found.  Waiting for device
18:30:42.451: [window-capture: 'RuneLite'] update settings:
18:30:42.451:     executable: DolphinLXPii.exe
18:30:42.610: [window-capture: 'LiveSplit'] update settings:
18:30:42.610:     executable: LiveSplit.exe
18:30:42.704: Switched to scene 'Left Monitor'
18:30:42.705: ------------------------------------------------
18:30:42.705: Loaded scenes:
18:30:42.705: - scene 'Break Screen':
18:30:42.705:     - source: 'Break text' (text_gdiplus)
18:30:42.705: - scene 'Start Screen':
18:30:42.705:     - source: 'Stream Starting Soon' (text_gdiplus)
18:30:42.705: - scene 'End Screen':
18:30:42.705:     - source: 'Stream Over' (text_gdiplus)
18:30:42.705: - scene 'Window Capture':
18:30:42.705:     - source: 'RuneLite' (window_capture)
18:30:42.705:     - source: 'Alerts' (browser_source)
18:30:42.705:     - source: 'Chatbox' (browser_source)
18:30:42.705: - scene 'Capture Card':
18:30:42.705:     - source: 'Layout' (image_source)
18:30:42.705:     - source: 'Elgato' (dshow_input)
18:30:42.705:     - source: 'Mic' (wasapi_input_capture)
18:30:42.705:         - monitoring: monitor and output
18:30:42.705:         - filter: 'Gain' (gain_filter)
18:30:42.705:     - source: 'Alerts' (browser_source)
18:30:42.705:     - source: 'Chatbox' (browser_source)
18:30:42.705:     - source: 'Latest Follower' (text_gdiplus)
18:30:42.705:     - source: 'Latest Follower Label' (text_gdiplus)
18:30:42.705:     - source: 'Latest Subscriber' (text_gdiplus)
18:30:42.705:     - source: 'Latest Subscriber Label' (text_gdiplus)
18:30:42.705:     - source: 'Sub Goal' (browser_source)
18:30:42.705:     - source: 'Webcam' (dshow_input)
18:30:42.705:     - source: 'LiveSplit' (window_capture)
18:30:42.705: - scene 'Left Monitor':
18:30:42.705:     - source: 'Layout' (image_source)
18:30:42.705:     - source: 'Left Monitor Capture' (monitor_capture)
18:30:42.705:     - source: 'Mic' (wasapi_input_capture)
18:30:42.705:         - monitoring: monitor and output
18:30:42.705:         - filter: 'Gain' (gain_filter)
18:30:42.705:     - source: 'Alerts' (browser_source)
18:30:42.705:     - source: 'Chatbox' (browser_source)
18:30:42.705:     - source: 'Latest Follower' (text_gdiplus)
18:30:42.705:     - source: 'Latest Follower Label' (text_gdiplus)
18:30:42.705:     - source: 'Latest Subscriber' (text_gdiplus)
18:30:42.705:     - source: 'Latest Subscriber Label' (text_gdiplus)
18:30:42.705:     - source: 'Sub Goal' (browser_source)
18:30:42.705:     - source: 'Webcam' (dshow_input)
18:30:42.705:     - source: 'LiveSplit' (window_capture)
18:30:42.705: - scene 'Right Monitor':
18:30:42.705:     - source: 'Layout' (image_source)
18:30:42.705:     - source: 'Left Monitor Capture' (monitor_capture)
18:30:42.705:     - source: 'Mic' (wasapi_input_capture)
18:30:42.705:         - monitoring: monitor and output
18:30:42.705:         - filter: 'Gain' (gain_filter)
18:30:42.705:     - source: 'Alerts' (browser_source)
18:30:42.705:     - source: 'Chatbox' (browser_source)
18:30:42.705:     - source: 'Latest Follower' (text_gdiplus)
18:30:42.705:     - source: 'Latest Follower Label' (text_gdiplus)
18:30:42.705:     - source: 'Latest Subscriber' (text_gdiplus)
18:30:42.705:     - source: 'Latest Subscriber Label' (text_gdiplus)
18:30:42.705:     - source: 'Sub Goal' (browser_source)
18:30:42.705:     - source: 'Webcam' (dshow_input)
18:30:42.705:     - source: 'LiveSplit' (window_capture)
18:30:42.705: ------------------------------------------------
18:30:42.989: ---------------------------------
18:30:42.989: [DShow Device: 'Webcam'] settings updated:
18:30:42.989:     video device: HD Pro Webcam C920
18:30:42.989:     video path: \\?\usb#vid_046d&pid_082d&mi_00#6&15d65df9&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global
18:30:42.989:     resolution: 640x480
18:30:42.989:     fps: 30.00 (interval: 333333)
18:30:42.989:     format: YUY2
6:30:45 PM.463: ---------------------------------
6:30:45 PM.463: [DShow Device: 'Elgato'] settings updated:
6:30:45 PM.463:     video device: Elgato Game Capture HD
6:30:45 PM.463:     video path: __elgato
6:30:45 PM.463:     resolution: 1280x720
6:30:45 PM.463:     fps: 60.00 (interval: 166666)
6:30:45 PM.463:     format: UYVY
6:30:45 PM.463:     using video device audio: yes
6:30:45 PM.463:     sample rate: 48000
6:30:45 PM.463:     channels: 2
6:30:45 PM.463:     audio type: Capture
6:33:09 PM.010: ---------------------------------
6:33:09 PM.010: [x264 encoder: 'streaming_h264'] preset: faster
6:33:09 PM.010: [x264 encoder: 'streaming_h264'] settings:
6:33:09 PM.010:     rate_control: CBR
6:33:09 PM.010:     bitrate:      4000
6:33:09 PM.010:     buffer size:  4000
6:33:09 PM.010:     crf:          0
6:33:09 PM.010:     fps_num:      60
6:33:09 PM.010:     fps_den:      1
6:33:09 PM.010:     width:        1280
6:33:09 PM.010:     height:       720
6:33:09 PM.010:     keyint:       120
6:33:09 PM.010:
6:33:09 PM.010: [x264 encoder: 'streaming_h264'] custom settings: scenecut=0
6:33:09 PM.018: ---------------------------------
6:33:09 PM.019: [FFmpeg aac encoder: 'Track1'] bitrate: 160, channels: 2, channel_layout: 3
6:33:09 PM.019:
6:33:09 PM.252: [rtmp stream: 'adv_stream'] Connecting to RTMP URL rtmp://live-ord.twitch.tv/app...
6:33:09 PM.275: [rtmp stream: 'adv_stream'] Interface: Intel(R) Ethernet Connection (2) I219-V (ethernet, 1000 mbps)
6:33:10 PM.004: [rtmp stream: 'adv_stream'] Connection to rtmp://live-ord.twitch.tv/app successful
 

Tungsten

New Member
Second half of log:
Code:
6:33:10 PM.008: ==== Streaming Start ===============================================
6:53:51 PM.788: [rtmp stream: 'adv_stream'] User stopped the stream
6:53:51 PM.789: Output 'adv_stream': stopping
6:53:51 PM.789: Output 'adv_stream': Total frames output: 73780
6:53:51 PM.789: Output 'adv_stream': Total drawn frames: 74518 (74566 attempted)
6:53:51 PM.789: Output 'adv_stream': Number of lagged frames due to rendering lag/stalls: 48 (0.1%)
6:53:51 PM.789: Video stopped, number of skipped frames due to encoding lag: 40621/74507 (54.5%)
6:53:51 PM.792: ==== Streaming Stop ================================================
6:53:51 PM.824: warning: 2 frames left in the queue on closing
6:53:52 PM.956: obs-data.c: [obs_data_create_from_json] Failed reading json string (-1): wrong arguments
6:53:53 PM.018: Settings changed (outputs)
6:53:53 PM.018: ------------------------------------------------
6:53:58 PM.688: ---------------------------------
6:53:58 PM.688: [x264 encoder: 'streaming_h264'] preset: faster
6:53:58 PM.688: [x264 encoder: 'streaming_h264'] settings:
6:53:58 PM.688:     rate_control: CBR
6:53:58 PM.688:     bitrate:      6000
6:53:58 PM.688:     buffer size:  6000
6:53:58 PM.688:     crf:          0
6:53:58 PM.688:     fps_num:      60
6:53:58 PM.688:     fps_den:      1
6:53:58 PM.688:     width:        1280
6:53:58 PM.688:     height:       720
6:53:58 PM.688:     keyint:       120
6:53:58 PM.688:
6:53:58 PM.688: [x264 encoder: 'streaming_h264'] custom settings: scenecut=0
6:53:58 PM.693: ---------------------------------
6:53:58 PM.694: [FFmpeg aac encoder: 'Track1'] bitrate: 160, channels: 2, channel_layout: 3
6:53:58 PM.694:
6:53:58 PM.695: [rtmp stream: 'adv_stream'] Connecting to RTMP URL rtmp://live-ord.twitch.tv/app...
6:53:58 PM.709: [rtmp stream: 'adv_stream'] Interface: Intel(R) Ethernet Connection (2) I219-V (ethernet, 1000 mbps)
6:53:59 PM.459: [rtmp stream: 'adv_stream'] Connection to rtmp://live-ord.twitch.tv/app successful
6:53:59 PM.465: ==== Streaming Start ===============================================
6:58:29 PM.421: [rtmp stream: 'adv_stream'] User stopped the stream
6:58:29 PM.421: Output 'adv_stream': stopping
6:58:29 PM.421: Output 'adv_stream': Total frames output: 16137
6:58:29 PM.421: Output 'adv_stream': Total drawn frames: 16231 (16244 attempted)
6:58:29 PM.421: Output 'adv_stream': Number of lagged frames due to rendering lag/stalls: 13 (0.1%)
6:58:29 PM.421: Video stopped, number of skipped frames due to encoding lag: 1546/16198 (9.5%)
6:58:29 PM.424: ==== Streaming Stop ================================================
6:58:29 PM.448: warning: 2 frames left in the queue on closing
7:06:46 PM.900: Settings changed (outputs)
7:06:46 PM.900: ------------------------------------------------
7:08:04 PM.010: User added source 'Layout' (image_source) to scene 'FPS'
7:08:04 PM.010: User added source 'Left Monitor Capture' (monitor_capture) to scene 'FPS'
7:08:04 PM.010: User added source 'Mic' (wasapi_input_capture) to scene 'FPS'
7:08:04 PM.010: User added source 'Alerts' (browser_source) to scene 'FPS'
7:08:04 PM.010: User added source 'Chatbox' (browser_source) to scene 'FPS'
7:08:04 PM.010: User added source 'Latest Follower' (text_gdiplus) to scene 'FPS'
7:08:04 PM.010: User added source 'Latest Follower Label' (text_gdiplus) to scene 'FPS'
7:08:04 PM.010: User added source 'Latest Subscriber' (text_gdiplus) to scene 'FPS'
7:08:04 PM.010: User added source 'Latest Subscriber Label' (text_gdiplus) to scene 'FPS'
7:08:04 PM.010: User added source 'Sub Goal' (browser_source) to scene 'FPS'
7:08:04 PM.010: User added source 'Webcam' (dshow_input) to scene 'FPS'
7:08:04 PM.010: User added source 'LiveSplit' (window_capture) to scene 'FPS'
7:08:04 PM.010: User added scene 'FPS'
7:08:04 PM.028: Switched to scene 'FPS'
7:08:25 PM.100: User Removed source 'Left Monitor Capture' (monitor_capture) from scene 'FPS'
7:08:26 PM.115: User switched to scene 'Left Monitor'
7:08:27 PM.501: User switched to scene 'FPS'
7:09:48 PM.256: User added source 'Dusk' (window_capture) to scene 'FPS'
7:09:48 PM.284: [window-capture: 'Dusk'] update settings:
7:09:48 PM.284:     executable: chrome.exe
7:10:14 PM.500: [window-capture: 'Dusk'] update settings:
7:10:14 PM.500:     executable: chrome.exe
7:10:17 PM.650: [window-capture: 'Dusk'] update settings:
7:10:17 PM.650:     executable: chrome.exe
7:10:41 PM.532: User Removed source 'Dusk' (window_capture) from scene 'FPS'
7:10:49 PM.868: User added source 'Dusk' (game_capture) to scene 'FPS'
7:10:55 PM.484: [game-capture: 'Dusk'] attempting to hook process: DUSK.exe
7:10:55 PM.615: [game-capture: 'Dusk'] using helper (compatibility hook)
7:10:55 PM.620: [game-capture: 'Dusk'] hook not loaded yet, retrying..
7:10:57 PM.501: [game-capture: 'Dusk'] attempting to hook process: DUSK.exe
7:10:57 PM.515: [game-capture: 'Dusk'] d3d11 shared texture capture successful
7:10:57 PM.517: [game-capture: 'Dusk'] shared texture capture successful
7:11:37 PM.857: User switched to scene 'Left Monitor'
7:11:38 PM.468: [game-capture: 'Dusk'] capture stopped
7:11:39 PM.784: [game-capture: 'Dusk'] attempting to hook process: DUSK.exe
7:11:39 PM.795: User switched to scene 'FPS'
7:11:39 PM.801: [game-capture: 'Dusk'] shared texture capture successful
7:11:41 PM.363: User switched to scene 'Left Monitor'
7:11:41 PM.968: [game-capture: 'Dusk'] capture stopped
7:11:43 PM.968: [game-capture: 'Dusk'] attempting to hook process: DUSK.exe
7:11:43 PM.973: User switched to scene 'FPS'
7:11:43 PM.984: [game-capture: 'Dusk'] shared texture capture successful
7:12:07 PM.067: ---------------------------------
7:12:07 PM.067: [x264 encoder: 'streaming_h264'] preset: faster
7:12:07 PM.067: [x264 encoder: 'streaming_h264'] settings:
7:12:07 PM.067:     rate_control: CBR
7:12:07 PM.067:     bitrate:      4000
7:12:07 PM.067:     buffer size:  4000
7:12:07 PM.067:     crf:          0
7:12:07 PM.067:     fps_num:      60
7:12:07 PM.067:     fps_den:      1
7:12:07 PM.067:     width:        1280
7:12:07 PM.067:     height:       720
7:12:07 PM.067:     keyint:       120
7:12:07 PM.067:
7:12:07 PM.067: [x264 encoder: 'streaming_h264'] custom settings: scenecut=0
7:12:07 PM.072: ---------------------------------
7:12:07 PM.072: [FFmpeg aac encoder: 'Track1'] bitrate: 160, channels: 2, channel_layout: 3
7:12:07 PM.072:
7:12:07 PM.073: [rtmp stream: 'adv_stream'] Connecting to RTMP URL rtmp://live-ord.twitch.tv/app...
7:12:07 PM.087: [rtmp stream: 'adv_stream'] Interface: Intel(R) Ethernet Connection (2) I219-V (ethernet, 1000 mbps)
7:12:07 PM.891: [rtmp stream: 'adv_stream'] Connection to rtmp://live-ord.twitch.tv/app successful
7:12:07 PM.895: ==== Streaming Start ===============================================
7:12:54 PM.881: [rtmp stream: 'adv_stream'] User stopped the stream
7:12:54 PM.881: Output 'adv_stream': stopping
7:12:54 PM.881: Output 'adv_stream': Total frames output: 2768
7:12:54 PM.881: Output 'adv_stream': Total drawn frames: 2866 (2868 attempted)
7:12:54 PM.881: Output 'adv_stream': Number of lagged frames due to rendering lag/stalls: 2 (0.1%)
7:12:54 PM.881: [rtmp stream: 'adv_stream'] Freeing 3 remaining packets
7:12:54 PM.882: Video stopped, number of skipped frames due to encoding lag: 1035/2819 (36.7%)
7:12:54 PM.884: ==== Streaming Stop ================================================
7:12:54 PM.900: warning: 2 frames left in the queue on closing
7:13:41 PM.550: [game-capture: 'Dusk'] capture window no longer exists, terminating capture
7:13:41 PM.554: [game-capture: 'Dusk'] capture stopped
 

Tungsten

New Member
Did some digging on my own, found the cause. This line in the log stood out to me:
"6:53:51 PM.789: Video stopped, number of skipped frames due to encoding lag: 40621/74507 (54.5%)"
Turns out the "dropped frames" counter doesn't account for frames the CPU isn't powerful enough to encode and send off to the streaming service. While my computer had no problem rendering the stream at 60fps, encoding it was too much. Lowering the bitrate back down to 4000 and dropping the framerate for the game capture down to 30fps solved the problem. If anyone else out there is having the same issue, hopefully this helps!
 
Top