Auto-Configuration Suggestion

shamrock

New Member
Hi,

I have recently been tasked to integrate OBS more with some of our solutions, first time looking at it in any depth, certainly got some wonderful features.

One element which is less than stella is the bandwidth test part of the auto configuration, not because it does not work, but it is impossible for a remote host to feed it data that it should be set to.

Let me outline the use case and a potential solution

- We have multiple users with differing levels of purchased service
- These users also have differing levels of bandwidth capability
- Using the auto configuration wizard is brilliant as no one really needs to know much else, however when they exceed either their plan or really their capabilities - test today, different tomorrow bandwidth environment - but the bandwidth test at the time said it was awesome - causes problems

So a request for a feature is this

As it appears OBS is RTMP based

- At the point of the bandwidth test
- Connect to the RTMP endpoint, make a function call, say getOBSConfig(), sending over all the current config, server, stream key, capabilities of the devices
- If the remote side sends back data, such as a flag to say 'use this' and then elements such as video bitrate, then use that rather than the bandwidth test
- If the remote side does not respond to the function call, just do the bandwidth test
- Continue with the auto configuration using which ever data set was available

An addition to this

- Perhaps also make the getOBSConfig() call each time the 'Start Streaming' is pushed, prior to calling publish, so again allow each time the bitrate to be altered, in case the user decides other settings are good (when they are not), or allowing the remote side to better control their network and capabilities.

This allows remote management of OBS as it is provisioned without getting in a tangle with users who have way over provisioned their capabilities and/or services that want to maintain a more stable publishing experience.

Shamrock
 

shamrock

New Member
How does the remote host know what sort of bandwidth is available to the client?

There are several methods. Each connection is monitored so knowing the 'average' bitrate is one route to go, but also based on pricing plan enforcing a limit - say 2mpbs or even 4mpbs, so companies like Twitch and Facebook already do this based on partner status.

It could also be based on capacity available on the host - so could allow a connection but in a reduced mode in times of over contention - which of course happens when things fail - but allowing service to continue degraded is better than a complete disaster.

Certainly knowing at the time, bandwidth test is a good route, just allowing the remote side to signal to the broadcaster would be useful as well.

Of course enforcing a limit does not mean it is available, but then at least hosts choice - perhaps it could be displayed in OBS, enforced by remote side ?

This kind of mechanism is already available with other protocols, so WebRTC you can signal back to the client bandwidth to use etc.

Shamrock
 

shamrock

New Member
Hi,

I was thinking more about this, so as part of the signalling from OBS to the remote side, sending the results of any bandwidth test, would also be very useful, coming back to a point made - how does the server know the client capabilities.

Example

- Client does bandwidth test and gets 2Mbps
- Client connects to the remote server does a getOBSConfig request
This includes codecs, server, stream key (so all configuration items) and also the bandwidth test results
- Server gets the info, but lets say wants to allow 4Mbps, but the bandwidth test says 2Mbps, the server can make an informed decision on what to send back, ie. not 4Mbps, perhaps not even 2Mbps, but say 1.6Mbps

Btw, I can make OBS crash in Windows quite easily, where do I report that, with repro steps, so it can be fixed ?

Still liking the encoder - good stuff!

Shamrock
 
Top