Adaptive bitrate control

rp.exch

New Member
Hi,

I want to set resolution and bitrate automatically as per viewer internet speed. Suppose viewer internet speed is low than stream resolution and bitrate should set low as per internet speed.

Example:
Publish stream is with 1280x720 1200K 30 fps. If viewer has low internet speed then it should set to 640x360 400K 30 fps.

Please suggest how i can achieve this.

Thanks.
 

Max

Administrator
Staff member
Good day.
Publish stream is with 1280x720 1200K 30 fps. If viewer has low internet speed then it should set to 640x360 400K 30 fps.
In this case, stream should be transcoded to desired resolution/bitrate.
Let's suppose you plaing the stream as WebRTC. You can check viewer channel quality at client side as described here, and, if quality is bad, stop the playing stream and request it with desired constraints:
Code:
session.createStream({
    name:"stream1",
    constraints: {
        audio:true,
        video: {
            width:640,
            height:360,
            bitrate: 400
        }
    }
}).play();
Please note that stream transcoding requires server CPU and memory resources (1 CPU core per 2 720p streams encoded, or per 3 480p streams encoded, and at least 32 Gb RAM/16 Gb Java heap for WCS process).
If you have a many different streams to view and a many viewers, it's recommended to deploy CDN with Origin server to publish stream, Transcoder server to transcode and Edge servers to play. Please read details here.
For HLS playback, ABR feature is supported. This feature also work in CDN only and requires transcoding. Please read details here.
 

rp.exch

New Member
Hi,

Do we have anything that can automatically adjust bitrate as per internet speed without doing anything?

Thanks
 

Max

Administrator
Staff member
>Do we have anything that can automatically adjust bitrate as per internet speed without doing anything?

Desired bitrate should be passed before subscribing (playing) on the stream. It won't be changed automatically for each viewer.
 
Top