This feature was silently introduced about a year and a half ago and can only be enabled by .ini edit (CongestionControl=1 under Video Encoding). Essentially, it will lower the bit-rate of the encoder if network strain is detected, and raise it back up when it becomes stable again.
It does not appear to be have been further developed after that initial implementation but it works well enough as is and I've used it extensively the past year. However, I recently discovered it tends to be overly aggressive at throttling, often leading to average bit-rates that are lower than what could be achieved with it off (and still no frame drops). For instance, while streaming to Twitch I've found that I can reliably stream at a constant 2500kbps with no frame drops, yet with congestion control on it will most likely settle at around 2000 instead. This represents a significant quality drop for 720p30 video, so I've been using this experimental feature less and less.
Of course, being lazy and with a fetish for automation, I'm not happy about this. Ideally I'd like to simply set my target maximum bit-rate (say, 3500 sounds good) and then let it try to reach as high as possible without frame dropping. I'd also like to have a lower bit-rate limit (lower than 2000 starts to become bit of a block fest during motion) and just accept some frame drops at that point.
This would allow me to theoretically average about 3000kbps for 24/7 Twitch streaming according to my measurements at different times of the day, and not have to worry much about it. I can't remember the last time I couldn't push 2000kbps to Twitch, and if there are intermittent connection issues that prevent it I'd rather drop a frame than lose quality.
After taking a peek at the source it looked like the currently hard-coded throttle application intervals, network strain detection thresholds and bit-rate increase/decrease values can be tweaked to better meet the objectives above. So I've been testing it with different formulas, trying to fine-tune the resulting throttling to an optimal state (highest average bit-rate without frame drops).
It's good fun and now much closer to a manually tweaked bit-rate (2300 auto vs 2500) for my connection at least, but still not quite there. So I'd like to know a few things going forward. Are there any plans to develop this feature further? Will it be a part of OBS MultiPlatform? (I don't see it under missing features). Thanks for reading.
It does not appear to be have been further developed after that initial implementation but it works well enough as is and I've used it extensively the past year. However, I recently discovered it tends to be overly aggressive at throttling, often leading to average bit-rates that are lower than what could be achieved with it off (and still no frame drops). For instance, while streaming to Twitch I've found that I can reliably stream at a constant 2500kbps with no frame drops, yet with congestion control on it will most likely settle at around 2000 instead. This represents a significant quality drop for 720p30 video, so I've been using this experimental feature less and less.
Of course, being lazy and with a fetish for automation, I'm not happy about this. Ideally I'd like to simply set my target maximum bit-rate (say, 3500 sounds good) and then let it try to reach as high as possible without frame dropping. I'd also like to have a lower bit-rate limit (lower than 2000 starts to become bit of a block fest during motion) and just accept some frame drops at that point.
This would allow me to theoretically average about 3000kbps for 24/7 Twitch streaming according to my measurements at different times of the day, and not have to worry much about it. I can't remember the last time I couldn't push 2000kbps to Twitch, and if there are intermittent connection issues that prevent it I'd rather drop a frame than lose quality.
After taking a peek at the source it looked like the currently hard-coded throttle application intervals, network strain detection thresholds and bit-rate increase/decrease values can be tweaked to better meet the objectives above. So I've been testing it with different formulas, trying to fine-tune the resulting throttling to an optimal state (highest average bit-rate without frame drops).
It's good fun and now much closer to a manually tweaked bit-rate (2300 auto vs 2500) for my connection at least, but still not quite there. So I'd like to know a few things going forward. Are there any plans to develop this feature further? Will it be a part of OBS MultiPlatform? (I don't see it under missing features). Thanks for reading.
Last edited: