Question / Help Bad stream quality

Dev1lsRejectX

New Member
I play League and it seems that my stream quality is bad. Any help would be appreciated. I'm sure it has something to do with my settings. I would like to play and be able to have the stream at least watchable.

Specs:

mPDWRN.png


Here is my speedtest

3112727762.png


I saw people posting logs so here is mine:

20:19:10: Settings::Video: Enabling Aero
20:20:45: Open Broadcaster Software v0.584b - 64bit ( ^ω^)
20:20:45: -------------------------------
20:20:45: CPU Name: Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz
20:20:45: CPU Speed: 3410MHz
20:20:45: Physical Memory: 8147MB Total, 4064MB Free
20:20:45: stepping id: 7, model 42, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
20:20:45: monitor 1: pos={0, 0}, size={1920, 1080}
20:20:45: Windows Version: 6.1 Build 7601 S
20:20:45: Aero is Enabled
20:20:45: -------------------------------
20:20:45: OBS Modules:
20:20:45: Base Address Module
20:20:45: 000000003F730000 OBS.exe
20:20:45: 00000000EFBD0000 OBSApi.dll
20:20:45: 00000000F69E0000 DShowPlugin.dll
20:20:45: 00000000F69B0000 GraphicsCapture.dll
20:20:45: 00000000F6900000 NoiseGate.dll
20:20:45: 00000000F68E0000 PSVPlugin.dll
20:20:45: ------------------------------------------
20:20:45: Adapter 1
20:20:45: Video Adapter: NVIDIA GeForce GTX 680
20:20:45: Video Adapter Dedicated Video Memory: 2087387136
20:20:45: Video Adapter Shared System Memory: 2147807232
20:20:45: Video Adapter Output 1: pos={0, 0}, size={1920, 1080}, attached=true
20:20:45: =====Stream Start: 2013-11-19, 20:20:45===============================================
20:20:45: Multithreaded optimizations: On
20:20:45: Base resolution: 1920x1080
20:20:45: Output resolution: 1280x720
20:20:45: ------------------------------------------
20:20:45: Loading up D3D10 on NVIDIA GeForce GTX 680...
20:20:46: ------------------------------------------
20:20:46: Audio Format: 48000hz
20:20:46: Playback device {0.0.0.00000000}.{ff7a5570-c5f5-4cc2-92a4-3899df87ed67}
20:20:46: ------------------------------------------
20:20:46: Using desktop audio input: Speakers (SB Recon3D PCIe)
20:20:46: ------------------------------------------
20:20:46: Using auxilary audio input: Microphone (SB Recon3D PCIe)
20:20:46: ------------------------------------------
20:20:46: Audio Encoding: AAC
20:20:46: bitrate: 256
20:20:46: Using Window Capture
20:20:46: Using Window Capture
20:20:46: Scene buffering time set to 400
20:20:46: Using custom x264 settings: "keyint=60"
20:20:46: ------------------------------------------
20:20:46: Video Encoding: x264
20:20:46: fps: 30
20:20:46: width: 1280, height: 720
20:20:46: preset: veryfast
20:20:46: profile: high
20:20:46: keyint: 60
20:20:46: CBR: yes
20:20:46: CFR: no
20:20:46: max bitrate: 3500
20:20:46: buffer size: 3500
20:20:46: ------------------------------------------
20:20:46: MMDeviceAudioSource: Frequency for device 'Speakers (SB Recon3D PCIe)' is 1536000, samples per sec is 192000
20:20:46: MMDeviceAudioSource: Frequency for device 'Microphone (SB Recon3D PCIe)' is 384000, samples per sec is 48000
20:20:47: Using RTMP service: Twitch / Justin.tv
20:20:47: Server selection: rtmp://live-mia.justin.tv/app
20:20:48: Interface: MAC Bridge Miniport (ethernet, 300 mbps)
20:20:48: Completed handshake with rtmp://live-mia.justin.tv/app in 260 ms.
20:20:48: Using Window Capture
20:20:49: SO_SNDBUF was at 8192
20:20:49: SO_SNDBUF is now 65536
20:29:03: Total frames encoded: 14900, total frames duplicated: 2 (0.01%)
20:29:03: Total frames rendered: 14904, number of late frames: 0 (0.00%) (it's okay for some frames to be late)
20:29:03: RTMPPublisher::SocketLoop: Graceful loop exit
20:29:03: Average send payload: 11258 bytes, average send interval: 24 ms
20:29:03: Number of times waited to send: 0, Waited for a total of 0 bytes
20:29:03: Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
20:29:03: Number of bytes sent: 230047272
20:29:03:
20:29:03: Profiler time results:
20:29:03:
20:29:03: ==============================================================
20:29:03: video thread frame - [100%] [avg time: 1.59 ms] [children: 69.3%] [unaccounted: 30.7%]
20:29:03: | scene->Preprocess - [63.9%] [avg time: 1.016 ms]
20:29:03: | GPU download and conversion - [5.41%] [avg time: 0.086 ms] [children: 4.47%] [unaccounted: 0.943%]
20:29:03: | | flush - [2.7%] [avg time: 0.043 ms]
20:29:03: | | CopyResource - [1.64%] [avg time: 0.026 ms]
20:29:03: | | conversion to 4:2:0 - [0.126%] [avg time: 0.002 ms]
20:29:03: Convert444Threads - [100%] [avg time: 0.937 ms] [children: 99.4%] [unaccounted: 0.64%]
20:29:03: | Convert444toNV12 - [99.4%] [avg time: 0.931 ms]
20:29:03: encoder thread frame - [100%] [avg time: 1.198 ms]
20:29:03: ==============================================================
20:29:03:
20:29:03:
20:29:03: Profiler CPU results:
20:29:03:
20:29:03: ==============================================================
20:29:03: video thread frame - [cpu time: avg 0.63 ms, total 9391.26 ms] [avg calls per frame: 1]
20:29:03: | scene->Preprocess - [cpu time: avg 0.03 ms, total 452.402 ms] [avg calls per frame: 1]
20:29:03: | GPU download and conversion - [cpu time: avg 0.082 ms, total 1232.41 ms] [avg calls per frame: 1]
20:29:03: | | flush - [cpu time: avg 0.039 ms, total 592.802 ms] [avg calls per frame: 1]
20:29:03: | | CopyResource - [cpu time: avg 0.03 ms, total 452.406 ms] [avg calls per frame: 1]
20:29:03: | | conversion to 4:2:0 - [cpu time: avg 0.001 ms, total 15.601 ms] [avg calls per frame: 1]
20:29:03: Convert444Threads - [cpu time: avg 0.91 ms, total 27113 ms] [avg calls per frame: 2]
20:29:03: | Convert444toNV12 - [cpu time: avg 0.907 ms, total 27019.4 ms] [avg calls per frame: 2]
20:29:03: encoder thread frame - [cpu time: avg 0.74 ms, total 11029.3 ms] [avg calls per frame: 1]
20:29:03: ==============================================================
20:29:03:
20:29:03: =====Stream End: 2013-11-19, 20:29:03=================================================
 

FerretBomb

Active Member
From the log, it appears that OBS isn't the issue.
What is the problem, exactly? Why is it 'unwatchable'? Do you have a VOD link demonstrating the issue (you may have to turn on 'record broadcasts' on Twitch to have these available)?

My assumption would be that your viewers are getting a LOT of stutter. This is because you're casting at 3500kbps, which is WAY higher than most viewers' connections can deal with. The recommended limit for a non-partnered streamer is 2000kbps, which is enough for a decent-quality 720p@45fps stream, or a good-quality 720p@30fps stream. If people are still getting stutter, 1500kbps is enough for a decent-quality 720@30 stream.

Also, you'll probably want to run a 6MB test at http://testmy.net/upload to get an accurate view of your constant upstream throughput... speedtest is worthless for livestreamers. That said, it doesn't look like you're dropping frames, so you're probably fine on that. More mentioned as a by-the-way than something that would help.

It appears that you didn't actually go in-game on that log; for League, you want to use a Window Capture for the out-of-game client (champ picking, queueing, etc) and a Game Capture source for the in-game executable.
I'd also recommend dropping to 96kbps AAC audio, or 128kbps at most. Anything more is pretty much just a waste of bandwidth. (MP3 needs higher bitrates to sound good, AAC doesn't. You should be using AAC if possible. MP3 is only really there for older systems that can't use AAC.)
 

Dev1lsRejectX

New Member
FerretBomb said:
From the log, it appears that OBS isn't the issue.
What is the problem, exactly? Why is it 'unwatchable'? Do you have a VOD link demonstrating the issue (you may have to turn on 'record broadcasts' on Twitch to have these available)?

My assumption would be that your viewers are getting a LOT of stutter. This is because you're casting at 3500kbps, which is WAY higher than most viewers' connections can deal with. The recommended limit for a non-partnered streamer is 2000kbps, which is enough for a decent-quality 720p@45fps stream, or a good-quality 720p@30fps stream. If people are still getting stutter, 1500kbps is enough for a decent-quality 720@30 stream.

Also, you'll probably want to run a 6MB test at http://testmy.net/upload to get an accurate view of your constant upstream throughput... speedtest is worthless for livestreamers. That said, it doesn't look like you're dropping frames, so you're probably fine on that. More mentioned as a by-the-way than something that would help.

It appears that you didn't actually go in-game on that log; for League, you want to use a Window Capture for the out-of-game client (champ picking, queueing, etc) and a Game Capture source for the in-game executable.
I'd also recommend dropping to 96kbps AAC audio, or 128kbps at most. Anything more is pretty much just a waste of bandwidth. (MP3 needs higher bitrates to sound good, AAC doesn't. You should be using AAC if possible. MP3 is only really there for older systems that can't use AAC.)

So what you're telling me is 3500 is to high of a bit rate to stream at for non-partnered streamers. Ok I'll change that.

I must have posted the wrong log, I'll fix that tonight. A and I'll also get a vod to post. Thanks for the response!
 

Dev1lsRejectX

New Member
I told twitch to save the broadcast but it doesn't show up?

Here's my log:

19:22:42: Open Broadcaster Software v0.584b - 64bit ( ^ω^)
19:22:42: -------------------------------
19:22:42: CPU Name: Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz
19:22:42: CPU Speed: 3410MHz
19:22:42: Physical Memory: 8147MB Total, 4555MB Free
19:22:42: stepping id: 7, model 42, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
19:22:42: monitor 1: pos={0, 0}, size={1920, 1080}
19:22:42: Windows Version: 6.1 Build 7601 S
19:22:42: Aero is Enabled
19:22:42: -------------------------------
19:22:42: OBS Modules:
19:22:42: Base Address Module
19:22:42: 000000003F300000 OBS.exe
19:22:42: 00000000ED660000 OBSApi.dll
19:22:42: 00000000F7270000 DShowPlugin.dll
19:22:42: 00000000F7240000 GraphicsCapture.dll
19:22:42: 00000000FC4D0000 NoiseGate.dll
19:22:42: 00000000FA700000 PSVPlugin.dll
19:22:42: ------------------------------------------
19:22:42: Adapter 1
19:22:42: Video Adapter: NVIDIA GeForce GTX 680
19:22:42: Video Adapter Dedicated Video Memory: 2087387136
19:22:42: Video Adapter Shared System Memory: 2147807232
19:22:42: Video Adapter Output 1: pos={0, 0}, size={1920, 1080}, attached=true
19:22:42: =====Stream Start: 2013-11-21, 19:22:42===============================================
19:22:42: Multithreaded optimizations: On
19:22:42: Base resolution: 1920x1080
19:22:42: Output resolution: 1280x720
19:22:42: ------------------------------------------
19:22:42: Loading up D3D10 on NVIDIA GeForce GTX 680...
19:22:42: ------------------------------------------
19:22:42: Audio Format: 48000hz
19:22:42: Playback device {0.0.0.00000000}.{ff7a5570-c5f5-4cc2-92a4-3899df87ed67}
19:22:42: ------------------------------------------
19:22:42: Using desktop audio input: Speakers (SB Recon3D PCIe)
19:22:42: ------------------------------------------
19:22:42: Using auxilary audio input: Microphone (SB Recon3D PCIe)
19:22:42: ------------------------------------------
19:22:42: Audio Encoding: AAC
19:22:42: bitrate: 128
19:22:42: Using Monitor Capture
19:22:42: Scene buffering time set to 700
19:22:42: ------------------------------------------
19:22:42: Video Encoding: x264
19:22:42: fps: 30
19:22:42: width: 1280, height: 720
19:22:42: preset: ultrafast
19:22:42: profile: high
19:22:42: keyint: 250
19:22:42: CBR: no
19:22:42: CFR: yes
19:22:42: max bitrate: 2000
19:22:42: buffer size: 2000
19:22:42: quality: 9
19:22:42: ------------------------------------------
19:22:42: MMDeviceAudioSource: Frequency for device 'Speakers (SB Recon3D PCIe)' is 1536000, samples per sec is 192000
19:22:42: MMDeviceAudioSource: Frequency for device 'Microphone (SB Recon3D PCIe)' is 384000, samples per sec is 48000
19:22:44: Using RTMP service: Twitch / Justin.tv
19:22:44: Server selection: rtmp://live-mia.justin.tv/app
19:22:44: Interface: MAC Bridge Miniport (ethernet, 300 mbps)
19:22:44: Completed handshake with rtmp://live-mia.justin.tv/app in 255 ms.
19:22:46: SO_SNDBUF was at 8192
19:22:46: SO_SNDBUF is now 65536
19:24:38: Total frames encoded: 3437, total frames duplicated: 741 (21.56%)
19:24:38: Total frames rendered: 2696, number of late frames: 746 (27.67%) (it's okay for some frames to be late)
19:24:38: RTMPPublisher::SocketLoop: Graceful loop exit
19:24:38: Average send payload: 3483 bytes, average send interval: 31 ms
19:24:38: Number of times waited to send: 0, Waited for a total of 0 bytes
19:24:38: Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
19:24:38: Number of bytes sent: 12108539
19:24:38:
19:24:38: Profiler time results:
19:24:38:
19:24:38: ==============================================================
19:24:38: video thread frame - [100%] [avg time: 42.487 ms] [children: 99.5%] [unaccounted: 0.518%]
19:24:38: | scene->Preprocess - [99.2%] [avg time: 42.126 ms]
19:24:38: | GPU download and conversion - [0.332%] [avg time: 0.141 ms] [children: 0.313%] [unaccounted: 0.0188%]
19:24:38: | | flush - [0.266%] [avg time: 0.113 ms]
19:24:38: | | CopyResource - [0.0377%] [avg time: 0.016 ms]
19:24:38: | | conversion to 4:2:0 - [0.00941%] [avg time: 0.004 ms]
19:24:38: Convert444Threads - [100%] [avg time: 0.697 ms] [children: 99.6%] [unaccounted: 0.43%]
19:24:38: | Convert444toNV12 - [99.6%] [avg time: 0.694 ms]
19:24:38: encoder thread frame - [100%] [avg time: 1.102 ms]
19:24:38: ==============================================================
19:24:38:
19:24:38:
19:24:38: Profiler CPU results:
19:24:38:
19:24:38: ==============================================================
19:24:38: video thread frame - [cpu time: avg 8.002 ms, total 21574.9 ms] [avg calls per frame: 1]
19:24:38: | scene->Preprocess - [cpu time: avg 7.713 ms, total 20794.9 ms] [avg calls per frame: 1]
19:24:38: | GPU download and conversion - [cpu time: avg 0.127 ms, total 343.201 ms] [avg calls per frame: 1]
19:24:38: | | flush - [cpu time: avg 0.104 ms, total 280.801 ms] [avg calls per frame: 1]
19:24:38: | | CopyResource - [cpu time: avg 0.023 ms, total 62.4 ms] [avg calls per frame: 1]
19:24:38: | | conversion to 4:2:0 - [cpu time: avg 0 ms, total 0 ms] [avg calls per frame: 1]
19:24:38: Convert444Threads - [cpu time: avg 0.683 ms, total 3666.02 ms] [avg calls per frame: 2]
19:24:38: | Convert444toNV12 - [cpu time: avg 0.683 ms, total 3666.02 ms] [avg calls per frame: 2]
19:24:38: encoder thread frame - [cpu time: avg 0.452 ms, total 1544.41 ms] [avg calls per frame: 1]
19:24:38: ==============================================================
19:24:38:
19:24:38: =====Stream End: 2013-11-21, 19:24:38=================================================
19:38:01: =====Stream Start: 2013-11-21, 19:38:01===============================================
19:38:01: Multithreaded optimizations: On
19:38:01: Base resolution: 1920x1080
19:38:01: Output resolution: 1280x720
19:38:01: ------------------------------------------
19:38:01: Loading up D3D10 on NVIDIA GeForce GTX 680...
19:38:01: ------------------------------------------
19:38:01: Audio Format: 48000hz
19:38:01: Playback device {0.0.0.00000000}.{ff7a5570-c5f5-4cc2-92a4-3899df87ed67}
19:38:01: ------------------------------------------
19:38:01: Using desktop audio input: Speakers (SB Recon3D PCIe)
19:38:01: ------------------------------------------
19:38:01: Using auxilary audio input: Microphone (SB Recon3D PCIe)
19:38:01: ------------------------------------------
19:38:01: Audio Encoding: AAC
19:38:01: bitrate: 128
19:38:01: Using Monitor Capture
19:38:01: Scene buffering time set to 700
19:38:01: ------------------------------------------
19:38:01: Video Encoding: x264
19:38:01: fps: 30
19:38:01: width: 1280, height: 720
19:38:01: preset: ultrafast
19:38:01: profile: high
19:38:01: keyint: 250
19:38:01: CBR: no
19:38:01: CFR: yes
19:38:01: max bitrate: 2000
19:38:01: buffer size: 2000
19:38:01: quality: 9
19:38:01: ------------------------------------------
19:38:01: MMDeviceAudioSource: Frequency for device 'Speakers (SB Recon3D PCIe)' is 1536000, samples per sec is 192000
19:38:01: MMDeviceAudioSource: Frequency for device 'Microphone (SB Recon3D PCIe)' is 384000, samples per sec is 48000
19:38:03: Using RTMP service: Twitch / Justin.tv
19:38:03: Server selection: rtmp://live-mia.justin.tv/app
19:38:03: Interface: MAC Bridge Miniport (ethernet, 300 mbps)
19:38:05: Completed handshake with rtmp://live-mia.justin.tv/app in 1574 ms.
19:38:06: SO_SNDBUF was at 8192
19:38:06: SO_SNDBUF is now 65536
19:49:31: ++++++++++++++++++++++++++++++++++++++++++++++++++++++
19:49:31: New Scene
19:49:31: Using Window Capture
19:51:04: RTMPPublisher::SocketLoop: Stalled for 2028 ms to write 237301 bytes (buffer: 0 / 272384), unstable connection?
19:56:17: ++++++++++++++++++++++++++++++++++++++++++++++++++++++
19:56:17: New Scene
19:56:17: Using Monitor Capture
19:56:18: ++++++++++++++++++++++++++++++++++++++++++++++++++++++
19:56:18: New Scene
19:56:18: Using Window Capture
19:56:39: Total frames encoded: 33511, total frames duplicated: 2774 (8.28%)
19:56:39: Total frames rendered: 30920, number of late frames: 2594 (8.39%) (it's okay for some frames to be late)
19:56:39: RTMPPublisher::SocketLoop: Graceful loop exit
19:56:39: Average send payload: 3995 bytes, average send interval: 29 ms
19:56:39: Number of times waited to send: 0, Waited for a total of 0 bytes
19:56:39: Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
19:56:39: Number of bytes sent: 148988208
19:56:39:
19:56:39: Profiler time results:
19:56:39:
19:56:39: ==============================================================
19:56:39: video thread frame - [100%] [avg time: 22.38 ms] [children: 98.4%] [unaccounted: 1.58%]
19:56:39: | scene->Preprocess - [98%] [avg time: 21.929 ms]
19:56:39: | GPU download and conversion - [0.438%] [avg time: 0.098 ms] [children: 0.393%] [unaccounted: 0.0447%]
19:56:39: | | flush - [0.286%] [avg time: 0.064 ms]
19:56:39: | | CopyResource - [0.0938%] [avg time: 0.021 ms]
19:56:39: | | conversion to 4:2:0 - [0.0134%] [avg time: 0.003 ms]
19:56:39: Convert444Threads - [100%] [avg time: 0.799 ms] [children: 99.4%] [unaccounted: 0.626%]
19:56:39: | Convert444toNV12 - [99.4%] [avg time: 0.794 ms]
19:56:39: encoder thread frame - [100%] [avg time: 0.961 ms]
19:56:39: ==============================================================
19:56:39:
19:56:39:
19:56:39: Profiler CPU results:
19:56:39:
19:56:39: ==============================================================
19:56:39: video thread frame - [cpu time: avg 4.419 ms, total 136641 ms] [avg calls per frame: 1]
19:56:39: | scene->Preprocess - [cpu time: avg 3.984 ms, total 123194 ms] [avg calls per frame: 1]
19:56:39: | GPU download and conversion - [cpu time: avg 0.087 ms, total 2714.42 ms] [avg calls per frame: 1]
19:56:39: | | flush - [cpu time: avg 0.059 ms, total 1825.21 ms] [avg calls per frame: 1]
19:56:39: | | CopyResource - [cpu time: avg 0.021 ms, total 655.205 ms] [avg calls per frame: 1]
19:56:39: | | conversion to 4:2:0 - [cpu time: avg 0.002 ms, total 62.4 ms] [avg calls per frame: 1]
19:56:39: Convert444Threads - [cpu time: avg 0.753 ms, total 46566.3 ms] [avg calls per frame: 2]
19:56:39: | Convert444toNV12 - [cpu time: avg 0.751 ms, total 46457.1 ms] [avg calls per frame: 2]
19:56:39: encoder thread frame - [cpu time: avg 0.309 ms, total 10374.1 ms] [avg calls per frame: 1]
19:56:39: ==============================================================
19:56:39:
19:56:39: =====Stream End: 2013-11-21, 19:56:39=================================================
 

Sapiens

Forum Moderator
The ultrafast preset is reserved for the lowliest of CPUs. Since you have a 2600K you should at least put that back to the OBS default of veryfast, and for a game like League you can probably bump it to faster or fast. These presets compress the video more, which in turn means better quality at the cost of more work for your CPU, but since you have a good CPU and are playing a fairly undemanding game it shouldn't be an issue.

Stop using monitor capture. Use game capture or window capture instead. Monitor capture in Windows 7 is the least efficient capture method and is why you're seeing so many late/lagged/duplicate frames.

Since you're streaming to Twitch you'll probably want to comply with their other broadcast "requirements" (encouraged but not enforced) - enable CBR under Settings > Encoding, and set your keyframe interval to 2 seconds under Settings > Advanced.
 

Dev1lsRejectX

New Member
Sapiens said:
The ultrafast preset is reserved for the lowliest of CPUs. Since you have a 2600K you should at least put that back to the OBS default of veryfast, and for a game like League you can probably bump it to faster or fast. These presets compress the video more, which in turn means better quality at the cost of more work for your CPU, but since you have a good CPU and are playing a fairly undemanding game it shouldn't be an issue.

Stop using monitor capture. Use game capture or window capture instead. Monitor capture in Windows 7 is the least efficient capture method and is why you're seeing so many late/lagged/duplicate frames.

Since you're streaming to Twitch you'll probably want to comply with their other broadcast "requirements" (encouraged but not enforced) - enable CBR under Settings > Encoding, and set your keyframe interval to 2 seconds under Settings > Advanced.

I only monitor capture out of game.

Thanks for the info, I'll update you here soon.

Here's a link to my stream if you have a few minutes to watch and see http://www.twitch.tv/joshynr

Also, does setting an affinity for OBS help at all?
 

Sapiens

Forum Moderator
The quality looks good to me.

Generally no, manually setting core affinities won't help and in many cases hurts performance.
 
Top