Simulcast
지원범위
규격
Chrome의 simulcast 구현
Firefox의 simulcast 구현
송출 (beta)
수신 (beta)
Last updated
Last updated
struct SimulcastFormat {
int width;
int height;
// The maximum number of simulcast layers can be used for
// resolutions at |widthxheigh|.
size_t max_layers;
// The maximum bitrate for encoding stream at |widthxheight|, when we are
// not sending the next higher spatial stream.
int max_bitrate_kbps;
// The target bitrate for encoding stream at |widthxheight|, when this layer
// is not the highest layer (i.e., when we are sending another higher spatial
// stream).
int target_bitrate_kbps;
// The minimum bitrate needed for encoding stream at |widthxheight|.
int min_bitrate_kbps;
};
// These tables describe from which resolution we can use how many
// simulcast layers at what bitrates (maximum, target, and minimum).
// Important!! Keep this table from high resolution to low resolution.
// clang-format off
const SimulcastFormat kSimulcastFormats[] = {
{1920, 1080, 3, 5000, 4000, 800},
{1280, 720, 3, 2500, 2500, 600},
{960, 540, 3, 900, 900, 450},
{640, 360, 2, 700, 500, 150},
{480, 270, 2, 450, 350, 150},
{320, 180, 1, 200, 150, 30},
{0, 0, 1, 200, 150, 30}
};const config = {
rtc: {
simulcast: true
},
media : {
video : {
width: 1280,
height: 720
}
}
}
const remon = new Remon({ config })// sdk v2.6.3 부터 지원
// RemonCast
RemonCast.builder()
.context( android_context )
.videoCodec( "VP8" )
.videoWidth( 1920 )
.videoHeight( 1080 )
.simulcast( true )
.build();
// RemonConference
var remonConferece = RemonConference()
remonConference.create {
it.context( android_context )
.videoWidth( 1920 )
.videoHeight( 1080 )
.videoCodec( "VP8" )
.simulcast( true )
}.then{
}.close{
}// sdk v2.6.15 부터 지원
// RemonCast
let remonCast = RemonCast()
remonCast.videoWidth = 1920
remonCast.videoHeight = 1080
remonCast.videoCodec = "VP8"
remonCast.simulcast = true
// RemonConference
var remonConference = RemonConference()
remonConference.create{ participant in
participant.videoWidth = 1920
participant.videoHeight = 1080
participant.videoCodec = "VP8"
participant.simulcast = true
}.then{ channel in
}.close{
}.error{ error in
}
// sdk v2.6.15 부터 지원
RemonCast *remonCast = [RemonCast new];
remonCast.videoWidth = 1920;
remonCast.videoHeight = 1080;
remonCast.videoCodec = "VP8";
remonCast.simulcast = true;const remon = new Remon()
remon.setVideoQulity('HIGH')
remon.setVideoQulity('LOW')// RemonCast
remonCast.switchSimulcastLayer( "HIGH" ); // "HIGH", "MEDIUM", "LOW"
// RemonConference
var participant = remonConference.getClient(1) as RemonParticipant
participant.switchSimulcastLayer( "LOW" )// RemonCast
let remonCast = RemonCast()
remonCast.switchSimulcastLayer(bandwidth:.HIGH) // .HIGH || .MEDIUM || .LOW
// RemonConference
let participant = remonConference.getClient(index: 1 )
participant?.switchSimulcastLayer(bandwidth:.LOW)// 2.4.21 부터 지원
RemonCast *remonCast = [RemonCast new];
// .HIGH || .MEDIUM || .LOW
[remonCast switchSimulcastLayerWithBandwidth:objc_RemonBandwidth.HIGH];