Web/H5 RTC SDK 函数参考

适用 匹配目标版本 同批交付的 @akstream/rtc-web-sdk。H5 的 AkRtcH5Client 是 AkRtcWebClient 的别名;Android WebView 和 iOS WKWebView 也使用这套浏览器接口,但媒体权限、证书和前后台由原生宿主处理。这里列 SDK 公开方法,页面布局不属于 SDK。先按Web 接入步骤完成只看入会,再查本页。

import { AkRtcWebClient } from '@akstream/rtc-web-sdk'
const client = new AkRtcWebClient(serverUrl, { onState: (state, detail) => console.log(state, detail) })
const joined = await client.join(roomId, accessTicket, { platform: 'pc-web' })
if (joined.admissionStatus === 'Admitted') await client.startCameraAndMicrophone({ audio: true, video: true })

serverUrl 是该设备可访问、可信的 AKStream.Next HTTPS 根地址;accessTicket 是业务后端为此人、此会议签的一次性票据。除特别注明外,异步方法失败会拒绝 Promise。401 应重新向业务后端取票或登录,403 表示当前角色/设备/权限不允许,不能无限重试;retryable 缺失表示未知,不等于允许重试。

会话与身份

函数 入参 返回 用途与特殊情况
new AkRtcWebClient(serverUrl, events?) HTTPS 服务地址;可选事件回调对象 客户端实例 每个会议会话创建一份;不要把平台 API Token 放进浏览器。
join(roomId, accessTicket, options?) 房间 ID、一次性票据;options 可设 autoSubscribe、passcode、platform、clientVersion RtcJoinResult:成员、participantToken、到期时间、最终能力、admissionStatus 票据消费后不能重放;Waiting 只表示进入等候室,尚不能采集/发布。SDK负责设备令牌续签。
createMeeting(settings, creator) 房间设置;由业务后端实现的 creator(settings) 回调 {roomId, accessTicket, ...} SDK传递幂等请求标识并校验结果;回调不得把管理令牌交给终端。创建失败重试使用相同业务参数。
listDemoRooms()、createDemoMeeting(settings)、issueDemoAccessTicket(options) Demo 房间/票据参数 Demo 房间列表、建会结果或测试票据 只用于独立测试环境,正式业务用业务后端签票。
listMembers() 无 成员 ID、名称、角色、状态列表 房间快照;人员离会、换机和主持移交后重新取或监听事件。
refreshMedia() 无 Promise<void> 重新核对当前发布/订阅;网络恢复时 SDK 已自动重连,页面无需循环调用。
leave(options?) 可选离会参数 Promise<void> 当前设备离会并释放媒体、信令与订阅;路由切换/页面销毁只走一条清理路径。

RtcJoinResult.capabilities 是服务端最终授予的能力,不等于客户端请求的能力;participantToken 由 SDK 管理,不要持久化或打印。admissionStatus 为 Admitted、Waiting 或拒绝状态时,宿主以回调/结果更新页面。

本机采集、设备与共享

函数 入参 返回 用途与特殊情况
startCameraAndMicrophone(options?) audio/video 开关、设备 ID、前/后摄像头、宽高和帧率期望 MediaStream 用户手势后申请权限并尝试发布。返回本机流不代表对方已收到,须核对发布和远端帧。
getLocalMediaState() 无 micEnabled/cameraEnabled/screenSharing 及允许状态 读取当前实际状态,按钮不要在点击时自行翻转。
setTrackEnabled(kind, enabled) MicrophoneAudio 或 CameraVideo;布尔值 Promise<void> 本机静音/关相机;主持人收权或系统拒绝时不能靠再次设为 true 绕过。
recoverLocalMedia() 无 Promise<void> 显式尝试恢复本机采集;设备被占用、系统授权或主持收权仍可能阻止恢复。
listMicrophones()、listCameras() 无 设备 ID、组 ID、名称列表 未授权前设备名称可能为空;设备拔插后重新查询。
setMicrophoneDevice(deviceId)、setCameraDevice(deviceId) 浏览器返回的设备 ID 新 MediaStreamTrack 或 null 切换实际输入;旧设备失效或权限取消时处理拒绝。
getInputDeviceState() 无 当前麦克风与摄像头设备 ID 用于同步设备选择控件,不把 ID 当成跨会稳定硬件身份。
switchCamera(deviceIdOrOptions?) 摄像头 ID 或采集选项 新视频轨 移动端常用于前后摄切换;结果以新轨道和状态回调为准。
getVideoModes()、setCameraQuality(quality) 质量含目标宽、高、帧率 可用模式;质量结果或 pending 目标模式受设备与主持策略限制;pending 不是实际已达到。
startScreenShare()、stopScreenShare() 开始需浏览器用户手势和系统选择器;停止无参 MediaStream / void 屏幕是独立发布;用户在系统界面停止时监听 onScreenShareEnded。
getScreenShareSupport() 无 {available, reason} 先判断当前浏览器/宿主是否具备共享能力。
getCameraOverlaySupport()、startCameraOverlay(element) 视频元素 支持状态 / void 画中画能力受浏览器与宿主限制;不改变服务端发布。

远端媒体与画面

函数 入参 返回 用途与特殊情况
listPublications() 无 RtcPublication[] 一位成员可以有摄像头、麦克风和屏幕等多路;以 publicationId 区分。
syncSubscriptions(publications) 当前可见发布列表 每项 PromiseSettledResult<void> 为列表核对订阅;逐项失败不会让其他订阅全部丢失。
attachRemoteMedia(subscriptionId, element, options?) 订阅 ID、audio/video 元素、可选音量/旋转 Promise<void> 把已收到的轨道绑定到宿主元素;浏览器自动播放限制仍需用户点击。
detachRemoteMedia(subscriptionId, element) 同一订阅 ID 与元素 void 移除视图时解除绑定;远端离开时也监听 onRemoteTrackRemoved。
attachLocalPreview(element, stream) 本机 video、本机流或 null {hasVideo} 本机预览应静音,避免扬声器回授。
setRemoteAudioVolume(subscriptionId, volume) 订阅 ID、0~1 音量 实际音量数字 仅改变本机播放,不对远端执行静音治理。
setRemoteVideoTransform(subscriptionId, transform?)、setRemotePresentation(publicationId, transform?) 镜像、翻转、旋转 标准化变换 本地显示变换不改录制原轨;订阅与发布 ID 不可混用。
getRemotePresentation(publicationId)、setLocalVideoTransform(element, transform?) 发布 ID 或本机视频元素 当前/标准化变换 用于页面显示;不要把变换误当摄像头真实方向。
getActiveSpeakers()、getActiveSpeakerSupport() 无 发言成员与电平 / 支持状态 反映媒体检测,不是语音识别或用户身份鉴定。
setRemoteVolume(volume) 0~1 void 所有远端音频的本地总音量;不发送主持控制。

协作、治理、录制和诊断

函数 入参 返回 用途与特殊情况
sendChatMessage(text, options?) 文本;可选 targetParticipantId、结构化 payload 本地请求 ID 私发只对目标及发送者可见;最终结果以聊天/事件回调为准。
listChatHistory(afterSequence?, pageSize?) 事件序号、页大小 {rows, ...} 按序号续读,不能只读第一页就认为历史完整。
uploadAttachment(file, options?) File/Blob;目标成员、说明、chat/whiteboard 用途、文件名 RtcAttachmentIssue 提交前会重查设备和权限;白板图片需随后提交白板对象事件。
resolveAttachment(downloadUrl, metadata?) 服务端授权的下载地址;可选名称/类型 浏览器对象 URL 只用于当前有权看的附件;不缓存成永久公开地址。
getWhiteboardEvents()、attachWhiteboard(container) 白板容器 当前对象事件 / 卸载函数 白板 UI 是可选宿主组件;退出时调用卸载函数。
sendSignal(type, payload?) SDK 支持的信令类型及数据 请求 ID 高级接入用;普通治理应使用 performRoomAction 的白名单动作。
performRoomAction(action, payload?) 会议控制动作中的动作名与参数 该动作响应 服务端再次校验当前主持、设备和能力;通用入口不允许任意拼 URL。
startContinuousRecording()、stopContinuousRecording(recordingId)、getContinuousRecording() 停录需要本次 recordingId 录制状态或无活动任务时 null 启停仅当前主持人;Stopping 是收尾中,历史档案用独立档案 SDK。
getPublicationStats()、getMediaDiagnostics() 无 发布统计 / 媒体诊断 统计值用于排障,不代表服务端已保存媒体。
reportEndpointInfo()、getEndpointInfo() 无 本机上报快照 / 在线终端参数列表 只上报可获得的参数,不收集硬件唯一标识;列表按服务端近 90 秒数据。
getAudioOutputState()、getAudioOutputCapabilities()、getAudioOutputDevices()、setAudioOutput(deviceId) 输出设备 ID 当前状态/支持原因/列表/void 选择输出设备依赖浏览器支持和用户授权;失败不影响入会。
getNativeScreenSession()、installNativeHostBridge(target?) 受信任原生宿主的 Window 临时共享上下文 / 卸载函数 仅原生宿主桥接;上下文含短时令牌,不写日志、不发给网页第三方。
attachMeetingControls(container) 宿主容器 卸载函数,可选择页签 可选示例控件;业务应用可自行实现 UI,协议仍由 SDK 执行。

事件回调与错误处理

构造函数的 events 中订阅事件;页面卸载时先 leave(),再移除自己创建的 DOM。所有事件可能在重连后补偿到达,按事件序号和当前会话处理,不能把旧会话的主持/踢出动作应用到新会话。

回调 主要数据 页面处理
onState(state, detail)、onAdmission()、onAdmissionDenied() 连接、准入状态与说明 等候室只显示等待;拒绝时向业务后端取新授权。
onRemoteTrack(remote)、onRemoteTrackRemoved(subscriptionId)、onTopologyChanged() publicationId、subscriptionId、MediaStreamTrack 为每路创建/释放视图;屏幕与摄像头分开显示。
onLocalMediaState(state)、onCaptureUnavailable(kind, message)、onPublicationUnavailable(kind, message) 实际麦克风/相机/共享状态与失败原因 按实际状态更新按钮,不以本机预览判定发布成功。
onContinuousRecordingChanged(recording) {recordingId,state,originAtUtc,...} 或 null 显示录制中/收尾中;null 仅表示当前无活动任务。
onRoomEvent(event)、onChatMessage(message)、onWhiteboardChanged(events) 带序号会议事件、聊天、白板对象 按可见范围和序号同步;私发不对其他成员展示。
onActiveSpeakersChanged(speakers)、onVideoGeometry(value)、onVideoQualityChanged(result) 发言电平、画面比例、质量实际值 发言绿框是设备活动检测,质量变化要区分目标与实际。
onInputDeviceChanged(state)、onAudioOutputChanged(state)、onLocalMicrophoneChanged(track,settings)、onLocalCameraChanged(track,settings) 设备 ID、轨道与实际采集设置 更新设备选择和本地预览,不把旧 MediaStreamTrack 留在新视图。
onModeration(notice)、onSignal(message) 主持治理通知、原始会议信令 先按当前设备会话核对事件,再更新权限与按钮;业务 UI 通常不需解析低层信令。
onKicked(reason)、onRoomClosed()、onLeft()、onScreenShareEnded() 生命周期通知 释放视图与媒体,踢出后不得沿用旧票据重连。

Web SDK 类型定义以同批交付的 Clients/AKStream.Rtc.WebSDK/index.d.ts 为准。档案客户端的全部函数见档案函数参考,会议动作 payload 见控制动作参考。

完整 Skill 文件目录