Question / Help Upload/Frame Drop Issue

drumsetjunky

New Member
When I start my stream it caps out at about 1500kb/s and hops between that and 0kb/s dropping frames like crazy.

I was experiencing this along with the "Stop Streaming" crash issue before the last two patches(.553 and .554) but I hoped it might be fixed along with it.

When I stream from another windows log in on the same machine(same install, same config file, same profile settings file) I do not have the problem. Doesn't matter what server location I switch to. Firewall exceptions for OBS are in place and mal-ware software was also tested as a possible cause(the issue persisted even when software was not running).

TLDR:

I start the stream. The upload immediately tanks and I start dropping frames. I've had this issue since .552b.
Firewall/Mal-Ware Software are not the issue.

Code:
20:43:42: Browser Source plugin strings not found, dynamically loading 22 strings
20:43:42: CLR host plugin strings not found, dynamically loading 4 strings
20:43:42: CLRHost::Initialize() attempting to load and start the .NET runtime (null)
20:43:42: CLRHost::Initialize() Found version v2.0.50727 .NET runtime
20:43:42: CLRHost::Initialize() Found version v4.0.30319 .NET runtime
20:43:42: CLRHost::Initialize() attempting to use v4.0.30319 .NET runtime
20:43:42: CLRHost::LoadInteropLibrary() load the assembly plugins\CLRHostPlugin\CLRHost.Interop.dll
20:43:42: CLRHost::LoadPlugins() attempting to load the plugin assembly CLRBrowserSourcePlugin
20:43:44: CLRHost:: Could not find/load browser settings at location C:\Users\Wesley\AppData\Roaming\OBS\pluginData\browser.json
20:43:44: CLRHost::LoadPlugins() successfully added CLR plugin [Type: CLRBrowserSourcePlugin.CLRBrowserSourcePlugin, Name: CLR Browser Source Plugin]
20:43:44: Server Ping plugin strings not found, dynamically loading 24 strings
20:43:44: Video Source Plugin strings not found, dynamically loading 38 strings
20:43:48: Open Broadcaster Software v0.554b - 32bit (´・ω・`)
20:43:48: -------------------------------
20:43:48: CPU Name: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz
20:43:48: CPU Speed: 3500MHz
20:43:48: Physical Memory:  4095MB Total, 4095MB Free
20:43:48: stepping id: 9, model 10, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 8, total cores 4
20:43:48: monitor 1: pos={1920, 0}, size={1920, 1080}
20:43:48: monitor 2: pos={0, 0}, size={1920, 1080}
20:43:48: Windows Version: 6.2 Build 9200 
20:43:48: Aero is Enabled
20:43:48: -------------------------------
20:43:48: OBS Modules:
20:43:48: Base Address     Module
20:43:48: 00290000         OBS.exe
20:43:48: 62620000         OBSApi.dll
20:43:48: 71EC0000         BrowserSourcePluginWrapper.dll
20:43:48: 675D0000         CLRHostPlugin.dll
20:43:48: 67500000         DShowPlugin.dll
20:43:48: 70CF0000         GraphicsCapture.dll
20:43:48: 67FB0000         NoiseGate.dll
20:43:48: 67A70000         PSVPlugin.dll
20:43:48: 62570000         ServerPingPlugin.dll
20:43:48: 71030000         VideoSourcePluginWrapper.dll
20:43:48: ------------------------------------------
20:43:48: Adapter 1
20:43:48:   Video Adapter: AMD Radeon HD 7800 Series
20:43:48:   Video Adapter Dedicated Video Memory: 2119376896
20:43:48:   Video Adapter Shared System Memory: 2175524864
20:43:48: =====Stream Start: 2013-09-03, 20:43:48===============================================
20:43:48:   Multithreaded optimizations: On
20:43:48:   Base resolution: 1920x1080
20:43:48:   Output resolution: 1280x720
20:43:48: ------------------------------------------
20:43:48: Loading up D3D10 on AMD Radeon HD 7800 Series...
20:43:48: C:/Users/Wesley/AppData/Roaming/OBS/shaderCache/shaders/DrawTexture.pShader.blob
20:43:48: C:/Users/Wesley/AppData/Roaming/OBS/shaderCache/shaders/DrawSolid.pShader.blob
20:43:48: C:/Users/Wesley/AppData/Roaming/OBS/shaderCache/shaders/DownscaleLanczos6tapYUV.pShader.blob
20:43:48: Playback device Default
20:43:48: ------------------------------------------
20:43:48: Using desktop audio input: Logitech Headset (4- Logitech G930 Headset)
20:43:48: Using 7.1 surround speaker setup
20:43:48: ------------------------------------------
20:43:48: Using auxilary audio input: Microphone (4- Logitech G930 Headset)
20:43:48: ------------------------------------------
20:43:48: Audio Encoding: AAC
20:43:48:     bitrate: 128
20:43:48: C:/Users/Wesley/AppData/Roaming/OBS/shaderCache/shaders/ColorKey_RGB.pShader.blob
20:43:48: C:/Users/Wesley/AppData/Roaming/OBS/shaderCache/shaders/AlphaIgnore.pShader.blob
20:43:48: Using Window Capture
20:43:48: C:/Users/Wesley/AppData/Roaming/OBS/shaderCache/shaders/ColorKey_RGB.pShader.blob
20:43:48: C:/Users/Wesley/AppData/Roaming/OBS/shaderCache/shaders/AlphaIgnore.pShader.blob
20:43:48: Using bitmap image
20:43:48: C:/Users/Wesley/AppData/Roaming/OBS/shaderCache/shaders/ColorKey_RGB.pShader.blob
20:43:48: C:/Users/Wesley/AppData/Roaming/OBS/shaderCache/shaders/AlphaIgnore.pShader.blob
20:43:48: Using bitmap image
20:43:48: ------------------------------------------
20:43:48: Video Encoding: x264
20:43:48:     fps: 60
20:43:48:     width: 1280, height: 720
20:43:48:     preset: veryfast
20:43:48:     CBR: yes
20:43:48:     CFR: yes
20:43:48:     max bitrate: 3700
20:43:48:     buffer size: 3700
20:43:48: ------------------------------------------
20:43:48: MMDeviceAudioSource: Frequency for device 'Logitech Headset (4- Logitech G930 Headset)' is 1536000, samples per sec is 48000
20:43:48: MMDeviceAudioSource: Frequency for device 'Microphone (4- Logitech G930 Headset)' is 64000, samples per sec is 16000
20:43:49: Using RTMP service: Twitch / Justin.tv
20:43:49:   Server selection: rtmp://live-dfw.justin.tv/app
20:43:49:   Interface: Realtek PCIe GBE Family Controller (ethernet, 1000 mbps)
20:43:50: SO_SNDBUF was at 65536
20:43:50: SO_SNDBUF is now 65536
20:43:51: RTMPPublisher::Socketloop: Increasing send buffer to ISB 131072 (buffer: 0 / 489472)
20:43:54: ++++++++++++++++++++++++++++++++++++++++++++++++++++++
20:43:54:   New Scene
20:43:54: Using text output
20:43:54: Using Video Source
20:44:52: Total frames rendered: 3785, number of late frames: 33 (0.87%) (it's okay for some frames to be late)
20:44:52: Total duplicated frames to ensure constant framerate: 11 (0.29%)
20:45:16: RTMPPublisher::SocketLoop: Graceful loop exit
20:45:26: Number of times waited to send: 16, Waited for a total of 64498 bytes
20:45:26: Number of b-frames dropped: 389 (11%), Number of p-frames dropped: 2441 (67%), Total 2830 (78%)
20:45:26: 
20:45:26: Profiler results:
20:45:26: 
20:45:26: ==============================================================
20:45:26: frame - [100%] [avg time: 2.837 ms (cpu time: avg 1.308 ms, total 4953.13 ms)] [avg calls per frame: 1] [children: 99.8%] [unaccounted: 0.176%]
20:45:26: | frame preprocessing and rendering - [61.3%] [avg time: 1.739 ms (cpu time: avg 0.268 ms, total 1015.63 ms)] [avg calls per frame: 1] [children: 3.24%] [unaccounted: 58.1%]
20:45:26: | | scene->Preprocess - [3.24%] [avg time: 0.092 ms (cpu time: avg 0.066 ms, total 250 ms)] [avg calls per frame: 1]
20:45:26: | video encoding and uploading - [38.5%] [avg time: 1.093 ms (cpu time: avg 1.04 ms, total 3937.5 ms)] [avg calls per frame: 1] [children: 37.5%] [unaccounted: 0.987%]
20:45:26: | | flush - [3.45%] [avg time: 0.098 ms (cpu time: avg 0.078 ms, total 296.875 ms)] [avg calls per frame: 1]
20:45:26: | | CopyResource - [0.247%] [avg time: 0.007 ms (cpu time: avg 0.012 ms, total 46.875 ms)] [avg calls per frame: 0]
20:45:26: | | conversion to 4:2:0 - [0.141%] [avg time: 0.004 ms (cpu time: avg 0 ms, total 0 ms)] [avg calls per frame: 0]
20:45:26: | | call to encoder - [33%] [avg time: 0.937 ms (cpu time: avg 0.908 ms, total 3437.5 ms)] [avg calls per frame: 0]
20:45:26: | | sending stuff out - [0.67%] [avg time: 0.019 ms (cpu time: avg 0.037 ms, total 140.625 ms)] [avg calls per frame: 0]
20:45:26: | Convert444Threads - [1.17e+003%] [avg time: 33.137 ms (cpu time: avg 0.949 ms, total 3593.75 ms)] [avg calls per frame: 1]
20:45:26: ==============================================================
20:45:26: 
20:45:26: =====Stream End: 2013-09-03, 20:45:26=================================================
20:45:52: Browser Source plugin instance deleted; removing dynamically loaded localization strings
20:45:53: CLR host plugin instance deleted; removing dynamically loaded localization strings
20:45:53: Server Ping plugin instance deleted; removing dynamically loaded localization strings
20:45:53: Video Source Plugin instance deleted; removing dynamically loaded localization strings

HELP?!
 

Kharay

Member
http://www.testmy.net/upload -- Be sure to pick a test server near the one you would be streaming to. To get an accurate idea of what your connection is capable of to that location. And, another thing, there is an unofficial maximum of 3500 Kbps for Twitch.
 

Pugget

Twitch
A quick ditty on why we tend to poo-poo speed test results at Twitch, as non-technical as I can quickly make it:

When you are streaming, you can not take advantage of most of your bandwidth. Think of it this way: Your computer (e.g., TCP) detects that it can increase the amount of data it can send over your connection. However, OBS can't send it more data - it hasn't been generated yet, because you are streaming /right now/. It can't send video that has yet to be generated from a time that has yet to transpire.

Now, another typical situation: an packet acknowledgment arrives late, and your computer decides it can send less data than your desired bitrate. Now you are going to have ingest starvation for a brief moment. Even if the situation quickly reverses, your video still lagged out - your increase in speed can't make of the latency of the late data.

That last concept, latency, really is the more important factor here, along with the latency's little brother, jitter (the amount of change in latency). Speed test sites expose none of that, instead focusing on a situation (file transfer) that is totally unlike live, real-time streaming. The exact same principles apply to watching streams - speed doesn't matter past a point, it's your latency (and if there are congested pipes somewhere).
 

Kharay

Member
That said, what would you suggest we do when supporting OBS? Advise people to just... try something to see if it works? :S Your arguments aside, there is the very real and down to Earth factor of people needing specific instructions/help.

Testmy.net is reasonably accurate as far as determining viable bitrates in OBS are concerned; it is far more accurate than, for example, Speedtest.net. Its method of testing is more sustained (ie: less bursty) than Speedtest.net.
 

Pugget

Twitch
The Twitch ingest tool from the Team Liquid forums is a good bet, as is using the broadcast test tool in Xsplit - I think OBS has the same sort of thing, but I haven't checked in some time. Afraid I don't have a magic bullet, but bandwidth testing isn't it.
 

dodgepong

Administrator
Community Helper
Pugget said:
I think OBS has the same sort of thing, but I haven't checked in some time.
The illustrious Faruton made a server ping plugin here: viewtopic.php?f=11&t=3226

However, it doesn't have a similar broadcast testing tool like Xsplit. Personally, my experience with Xsplit's tester has been mediocre at best, and I find that it gives very sporadic results that don't correspond to reality. One time I decided to play with it, and every time I tested, it told me my bitrate was too high, even when I got down to below 1000kbps (and I have often done streams at 2500-3000+ kbps for hours with 0 dropped frames) so I personally don't trust that tool.

I totally understand and appreciate that bandwidth testers aren't the greatest. Every single one seems to give wildly different results, and uploading a file is a very different situation than uploading streaming video, to be sure. However, I've also found that the ping checker is, at best, a tool to help you choose what your first-attempt server should be, and not necessarily something that will tell you what server you will have the fastest connection to. Bandwidth testers, to me, are a sort of second way to find first-guess settings, combined with the ping tool. Neither should be relied on 100%, but for the sake of getting someone set up quickly, they are a good way to get a sort of baseline.

There are a ton of reasons why someone with 5mbps of theoretical upload might not be able to stream even at 2000kbps to Twitch: router QoS, ISP issues, Twitch load, firewalls, faulty cables, shared connections...the list goes on...

I'm not sure what I'm saying at this point...I guess I agree with you that speed tests aren't that useful in determining what you should be capable of streaming at, but they are at least one piece of the puzzle and can still be useful sometimes. Using the result of a speed test as "proof" that Twitch is at fault for dropped frames on a theoretically adequate bit rate is wrong, and I can understand why Twitch doesn't place much value in them from a Customer Support side.
 

Kharay

Member
Pugget said:
The Twitch ingest tool from the Team Liquid forums is a good bet, as is using the broadcast test tool in Xsplit - I think OBS has the same sort of thing, but I haven't checked in some time. Afraid I don't have a magic bullet, but bandwidth testing isn't it.
Whereas bandwidth tests are not the most reliable method of testing (in fact, there is only one certain way to test the connection's viability for streaming... actually streaming), bandwidth invariably and undeniably is part of the equation. For example, during the issue that existed these past days, my ping/jitter to Twitch/AMS was amazing (3 ms ping, 0 jitter... no joke). But, I could not maintain over 1000 Kbps no matter what. Which was not a local issue. Point being -- latency is not the ultimate factor either.
It all comes into play. Can't very well stream at 3,500 Kbps on a 1,000 Kbps line when streaming from 2,000 miles from the nearest Twitch locale. But we regularly see people that try either way and then come running in here complaining about how OBS is inferior to <insert random other broadcasting software> that even made them coffee while magically (read: imaginary) let them do things their connection can't do.
 

Boildown

Active Member
Pugget said:
A quick ditty on why we tend to poo-poo speed test results at Twitch, as non-technical as I can quickly make it:

When you are streaming, you can not take advantage of most of your bandwidth. Think of it this way: Your computer (e.g., TCP) detects that it can increase the amount of data it can send over your connection. However, OBS can't send it more data - it hasn't been generated yet, because you are streaming /right now/. It can't send video that has yet to be generated from a time that has yet to transpire.

Unless you've set up OBS with a small delay. 5 or 10 seconds will have a negligible impact on your stream being "live" but you'd always have data ready to send. Not that you necessarily would, because of timing issues.

But more important than Pugget's digression quoted above:

Bandwidth tests (specifically testmy.net) are good to tell you if you can't, with a great deal of certainty. He's right to imply that they aren't a good way to show that you can, but they're pretty reliable when someone comes here with problems to tell them that they can't (stream at a certain bitrate).
 

drumsetjunky

New Member
UPDATE:
Still having this issue.
-Start Stream
-ONE second of 3000-4000kb/s upload
-Then drops to 0kb/s
-Stays there and drops frames.

When I test my connection via testmy.net I have good speeds to Dallas, San Antonio, Chicago, elsewhere, etc..
When I test my ping in BOTH Faruton's Ping Plugin and the Twitch Ingest Tool I stay at 30-40 ms consistently to those same server locations.
I have the issue even if Firewall, mal-ware software are not running.

I can STILL stream on a different windows account login. Same install, same settings file, same scene configuration file. JUST on a different WINDOWS log in.
What difference does the windows log in matter?

It is a huge pain in the rear to have to switch windows accounts every time I want to stream.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
Without physically being at your computer to do a real in-depth debugging, I couldn't say specifically why being on one account changes your results. I can tell you however that if that were happening to me I'd be suspecting it's other software or windows settings on my computer affecting it, because there's no other real logical explanation I can think of for such a circumstance.
 
Top