Very high "Current Upload" in Stream Status

I have noticed at many occasions that the Current Upload is crazy high, peaking over 100 Mbit/s in some cases. Why doesn't the Live Streaming limit and honor the maximum upload to the same amount as the Streaming Setting i.e 5000 kBit/s - in my case? Can I somehow use CBR encoding instead of this out of control VBR encoding/streaming)?

Comments

The maximum streaming rate is a "hint" to the video encoder to generate not more than e.g. 5000 kBits/sec. Currently we only support H264 encoding with varying bit rate (VBR). However if then encoder can't meet this maximum for any reason (e.g. the frame size is too big or the frame rate is too high) then it may generate more data than this. Please monitor the "Actual Output" value in the Encoder section of the Live Streaming output destination stats while streaming because this is the data rate the encoder produces.

However this doesn't need to correlate to the "Current Upload" peaking because the encoder may still generate a constant bit rate well under the maximum bit rate while your internet connection may vary in bandwidth over time. (Please take in account that the bandwidth is not only from your computer to your ISP but from your computer all the way to your streaming host).

Please check if the "Actual Output" value of the encoder meets your expectations. If so you may need to check your internet connection from your computer through to your streaming host to see if there is a problem here.

Thats why we splitup the monitoring in two sections: The "Encoder Status" reports what the encoder is actually doing. The "Actual Output" value tells you how much data per second the encoder is spitting out. Is this varying in that amount too?

On the other hand we have the "Streaming Status" section which reports about the internet transfer rates. We are giving the video data to the macOS in order to send the data through the internet and get reported back by the macOS how much of that data got transferred. There is no package lost involved because the macOS is handling all this on its own. the "Local Buffer Size" graph shows the difference between what we gave to the macOS and what the macOS was reporting to us that has been sent. If this is "zero" we know that the internet bandwidth is enough to send out the video data. If it increases over time we know we need to adjust the average data rate for the encoder. We calculate the adjustment that way that it meets the average data rate that the system was able to send out. We iron out peeks because we wait a couple of seconds before we adjust the encoder rate, so a short spike shouldn't hurt if the macOS is able to send the spike in time.

If the "Current Upload" is reporting 80 MBits/sec but your internet connection doesn't even allow that amount of data then our measurement did't fail. This may caused by the fact that we are depending on the "macOS reporting back" timing. If macOS is not constantly reporting how much it sent (e.g. we will get "no" reports in one second, but double in the second after that) then we calculate the "Current Upload" the wrong way. Unfortunately there is no guaranty when macOS is reporting the success of sending out the data. If you macOS system is overloaded it may struggle to give us the notification in time and we fail to calculate the "Current Upload" speed.