웹 브라우저는 최신 Chrome, Firefox를 지원합니다. WebRTC를 지원하는 여타 웹 브라우저에서 simulcast가 동작할 수 있습니다.
규격
송출 시 선택할 수 있는 해상도는 Capture resolution 컬럼의 값을 참고하십시오.
수신 시 선택되는 해상도는 송출 해상도와 layer 선택(HIGH, MEDIUM, LOW)에 따라 정해집니다. Layer 선택은 아래 "수신" 섹션에서 설명합니다.
Simulcast 내부에 대해 자세히 알고 싶으면, 아래 소스코드를 참고하시기 바랍니다.
structSimulcastFormat {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 offconst 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}};
Chrome의 simulcast 구현
Firefox의 simulcast 구현
송출 (beta)
송출 시 아래와 같이 simulcast: true설정을 적용합니다.
constconfig= { rtc: { simulcast:true }, media : { video : { width:1280, height:720 } }}constremon=newRemon({ config })
Web SDK는 fps를 낮추어 정해진 대역폭에서 움직임을 떨어뜨리고 고화질의 이미지를 보여주거나 maxBandwidth를 낮추어 저화질의 이미지를 보여주는 등의 최적화를 시도할 수 있습니다. 이런 설정은 추가적인 인코더의 연산을 일으키므로 가급적 변경하지 않는 것이 좋습니다. 필요하다면 입력장치의 설정을 변경하는 것이 좋습니다.
Android, iOS SDK는 fps, maxBandwidth 등 세부적인 조절은 불가능하며, 내부에 설정된 기준대로만 화질이 선택됩니다.
Simulcast를 적용한 송출은 모바일 기기의 CPU, 배터리 사용량을 다소 높이는 점에 유의하십시오.
수신 (beta)
수신 시 아래와 같이 Simulcast layer를 선택합니다. 선택지는 HIGH, MEDIUM, LOW입니다.