AgoraWebSDK NG API Docs

注意:

Agora Web SDK NG 是通过 HTML 网页加载的 JavaScript 和 Typescript 库。你可以使用 Agora Web SDK NG 在网页浏览器中调用 API 建立连接,控制音视频通话和直播服务。

Agora Web SDK NG 支持所有的主流浏览器,详见浏览器支持

请务必使用 HTTPS 协议或者 localhost,否则 SDK 无法正常工作。

阅读建议

  • Agora 建议你在查看 API 注释前先阅读功能文档
  • 你可以通过页面右上方的搜索功能快速查找 API。
  • SDK 运行遇到错误时,你可参考错误码文档

全局模块

AgoraRTC 是 Agora Web SDK NG 中所有可调用方法的入口,主要包含以下方法。

核心方法

方法 描述
createClient 创建本地客户端

本地音视频采集

方法 描述
createMicrophoneAudioTrack 通过麦克风创建一个音频轨道对象
createCameraVideoTrack 通过摄像头创建一个视频轨道对象
createMicrophoneAndCameraTracks 同时创建麦克风音频轨道和摄像头视频轨道
createScreenVideoTrack 通过屏幕共享创建一个视频轨道对象
createBufferSourceAudioTrack 通过音频文件创建一个音频轨道对象
createCustomAudioTrack 创建一个自定义的音频轨道对象
createCustomVideoTrack 创建一个自定义的视频轨道对象

媒体设备查询

方法 描述
getDevices 获取媒体设备列表
getCameras 获取摄像头列表
getMicrophones 获取麦克风列表
getPlaybackDevices 获取音频播放设备列表
getElectronScreenSources 获取 Electron 屏幕共享源列表

日志管理

方法 描述
enableLogUpload 打开日志上传功能
disableLogUpload 关闭日志上传功能
setLogLevel 设置日志等级

全局事件回调

回调 描述
onCameraChanged 视频采集设备状态变化回调
onMicrophoneChanged 音频采集设备状态变化回调
onAudioAutoplayFailed 音频轨道自动播放失败回调

其他

方法 描述
checkSystemRequirements 检测浏览器兼容性
getSupportedCodec 获取支持的编码格式
createChannelMediaRelayConfiguration 创建跨频道媒体流转发的配置对象

AgoraRTCClient 类

调用 createClient 创建一个本地客户端对象 AgoraRTCClient,代表一个通话中的本地用户。AgoraRTCClient 类提供音视频通话的核心功能,主要包含以下方法。

方法 描述
join 加入频道
leave 离开频道
publish 发布本地音视频轨道
unpublish 取消发布本地音视频轨道
subscribe 订阅远端用户的音视频轨道
unsubscribe 取消订阅远端用户的音视频轨道

LocalTrack 类

LocalTrack 是 Agora Web SDK NG 中定义本地音视频轨道的抽象类,可用于本地播放和发布。

SDK 通过不同的方式创建不同的 LocalTrack,返回不同的 LocalTrack 派生类对象。以下列举了所有的 LocalTrack 派生类以及所对应的创建方式。

本地音频轨道

根据创建方式的不同,本地音频轨道可分为以下三种。其中 LocalAudioTrack 派生自 LocalTrackMicrophoneAudioTrackBufferSourceAudioTrack 派生自 LocalAudioTrack

本地音频轨道 描述
LocalAudioTrack 最基础的本地音频轨道对象,包含了基础的本地音频控制,如播放、设置音量控制。
通过调用 AgoraRTC.createCustomAudioTrack 创建。
MicrophoneAudioTrack 本地麦克风音频轨道对象,比 LocalAudioTrack 多一些控制麦克风的方法。
通过调用 AgoraRTC.createMicrophoneAudioTrack 创建。
BufferSourceAudioTrack 通过读取音频数据源创建的本地音频轨道,比基础的 LocalAudioTrack 多一些控制音频数据源的方法。
通过调用 AgoraRTC.createBufferSourceAudioTrack 创建。

本地视频轨道

根据创建方式的不同,本地视频可分为以下两种。其中 LocalVideoTrack 派生自 LocalTrackCameraVideoTrack 派生自 LocalVideoTrack

本地视频轨道 描述
LocalVideoTrack 最基础的本地视频轨道对象,包含了基础的本地视频控制,如播放、美颜。
通过调用 AgoraRTC.createCustomVideoTrackAgoraRTC.createScreenVideoTrack 创建。
CameraVideoTrack 本地摄像头视频轨道对象,比 LocalVideoTrack 多一些控制摄像头和编码参数的方法。
通过调用 AgoraRTC.createCameraVideoTrack 创建。

RemoteTrack 类

RemoteTrack 是 Agora Web SDK NG 中用于定义远端音视频轨道的抽象类。

在实际操作中,你需要先调用 AgoraRTCClient.subscribe 订阅远端用户,然后从远端用户对象 AgoraRTCRemoteUser 中获取派生自 RemoteTrackRemoteAudioTrack 对象和 RemoteVideoTrack 对象。

引入方式

如果你通过 <script> 的方式引入 Agora Web SDK NG,可以通过访问 AgoraRTC.createClient 来获取导出的模块。

如果你通过 npm 或者模块化的方式引入 Agora Web SDK NG,可以通过以下方式访问 AgoraRTC:

import AgoraRTC from "agora-rtc-sdk-ng";
console.log(AgoraRTC.createClient);

类型模块(适用于 Typescript)

对于 Typescript 开发者,我们提供了 .d.ts 文件导出详细的类型定义。你可以查看 API 文档的 Global 页面,该页面列出了所有 SDK 导出的模块和类型。

import AgoraRTC, { IAgoraRTCClient } from "agora-rtc-sdk-ng";

const client: IAgoraRTCClient = AgoraRTC.createClient();

错误码

SDK 可能以下列方式抛出错误码:

  • 对于异步方法,SDK 返回 Promise 来通知异步操作的结果,Promise 被 reject 时 SDK 会抛出相应的错误码。
  • 同步方法调用失败时,SDK 直接抛出错误码。
  • SDK 内部运行过程中,也可能抛出一些网络相关的错误码。

你可参考本文了解这些错误码的详细含义及处理方法。

通用错误码

错误码 描述 处理方法
UNEXPECTED_ERROR 无法处理的、非预期的错误,通常这个错误会有具体的错误提示。
UNEXPECTED_RESPONSE 服务端返回了非预期的响应。
INVALID_PARAMS 非法参数。 根据具体提示确认操作,并根据文档传入正确的参数。
NOT_SUPPORTED 浏览器不支持。 参考浏览器支持情况
INVALID_OPERATION 非法操作,通常是因为在当前状态不能进行该操作。 确认操作的先后顺序,比如发布前请确认已经加入频道。
OPERATION_ABORTED 操作中止,通常是因为网络质量差或连接断开导致与 Agora 服务器通信失败。 通过 network-quality 回调确认本地网络状况,并重试该操作。
WEB_SECURITY_RESTRICT 浏览器安全策略限制。 请确保 Web 页面运行在安全环境中。

请求相关错误码

网络连接

错误码 描述 处理方法
NETWORK_TIMEOUT 请求超时,通常是因为网络质量差或连接断开导致与 Agora 服务器通信失败。 通过 network-quality 回调确认本地网络状况,并重试该操作。
NETWORK_RESPONSE_ERROR 响应错误,一般是状态码非法。 确认操作的参数是否正确,并根据文档传入正确的参数。
NETWORK_ERROR 无法定位的网络错误。

SDK 内部请求

错误码 描述 处理方法
WS_ABORT 请求 Agora 服务器过程中 WebSocket 断开。 监听 connection-state-change 事件,待连接状态变为 CONNECTED 后重试。
WS_DISCONNECT 请求 Agora 服务器前,WebSocket 就已经断开。 监听 connection-state-change 事件,待连接状态变为 CONNECTED 后重试。
WS_ERR WebSocket 连接发生错误。 检查当前浏览器对 WebSocket 的支持情况。

设备管理相关错误码

错误码 描述 处理方法
ENUMERATE_DEVICES_FAILED 枚举本地设备失败,一般是由于浏览器限制。
DEVICE_NOT_FOUND 无法找到指定设备。 传入正确的设备 ID。

Track 相关错误码

错误码 描述 处理方法
TRACK_IS_DISABLED 轨道被禁用,通常因为轨道设置了 Track.setEnabled(false) 对该轨道调用 Track.setEnabled(true) 后再进行操作。
SHARE_AUDIO_NOT_ALLOWED 屏幕共享音频时终端用户没有点击分享音频 要求终端用户在弹出的屏幕共享窗口中勾选分享音频
CHROME_PLUGIN_NO_RESPONSE Chrome 屏幕共享插件无响应。 确认 Chrome 屏幕共享插件的状态或重新安装屏幕共享插件。
CHROME_PLUGIN_NOT_INSTALL Chrome 屏幕共享插件没有安装。 安装Chrome 屏幕共享插件
MEDIA_OPTION_INVALID 不支持的媒体采集的参数。 修改媒体采集参数或使用 SDK 预设的配置。
CONSTRAINT_NOT_SATISFIED 不支持的媒体采集的参数。 修改媒体采集参数或使用 SDK 预设的配置。
PERMISSION_DENIED 获取媒体设备权限被拒绝。 在弹出的获取设备权限窗口中选择允许
FETCH_AUDIO_FILE_FAILED 下载在线音频文件失败。 填入正确的在线音频地址,并确保可以正常访问。
READ_LOCAL_AUDIO_FILE_ERROR 读取本地音频文件失败。 填入正确的本地音频文件路径。
DECODE_AUDIO_FILE_FAILED 音频文件解码失败,可能是因为音频文件的编码格式是浏览器 WebAudio 不支持的编码格式。 检查浏览器 WebAudio 是否支持音频文件的编码格式。

Client 相关错误码

加入频道

错误码 描述 处理方法
UID_CONFLICT 同一个频道内 UID 重复。 使用不同的 UID 进入频道。
INVALID_UINT_UID_FROM_STRING_UID String UID 分配服务返回了非法的 int UID。 使用不同的 UID 进入频道。
CAN_NOT_GET_PROXY_SERVER 无法获取云代理服务地址。
CAN_NOT_GET_GATEWAY_SERVER 无法获取 Agora 服务器地址。

发布/取消发布

错误码 描述 处理方法
INVALID_LOCAL_TRACK 传入了非法的 LocalTrack。 检查传入的 Track,并传入正确的 LocalTrack。
CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS 一个 Client 发布多个视频轨道。 一个 Client 同一时间只能发布一个视频轨道,如果想发布多个视频轨道请创建多个 Client。

订阅/取消订阅

错误码 描述 处理方法
INVALID_REMOTE_USER 非法的远端用户,可能是远端用户不在频道内或还未发布任何媒体轨道。 收到 user-published 事件后再进行订阅操作。
REMOTE_USER_IS_NOT_PUBLISHED 远端用户已发布了音频或视频轨道,但不是与你的订阅操作所指定的类型不符。 请确保订阅操作传入的轨道类型需要与 user-published 事件给出的类型一致,或者在订阅前通过 AgoraRTCRemoteUser.hasVideoAgoraRTCRemoteUser.hasAudio 确认远端用户是否发布了该类型的轨道。

推流到 CDN

错误码 描述 处理方法
LIVE_STREAMING_TASK_CONFLICT 推流任务已经存在。 先调用Client.stopLiveStreaming 停止该推流任务再重新进行推流操作。
LIVE_STREAMING_INVALID_ARGUMENT 推流参数错误。 参考 Client.startLiveStreaming 的 API 文档检查推流操作的参数。
LIVE_STREAMING_INTERNAL_SERVER_ERROR 推流服务器内部错误。 重新进行推流操作,如果仍然失败,刷新页面重试。
LIVE_STREAMING_PUBLISH_STREAM_NOT_AUTHORIZED 推流 URL 被占用。 检查填入的 URL 是否被占用。
LIVE_STREAMING_CDN_ERROR 推流的目标 CDN 出现错误导致推流失败。 确认目标 CDN 的健康状况。
LIVE_STREAMING_INVALID_RAW_STREAM 推流超时。 确认目标流是否存在。

跨频道连麦

错误码 描述
CROSS_CHANNEL_WAIT_STATUS_ERROR 等待 "channel-media-relay-state" 回调出错。
CROSS_CHANNEL_FAILED_JOIN_SRC 发起跨频道转发媒体流请求失败。
CROSS_CHANNEL_FAILED_JOIN_DEST 接受跨频道转发媒体流请求失败。
CROSS_CHANNEL_FAILED_PACKET_SENT_TO_DEST 服务器接收跨频道转发媒体流失败。
CROSS_CHANNEL_SERVER_ERROR_RESPONSE 服务器响应出错。