
# 主入口（HRTC）
本章节介绍了Web SDK的HRTC接口详情。
表1主入口接口 
| 接口                                                            | 描述                                                                                                                                                                                                         |
|:---|:---|
| [checkSystemRequirements] | 检测浏览器是否兼容SparkRTC Web SDK。 须知： 如果Web SDK版本在2.0.2到2.0.9.300之间，需要在2023年10月29日前更新至2.0.9.301及之后的版本，否则会导致checkSystemRequirements接口不可用。影响范围为微信浏览器。 |
| [VERSION]                  | 获取SparkRTC Web SDK版本。                                                                                                                                                                                      |
| [getDevices]             | 获取媒体输入输出设备列表。                                                                                                                                                                                              |
| [getCameras]              | 获取摄像头设备列表。                                                                                                                                                                                                 |
| [getMicrophones]          | 获取麦克风设备列表。                                                                                                                                                                                                 |
| [getSpeakers]              | 获取扬声器设备列表。                                                                                                                                                                                                 |
| [isScreenShareSupported] | 检查是否支持屏幕共享。                                                                                                                                                                                                |
| [createClient]           | 创建一个实时音视频通话的客户端对象。一个Client对应于一个房间。                                                                                                                                                                         |
| [createStream]            | 创建一个本地流对象。流分为主流和辅流。主流指从摄像头和麦克风采集的音视频流，辅流是从共享屏幕采集的音视频流。                                                                                                                                                     |
| [setLogLevel]             | 设置日志级别。                                                                                                                                                                                                    |
   
 #### checkSystemRequirements
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/notice_3.0-zh-cn.png)
如果Web SDK版本在2.0.2到2.0.9.300之间，需要在2023年10月29日前更新至2.0.9.301及之后的版本，否则会导致checkSystemRequirements接口不可用。影响范围为微信浏览器。
```
async checkSystemRequirements(strictCheckBrowser?: boolean, direction?: DirectionEnum): Promise<true | RtcError>
```
【**功能说明**】
加入房间前必须要调用，检测浏览器是否兼容SparkRTC Web SDK。
【**请求参数**】
strictCheckBrowser：可选，boolean类型，默认值为true 。true表示使用白名单放通支持的移动端浏览器（白名单由华为侧统一配置管理），false表示不使用白名单，该参数为2.0.2版本新增。
direction：可选DirectionEnum类型，默认值"sendrecv"，2.0.9.543版本新增。
```
DirectionEnum枚举值：
sendrecv：既发送又接收的场景
sendonly：只发送不接收的场景
recvonly：只接收不发送的场景。
```
【**返回参数**】
Promise\<true \| RtcError\>：返回一个Promise对象，true表示浏览器兼容SparkRTC Web SDK，如果不兼容，则返回对应Error错误码。
 #### VERSION
```
VERSION
```
【**功能说明**】
获取 SparkRTC Web SDK 版本。
【**请求参数**】
无
【**返回参数**】
string：SDK当前版本号。
 #### getDevices
```
(static) getDevices(): Promise<MediaDeviceInfo[]>
```
【**功能说明**】
获取媒体输入输出设备列表。在用户未授权摄像头或麦克风访问权限之前，"label"及"deviceId"可能为空。因此，建议在用户授权访问后，再调用此接口获取设备列表。
授权浏览器的摄像头/麦克风访问权限的方法，请参见[授权浏览器摄像头/麦克风访问权限的方法](https://support.huaweicloud.com/csdk-rtc/rtc_05_0147.html)。
【**请求参数**】
无
【**返回参数**】
Promise\<MediaDeviceInfo\[\]\>：媒体输入输出设备列表。[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo)为Web API基本接口。
 #### getCameras
```
(static) getCameras(): Promise<MediaDeviceInfo[]>
```
【**功能说明**】
获取摄像头设备列表。在用户未授权摄像头访问权限之前，"label"及"deviceId" 可能为空。因此建议在用户授权访问后，再调用此接口获取设备列表。
授权浏览器的摄像头/麦克风访问权限的方法，请参见[授权浏览器摄像头/麦克风访问权限的方法](https://support.huaweicloud.com/csdk-rtc/rtc_05_0147.html)。
【**请求参数**】
无
【**返回参数**】
Promise\<MediaDeviceInfo\[\]\>：摄像头设备列表。[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo) 为Web API基本接口。
 #### getMicrophones
```
(static) getMicrophones(): Promise<MediaDeviceInfo[]>
```
【**功能说明**】
获取麦克风设备列表。在用户未授权麦克风访问权限之前，"label"及"deviceId"可能为空。因此建议在用户授权访问后，再调用此接口获取设备列表。
授权浏览器的摄像头/麦克风访问权限的方法，请参见[授权浏览器摄像头/麦克风访问权限的方法](https://support.huaweicloud.com/csdk-rtc/rtc_05_0147.html)。
【**请求参数**】
无
【**返回参数**】
Promise\<MediaDeviceInfo\[\]\>：麦克风设备列表。[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo)为Web API基本接口。
 #### getSpeakers
```
(static) getSpeakers(): Promise<MediaDeviceInfo[]>
```
【**功能说明**】
获取扬声器设备列表。
【**请求参数**】
无
【**返回参数**】
Promise\<MediaDeviceInfo\[\]\>：扬声器设备列表。[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo)为Web API基本接口。
 #### isScreenShareSupported
```
(static) isScreenShareSupported(): boolean
```
【**功能说明**】
检查浏览器是否支持屏幕共享。
【**请求参数**】
无
【**返回参数**】
boolean：true表示支持，false表示不支持。
 #### createClient
```
(static)createClient(config: ClientConfig): Client
```
【**功能说明**】
创建一个实时音视频通话的客户端对象。一个客户端对象只能同时加入一个房间。可以创建多个客户端对象同时加入多个房间。
【**请求参数**】
config：必选，ClientConfig类型, 客户端对象配置信息。
ClientConfig定义为：{
- appId：必选，string\[128\]类型，应用ID，只有App ID相同的应用程序才能进入同一个房间进行互动。应用的appId请参考[应用管理](https://support.huaweicloud.com/usermanual-rtc/rtc_04_0001.html)进行获取。
- domain：可选，string\[128\]类型，服务器的域名。需要与注册到SparkRTC平台的合法企业域名保持一致，该参数在SDK 1.0+版本中必填，SDK 2.0+版本中非必填。
- countryCode: 可选，string\[2\]类型，需要满足**ISO 3166-1** 的2位字母的国家码要求。表示业务接入点的国家码，SDK会根据设置将业务接入到对应区域的服务，如：CN表示中国大陆，US表示美国，HK表示中国香港。countryCode值的填写具体请参见[国家码对照表](https://support.huaweicloud.com/csdk-rtc/rtc_05_0352.html)。该参数为2.0.3版本新增，且为必选参数，从2.0.7版本开始，修改为可选参数。
 
}
【**返回参数**】
Client：客户端对象。
 #### createStream
```
(static) createStream(config: StreamConfig): Stream
```
【**功能说明**】
创建本地流对象。
【**请求参数**】
config：必选，StreamConfig类型，指定创建流的参数。
StreamConfig 定义为：{
- screen：可选，boolean类型，如果为true表示该流对象采集的是辅流音视频。辅流即共享屏幕的流。默认值为false，即该流对象采集的是主流音视频。
- video：可选，boolean类型，指定是否采集主流的视频，主流即摄像头的流。默认值为false。
- audio：可选，boolean类型，指定是否采集主流的音频。默认值为false。screen为false的时候该参数有效。
- microphoneId：可选，string类型，在audio为true的时候有效，表示采集音频的源麦克风设备Id。如果不传，系统自动设置默认值。
- cameraId：可选，string类型，在video为true的时候有效，表示采集视频的摄像头设备Id。如果不传，系统自动设置默认值。
- facingMode：可选，string类型，在video为true的时候有效，user表示前置摄像头，environment表示后置摄像头。
- screenAudio：可选，boolean类型，是否包含屏幕共享背景音。默认值为false。该功能仅支持Windows平台Chrome浏览器 74及以上版本。该字段为1.4.0版本新增。
- audioSource：可选，MediaStreamTrack类型，表示输入音轨对象。通过指定Track设置音频。[MediaStreamTrack](https://developer.mozilla.org/zh-CN/docs/Web/API/MediaStreamTrack)为Web API基本接口。
- videoSource：可选，MediaStreamTrack类型，表示输入视轨对象。通过指定Track设置主流视频。[MediaStreamTrack](https://developer.mozilla.org/zh-CN/docs/Web/API/MediaStreamTrack)为Web API基本接口。
- mirror：可选，boolean类型，表示主流的本地视频是否镜像。默认值为false。
- userId：可选，string类型，表示该流归属的userId。
 
}
【**返回参数**】
Stream：流对象。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 在采集主流有两种方式：
  - 通过"audioSource"和"videoSource"设置音频和视频主流。这种模式下不支持大小流。
  
  - 通过"audio/microphoneId"和"video/cameraId/facingMode"设置音频和视频主流。
   
- 如果未指定任何的音频源和视频源，则创建的流对象不包含音频流和视频流，无法播放。
- 如果采集视频，同一个Stream对象不能同时采集主流和辅流。
- 如果需要包含屏幕共享背景音，需要设置screen和screenAudio均为true，该参数仅在1.4.0 及以上版本生效。
 
 #### setLogLevel
```
(static) setLogLevel(level: LogLevel): void
```
【**功能说明**】
设置日志输出等级。默认输出info等级日志。
【**请求参数**】
level：必选，LogLevel类型，设置日志级别。
LogLevel表示日志级别，枚举取值如下：
- none：string类型，表示关闭SDK日志打印。
- error：string类型，表示开启SDK错误日志级别。
- warn：string类型，表示开启SDK警告日志级别。
- info：string类型，表示开启SDK信息日志级别。
- debug：string类型，表示开启SDK调试日志级别。
【**返回参数**】
无
