ar-rtc-sdk
Version:
For publishing npm package anyrtc SDK (Web). Get more information from https://www.anyrtc.io.
135 lines (92 loc) • 11.2 kB
Markdown
---
id: overview
title: ArRTC Web SDK API Docs
sidebar_label: Web API 概览
---
# AnyRTC Web SDK API Reference
The AnyRTC Web SDK (WebRTC) is a JavaScript library loaded by an HTML web page. The Ar Web SDK NG library uses APIs in the web browser to establish connections and control the communication and live broadcast services.
> Ensure that you use the HTTPS protocol or localhost, otherwise the error WEB_SECURITY_RESTRICT occurs.
注意:
本文适用于 anyrtc Web SDK,这是 anyrtc Web SDK 的全量重构版本。如果你使用的是旧版 anyrtc Web SDK,请参考[这里](https://docs.anyrtc.io/rtc-web)。
anyrtc Web SDK 是通过 HTML 网页加载的 JavaScript 和 Typescript 库。你可以使用 anyrtc Web SDK 在网页浏览器中调用 API 建立连接,控制音视频通话和直播服务。
anyrtc Web SDK 支持所有的主流浏览器,详见[浏览器支持](https://docs.anyrtc.io/rtc-web/docs/#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7)。
> 请务必使用 HTTPS 协议或者 localhost,否则 SDK 无法正常工作。
### 核心方法
| 方法 | 描述 |
| ----------------------------------------- | -------------- |
| [createClient](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc#createclient) | 创建本地客户端 |
### 本地音视频采集
| 方法 | 描述 |
| ------------------------------------------------------------ | -------------------------------------- |
| [createMicrophoneAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createmicrophoneaudiotrack) | 通过麦克风创建一个音频轨道对象 |
| [createCameraVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createcameravideotrack) | 通过摄像头创建一个视频轨道对象 |
| [createMicrophoneAndCameraTracks](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createmicrophoneandcameratracks) | 同时创建麦克风音频轨道和摄像头视频轨道 |
| [createScreenVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createscreenvideotrack) | 通过屏幕共享创建一个视频轨道对象 |
| [createBufferSourceAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createbuffersourceaudiotrack) | 通过音频文件创建一个音频轨道对象 |
| [createCustomAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createcustomaudiotrack) | 创建一个自定义的音频轨道对象 |
| [createCustomVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createcustomvideotrack) | 创建一个自定义的视频轨道对象 |
### 媒体设备查询
| 方法 | 描述 |
| ------------------------------------------------------------ | ---------------------------- |
| [getDevices](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#getdevices) | 获取媒体设备列表 |
| [getCameras](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#getcameras) | 获取摄像头列表 |
| [getMicrophones](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#getmicrophones) | 获取麦克风列表 |
| [getElectronScreenSources](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#getelectronscreensources) | 获取 Electron 屏幕共享源列表 |
### 日志管理
| 方法 | 描述 |
| ----------------------------------------------------- | ---------------- |
| [enableLogUpload](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#enablelogupload) | 打开日志上传功能 |
| [disableLogUpload](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#disablelogupload) | 关闭日志上传功能 |
| [setLogLevel](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#setloglevel) | 设置日志等级 |
### 全局事件回调
| 方法 | 描述 |
| ------------------------------------------------------------ | -------------------------- |
| [onCameraChanged](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#oncamerachanged) | 通知有摄像头设备插入或拔出 |
| [onMicrophoneChanged](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#onmicrophonechanged) | 通知有麦克风设备插入或拔出 |
### 其他
| 方法 | 描述 |
| ------------------------------------------------------------ | ------------------------------ |
| [checkSystemRequirements](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#checksystemrequirements) | 检测浏览器兼容性 |
| [getSupportedCodec](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#getsupportedcodec) | 获取支持的编码格式 |
## ArRTCClient
调用 [createClient](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createclient) 创建一个本地客户端对象 [ArRTCClient](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc_client/),代表一个通话中的本地用户。`ArRTCClient` 类提供音视频通话的核心功能,主要包含以下方法。
| 方法 | 描述 |
| --------------- | ---------------------------- |
| [join](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc_client/#join) | 加入频道 |
| [leave](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc_client/#leave) | 离开频道 |
| [publish](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc_client/#publish) | 发布本地音视频轨道 |
| [unpublish](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc_client/#unpublish) | 取消发布本地音视频轨道 |
| [subscribe](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc_client/#subscribe) | 订阅远端用户的音视频轨道 |
| [unsubscribe](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc_client/#unsubscribe) | 取消订阅远端用户的音视频轨道 |
## LocalTrack
`LocalTrack` 是 anyrtc Web SDK 中定义本地音视频轨道的抽象类,可用于本地播放和发布。
SDK 通过不同的方式创建不同的 `LocalTrack`,返回不同的 `LocalTrack` 派生类对象。以下列举了所有的 `LocalTrack` 派生类以及所对应的创建方式:
### 本地音频轨道
根据创建方式的不同,本地音频轨道可分为以下三种。其中 `LocalAudioTrack` 派生自 `LocalTrack`,`MicrophoneAudioTrack` 和 `BufferSourceAudioTrack` 派生自 `LocalAudioTrack`。
| 本地音频轨道 | 描述 |
| -------------------------- | ------------------------------------------------------------ |
| [LocalAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_local_audio_track/) | 最基础的本地音频轨道对象,包含了基础的本地音频控制,如播放、设置音量控制。 通过调用 [ArRTC.createCustomAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createcustomaudiotrack) 创建。 |
| [MicrophoneAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_microphone_audio_track/) | 本地麦克风音频轨道对象,比 [LocalAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_local_audio_track/) 多一些控制麦克风的方法。 通过调用 [ArRTC.createMicrophoneAudioTrack](interfaces/i_rtc.md#createmicrophoneaudiotrack) 创建。 |
| [BufferSourceAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_buffer_source_audio_track/) | 通过读取音频数据源创建的本地音频轨道,比基础的 [LocalAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_local_audio_track/) 多一些控制音频数据源的方法。 通过调用 [ArRTC.createBufferSourceAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createbuffersourceaudiotrack) 创建。 |
### 本地视频轨道
根据创建方式的不同,本地视频可分为以下两种。其中 `LocalVideoTrack` 派生自 `LocalTrack`,`CameraVideoTrack` 派生自 `LocalVideoTrack`。
| 本地视频轨道 | 描述 |
| -------------------- | ------------------------------------------------------------ |
| [LocalVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_local_video_track/) | 最基础的本地视频轨道对象,包含了基础的本地视频控制,如播放、美颜。 通过调用 [ArRTC.createCustomVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createcustomvideotrack) 或 [ArRTC.createScreenVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createscreenvideotrack) 创建。 |
| [CameraVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_camera_video_track/) | 本地摄像头视频轨道对象,比 [LocalVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_local_video_track/) 多一些控制摄像头和编码参数的方法。 通过调用 [ArRTC.createCameraVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createcameravideotrack) 创建。 |
## RemoteTrack
`RemoteTrack` 是 anyrtc Web SDK 中用于定义远端音视频轨道的抽象类。
在实际操作中,你需要先调用 [ArRTCClient.subscribe](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc_client/#subscribe) 订阅远端用户,然后从远端用户对象 [ArRTCRemoteUser](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_remote_user/) 中获取派生自 `RemoteTrack` 的 [RemoteAudioTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_remote_audio_track/) 对象和 [RemoteVideoTrack](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_remote_video_track/) 对象。
## 引入方式
如果你通过 `<script>` 的方式引入 anyrtc Web SDK,可以通过访问 [ArRTC.createClient](https://docs.anyrtc.io/rtc-web/docs/api/interfaces/i_rtc/#createclient) 来获取导出的模块。
如果你通过 `npm` 或者模块化的方式引入 anyrtc Web SDK,可以通过以下方式访问 `ArRTC`:
```javascript
import ArRTC from "ar-rtc-sdk";
console.log(ArRTC.createClient);
```
## 类型模块(用户 Typescript)
对于 Typescript 开发者,我们提供了 `.d.ts` 文件导出详细的类型定义。你可以查看 API 文档的 [Global](https://docs.anyrtc.io/rtc-web/docs/api/globals) 页面,该页面列出了所有 SDK 导出的模块和类型。
```typescript
import ArRTC, { IArRTCClient } from "ar-rtc-sdk";
const client: IArRTCClient = ArRTC.createClient();
```