互动视频
  • iOS
  • Android
  • macOS
  • Windows
  • Linux
  • Web
  • 小程序 : JavaScript
  • Electron
  • 概述
  • 限制说明
  • SDK 下载
  • 快速开始
  • 设备管理
  • 常用功能
  • 音频进阶
  • API 文档
  • 常见错误码
  • 常见问题
  • 视频直播
  • 视频通话
  • 小程序电商直播
  • 文档中心
  • 互动视频
  • API 文档

小程序SDK API文档

更新时间:2022-03-16 15:56

1 请求接口

1.1 初始化配置

ZegoClient.config(option),配置参数如下:

参数 含义 类型 是否必填
option.appid appid 数值 必填
option.server 即构服务器地址 字符串 必填
option.idName 用户id 字符串 必填
option.nickName 用户昵称 字符串 必填
option.logLevel 本地log级别 0:debug 1:info 2:warn 3:error 98:report 100:disable 数值 必填
option.remoteLogLevel 上报log级别 0:debug 1:info 2:warn 3:error 100:disable 数值,默认为0 可选(建议上报)
option.logUrl 远程log服务器地址 websocket地址 字符串 可选
option.audienceCreateRoom 观众是否可以创建房间 布尔值 可选

1.2 登录房间

ZegoClient.login(roomid, role, token, success, error),登录参数如下:

参数 含义 类型 是否必填
roomid 房间id 字符串 必填
role 角色类型,1:主播 2:观众 数值 必填
token 登录验证token 字符串 必填
success 成功回调函数 function(streamList) 必填
error 失败回调函数 function(err) 必填

streamList数组中stream的对象结构

参数 含义 类型
stream_id 流Id 字符串
anchor_id_name 流对应的用户Id 字符串
anchor_nick_name 流对应的用户昵称 字符串
extra_info 流附加信息 字符串

1.3 鉴权登录房间

ZegoClient.loginWithAuthor(roomid, role, token,thirdToken, success, error) ,登录参数如下:

参数 含义 类型 是否必填
roomid 房间id 字符串 必填
role 角色类型,1:主播 2:观众 数值 必填
token 登录验证token 字符串 必填
thirdToken 客户自定义验证token 字符串 必填
success 成功回调函数 function(streamList) 必填
error 失败回调函数 function(err) 必填

streamList数组中stream的对象结构

参数 含义 类型
stream_id 流Id 字符串
anchor_id_name 流对应的用户Id 字符串
anchor_nick_name 流对应的用户昵称 字符串
extra_info 流附加信息 字符串

1.4 登出房间

ZegoClient.logout(),无参数;
调用之后会向Zego服务器发送登出信令,之后重置当前房间中用户与Zego服务器进行交互所需的关键数据,并置空websocket对象

1.5 发送自定义命令

ZegoClient.sendCustomCommand(dstMembers, customContent, success, error) , 参数如下:

参数 含义 类型 是否必填
dstMembers 接收消息者列表 字符串数组 必填
customContent 自定义消息内容 字符串 或 object(支持最大1024字节) 必填
success 成功回调函数 function(seq, customContent) 必填
error 失败回调函数 function(err, seq, customContent) 必填

回调参数说明:

  • seq:消息发送序号
  • customContent: 发送内容
  • err: 错误对象

调用限制:
1.不能发送房间广播的自定义消息

1.6 设置推流地址选项

ZegoClient.setPreferPublishSourceType(sourceType) ,参数如下:

参数 含义 类型 是否必填
sourceType 推流地址选项 数值; 默认1: Zego服务器, 0:CDN 必填

1.7 开始推流

ZegoClient.startPublishingStream(streamid, streamParams, extraInfo) ,参数如下:

参数 含义 类型 是否必填
streamid 推流Id 字符串 必填
streamParams 推流参数 字符串,可用于推流鉴权 可选
extraInfo 流附加信息 字符串 可选

1.8 结束推流

ZegoClient.stopPublishingStream(streamid) ,参数如下:

参数 含义 类型 是否必填
streamid 推流Id 字符串 必填

1.9 更新推流附加信息

ZegoClient.updateStreamExtraInfo(streamid, extraInfo) ,参数如下:

参数 含义 类型 是否必填
streamid 推流Id 字符串 必填
extraInfo 流附加信息 字符串 必填

1.10 设置拉流地址选项

ZegoClient.setPreferPlaySourceType(souceType) ,参数如下:

参数 含义 类型 是否必填
sourceType 拉流地址选项 数值; 默认0: 自动, 1:Zego服务器 必填
  • 自动 表示首先从CDN拉流,在进行连麦时,切换到Zego服务器
  • 注意 若设置为0且未配置CDN,会导致无拉流地址

1.11 开始播放流

ZegoClient.startPlayingStream(streamid, streamParams) , 参数如下:

参数 含义 类型 是否必填
streamid 拉流id 字符串 必填
streamParams 拉流参数 字符串,可用于拉流鉴权 可选

1.12 停止播放流

ZegoClient.stopPlayingStream(streamid) , 参数如下:

参数 含义 类型 是否必填
streamid 流id 字符串 必填

1.13 小程序播放状态事件

ZegoClient.updatePlayerState(streamId, event, type) ,参数如下:

参数 含义 类型 是否必填
streamid 流id 字符串 必填
event 时间 对象 必填
type 类型 数值 0: 拉流 1: 推流 必填
  • 在小程序 <live-player><live-pusher> 组件中设置bindstatechange属性,小程序回调的事件完全透传给SDK
  • SDK底层会根据event进行流状态更新,必须回调给SDK

1.14 小程序网络状态通知事件

ZegoClient.updatePlayerNetStatus(streamId, event, type) ,参数如下:

参数 含义 类型 是否必填
streamid 流id 字符串 必填
event 时间 对象 必填
type 类型 数值 0: 拉流 1: 推流 必填
  • 在小程序 <live-player><live-pusher> 组件中设置bindnetstatus属性,小程序回调的事件完全透传给SDK

1.15 请求连麦

ZegoClient.requestJoinLive(destIdName, success, error, resultCallback) ,参数如下:

参数 含义 类型 是否必填
dest_id_name 目标用户IdName 字符串 必填
success 成功回调函数 function(seq) 必填
error 失败回调函数 function(err, seq) 必填
resultCallback 目标用户响应结果 function(result, fromUserId, fromUserName) 必填
  • resultCallback 必须设置,否则调用失败
  • 发送此信令成功后,目标用户会收到onRecvJoinLiveRequest回调

1.16 邀请连麦

ZegoClient.inviteJoinLive(destIdName, success, error, resultCallback) ,参数如下:

参数 含义 类型 是否必填
dest_id_name 目标用户IdName 字符串 必填
success 成功回调函数 function(seq) 必填
error 失败回调函数 function(err, seq) 必填
resultCallback 目标用户响应结果 function(result, fromUserId, fromUserName) 必填
  • resultCallback 必须设置,否则调用失败
  • 发送此信令成功后,目标用户会收到onRecvInviteJoinLiveRequest回调

1.17 响应连麦结果

ZegoClient.respondJoinLive(requestId, respondResult, success, error) ,参数如下:

参数 含义 类型 是否必填
requestId 请求Id 字符串 必填
respondResult 响应结果 布尔值 必填
success 成功回调函数 function(seq) 必填
error 失败回调函数 function(err, seq) 必填
  • 在收到onRecvJoinLiveRequest / onRecvInviteJoinLiveRequest后调用此函数响应连麦结果
  • requestId 参数来自onRecvJoinLiveRequest / onRecvInviteJoinLiveRequest回调参数

1.18 结束连麦

ZegoClient.endJoinLive(destIdName, success, error) ,参数如下:

参数 含义 类型 是否必填
destIdName 目标用户IdName 字符串 必填
success 成功回调函数 function(seq) 必填
error 失败回调函数 function(err, seq) 必填

1.19 发送房间消息

ZegoClient.sendRoomMsg(msg_category, msg_type, msg_content, success, error) , 参数如下:

参数 含义 类型 是否必填
msg_category 消息业务类型 数值 1:聊天消息 2:系统消息 必填
msg_type 消息格式类型 数值 1:文本消息 2:图片url 3:文件url 必填
msg_content 消息内容 字符串 必填
success 成功回调函数 function(seq, msgId, msg_category, msg_type, msg_content) 必填
error 失败回调函数 function(err, seq, msg_category, msg_type, msg_content) 必填

1.20 释放流资源

ZegoClient.release(), 释放ZegoClient资源, 退出房间,并释放流资源, 参数无
调用之后会向Zego服务器发送登出信令,之后重置当前房间中用户与Zego服务器进行交互所需的关键数据,并置空websocket对象和销毁播放器对象

1.21 设置是否关注房间成员变化

ZegoClient.setUserStateUpdate(update) (默认为false), 参数如下:

参数 含义 类型 是否必填
update 是否更新 布尔值 必填
  • update参数设置为true后,SDK登录成功后会自动拉取当前房间所有成员列表通过onGetTotalUserList回调
  • 之后进出房间的用户变化通过onUserStateUpdate回调
  • 该设置为房间配置,只能是创建房间的人设置
  • 在网络异常或其他情况下,SDK会再次拉取房间所有成员,再次回调onGetTotalUserList

1.22 发送可靠消息

ZegoClient.sendReliableMessage(type, data, success, error) ,只用于大房间低频场景(如,直播答题中的题目推送),参数如下:

参数 含义 类型 是否必填
type 消息类型 字符串 必填
data 消息内容 字符串 必填
success 成功回调函数 function(seq) 必填
error 失败回调函数 function(err, seq) 必填

参数 type 表示可靠业务消息类型,不能超过 128 字节,不允许为空字符串,一个房间内只允许不超过 1 个不同的消息类型

1.23 向业务服务器转发消息

ZegoClient.sendRelayMessage(type, data, success, error) (如,直播答题中的观众答题),参数如下:

参数 含义 类型 是否必填
type 消息类型 字符串 必填
data 消息内容 字符串 必填
success 成功回调函数 function(seq, result) 必填
error 失败回调函数 function(err, seq) 必填

1.24 发送大房间的实时消息

ZegoClient.sendBigRoomMessage( msg_category,msg_type, msg_content, success, error) (如,直播答题中的观众评论),参数如下

参数 含义 类型 是否必填
msg_category 消息分类 数值 1:聊天消息 2:系统消息 必填
msg_type 消息类型 数值 1:文本消息 2:图片url 3:文件url 必填
msg_content 消息内容 字符串 必填
success 成功回调函数 function(seq, messageId) 必填
error 失败回调函数 function(err, seq) 必填

1.25 更新混流信息

ZegoClient.updateMixStream(mixStreamConfig, success, error),发起(更新)混流信息

参数 含义 类型 是否必填
mixStreamConfig 混流配置信息 对象 必填
success 成功回调函数 function(mixStreamId, mixStreamInfop[]) 必填
error 失败回调函数 function(err, errorInfo) 必填

mixStramConfig对象结构

参数 含义 类型
outputStreamId 混流输出流ID 字符串
outputUrl 混流输出URL 字符串
outputBitrate 混流输出码率 数值 (必须,且大于0)
outputFps 混流输出帧率 数值 (必须,且大于0)
outputWidth 混流输出宽度 数值 (必须,且大于0)
outputHeight 混流输出高度 数值 (必须,且大于0)
outputAudioConfig 混流输出音频编码 数值(可选,默认为0)
outputAudioBitrate 混流输出音频码率 数值 (可选)
outputAudioChannels 混流输出声道数 数值 (可选)
outputBgColor 混流背景颜色 数值 (可选)
outputBgImage 混流背景图片 字符串 (可选)
streamList 混流输入流列表 数组 (不能为空)
extraParams 额外参数 数组 (可选)
  • outputStreamId 和 outputUrl 必须二选一。如果两个都存在,默认为 outputStreamId
  • outputBgColor 为十六进制的RGB, 输入格式必须为 0xRRGGBBxx
  • outputBgImage 需要提前在即构后台预设imageId, 输入格式为 preset-id://xxx
  • outputAudioConfig 默认是0(可选3)。使用混流转码时,目标编码格式为VP8时该参数值为3;目标编码格式为H.264时该参数为0。与此同时,需要传入extraParams的对象,key为'video_encode',value 为转换后的编码格式('h264' 或 'vp8')

streamList里的一个元素,即每一条输入流的对象结构如下:

参数 含义 类型
streamId 输入流ID 字符串
top 目标位置,上 数值 >=0
left 目标位置,左 数值 >= 0
bottom 目标位置,下 数值 >= 0
right 目标位置,右 数值 >= 0
  • top, left, bottom, right必须为整型

mixStreamInfo对象结构如下:

参数 含义 类型
rtmpUrls 混流Rtmp地址 数组
hlsUrls 混流hls地址 数组
flvUrls 混流flv地址 数组

extraParams里的一个元素,即每一个对象是K-V 结构:

参数 含义 类型
key 参数类型 字符串
value 参数的值 字符串

1.26 结束混流

ZegoClient.stopMixStream(mixStreamConfig, success, error)

参数 含义 类型 是否必填
mixStreamConfig 混流配置信息 对象 必填
success 成功回调函数 function() 必填
error 失败回调函数 function(err) 必填

mixStramConfig对象结构

参数 含义 类型
outputStreamId 混流输出流ID 字符串
outputUrl 混流输出URL 字符串
  • outputStreamId 和 outputUrl 必须二选一。如果两个都存在,会结束 outputStreamId 指定的混流

1.27 开始播放混流

ZegoClient.startPlayingMixStream(mixStreamId, streamParams) , 参数如下:

参数 含义 类型 是否必填
mixStreamId 混流id 字符串 必填
streamParams 混流参数 字符串,可用于拉流鉴权 可选
  • 播放混流的处理过程和播放普通流的处理过程一致

1.28 停止播放混流

ZegoClient.stopPlayingMixStream(mixStreamId) , 参数如下:

参数 含义 类型 是否必填
mixStreamId 混流id 字符串 必填

1.29 动态转推CDN

ZegoClient.publishTarget(cdnPublishConfig, success, error)

参数 含义 类型 是否必填
cdnPublishConfig CDN转推配置 对象 必填
success 成功回调 function 选填
error 失败回调 function 选填

cdnPublishConfig对象结构

参数 含义 类型
streamId 需要转推CDN的流ID 字符串
type 转推方式 字符串
appSecret 联系技术支持获取 字符串
pushUrl 转推CDN地址 字符串
  • type 仅可填 "addpush","delpush","clearpush" 三种类型,分别表示增加,删除,清空
  • 若需推多路CDN则type填 "addpush" 并多次调用该接口

2 回调接口

  • 以下所有回调接口调用都是通过赋值方式,接收回调;例如:
     ZegoClient.onDisconnect = function(err) {
       //处理回调逻辑.....
     }

2.1 房间连接断开通知

ZegoClient.onDisconnect(err) , 参数如下:

参数 含义 类型
err.code 错误码 字符串
err.msg 错误信息 字符串

2.2 被踢下线通知

ZegoClient.onKickOut(err) , 参数如下:

参数 含义 类型
err.code 错误码 字符串
err.msg 错误信息 字符串

2.3 主播信息更新

ZegoClient.onGetAnchorInfo(anchor_userid, anchro_username) ,参数如下:

参数 含义 类型
anchor_userid 主播id 字符串
anchor_username 主播昵称 字符串
  • 登录成功后会回调主播信息

2.4 自定义命令消息通知

ZegoClient.onRecvCustomCommand(from_userid, from_idname, custom_content) , 参数如下:

参数 含义 类型
from_userid 服务器用户唯一id 字符串
from_idname 用户id 字符串
custom_content 自定义命令消息 字符串

2.5 流更新通知

ZegoClient.onStreamUpdated(type, streamList) , 参数如下:

参数 含义 类型
type 变更类型 数值,0:添加, 1:删除
streamList 变更流列表 对象数组

流信息对象结构:

参数 含义 类型
stream_id 流Id 字符串
anchor_id_name 流对应的用户Id 字符串
anchor_nick_name 流对应的用户昵称 字符串
extra_info 流附加信息 字符串

2.6 流附加信息更新通知

ZegoClient.onStreamExtraInfoUpdated(streamList) ,(不包含增加,删除), 参数如下:

参数 含义 类型
streamList 变更流列表 对象数组

流信息对象结构:

参数 含义 类型
stream_id 流Id 字符串
anchor_id_name 流对应的用户Id 字符串
anchor_nick_name 流对应的用户昵称 字符串
extra_info 流附加信息 字符串

2.7 房间消息通知

ZegoClient.onRecvRoomMsg(chat_data, server_msg_id, ret_msg_id) , 参数如下:

参数 含义 类型
chat_data 消息内容 数组
server_msg_id 服务器最新消息id 数值
ret_msg_id 当前推送消息id 数值

chat_data对象结构:

参数 含义 类型
id_name 用户Id 字符串
nick_name 用户昵称 字符串
role 用户角色 数值
msg_id 消息Id 数值
msg_category 消息类别 数值
msg_type 消息类型 数值
msg_content 消息内容 字符串
send_time 发送时间 数值

2.8 获取到推拉流的Rtmp地址

ZegoClient.onStreamUrlUpdate(streamId, url, type) ,参数如下:

参数 含义 类型
streamId 流id 字符串
url rtmp地址 字符串
type 推拉流 数值 0: 拉流 1: 推流
  • 收到此回调后需要更新小程序 <live-player><live-pusher> 组件的src属性
  • 根据type类型调用小程序接口启动推流或拉流
  • 不更新src属性会导致小程序无法推拉流

2.9 拉流状态变更通知

ZegoClient.onPlayStateUpdate(type, streamId, error) , 参数如下:

参数 含义 类型
type 流状态类型 数值 start:0, stop:1, retry:2
streamId 流id 字符串
error 错误码 数值
  • 小程序开始拉流时本接口回调start事件
  • 小程序拉流失败时本接口回调stop事件,error为错误码。error > 10000 表示即构调度错误。否则表示小程序拉流错误

2.10 拉流质量回调

ZegoClient.onPlayQualityUpdate(streamId, streamQuality) ,参数如下:

参数 含义 类型
streamId 流Id 字符串
streamQuality 流质量 对象

streamQuality对象结构:

参数 含义 类型
videoBitrate 视频码率 数值
audioBitrate 音频码率 数值
videoFPS 视频编码帧率 数值
  • 如果没有调用updatePlayerNetStatus不会有此回调

2.11 推流状态变更通知

ZegoClient.onPublishStateUpdate(type, streamId, error) ,参数如下:

参数 含义 类型
type 流状态类型 数值 start:0, stop:1, retry:2
streamId 流id 字符串
error 错误码 数值
  • 小程序开始推流时本接口回调start事件
  • 小程序推流失败时本接口回调stop事件,error为错误码。error > 10000 表示即构调度错误。否则表示小程序拉流错误

2.12 推流质量回调

ZegoClient.onPublishQualityUpdate(streamId, streamQuality) ,参数如下:

参数 含义 类型
streamId 流Id 字符串
streamQuality 流质量 对象

streamQuality对象结构:

参数 含义 类型
videoBitrate 视频码率 数值
audioBitrate 音频码率 数值
videoFPS 视频编码帧率 数值
  • 如果没有调用updatePlayerNetStatus不会有此回调

2.13 房间成员变化回调

ZegoClient.onUserStateUpdate(roomId, userList) ,设置setUserStateUpdate为true时回调。参数如下:

参数 含义 类型
roomId 房间Id 字符串
userList 成员列表 对象数组

成员对象结构:

参数 含义 类型
action 行为 数值 1:进入房间 2:退出房间
idName 用户id 字符串
nickName 用户昵称 字符串
role 角色类型 数值 1:主播 2:观众
loginTime 登录时间 字符串

2.14 房间所有成员回调

ZegoClient.onGetTotalUserList(roomId, userList) ,设置setUserStateUpdate为true时回调。参数如下:

参数 含义 类型
roomId 房间Id 字符串
userList 成员列表 对象数组

成员对象结构:

参数 含义 类型
idName 用户id 字符串
nickName 用户昵称 字符串
role 角色类型 数值 1:主播 2:观众

2.15 收到请求连麦信令

ZegoClient.onRecvJoinLiveRequest(requestId, from_userid, from_username, roomid) ,参数如下:

参数 含义 类型
requestId 请求Id 字符串
from_userid 请求者userId 字符串
from_username 请求者userName 字符串
roomid 房间id 字符串
  • 回复连麦请求respondJoinLive时需要使用此requestId

2.16 收到邀请连麦信令

ZegoClient.onRecvInviteJoinLiveRequest(requestId, from_userid, from_username, roomid) ,参数如下:

参数 含义 类型
requestId 请求Id 字符串
from_userid 邀请者userId 字符串
from_username 邀请者userName 字符串
roomid 房间id 字符串
  • 回复连麦请求respondJoinLive时需要使用此requestId

2.17 收到结束连麦信令

ZegoClient.onRecvEndJoinLiveCommand(requestId, from_userid, from_username, roomid) ,参数如下:

参数 含义 类型
requestId 请求Id 字符串
from_userid 连麦者userId 字符串
from_username 连麦者userName 字符串
roomid 房间id 字符串

2.18 收到房间其他用户发送的可靠消息

ZegoClient.onRecvReliableMessage(type, seq, data) ,参数如下:

参数 含义 类型
type 消息类型 字符串
seq 消息序列号 数值
data 消息内容 字符串

2.19 收到大房间的实时消息

ZegoClient.onRecvBigRoomMessage(messageList, roomId) ,参数如下:

参数 含义 类型
messageList 消息列表 对象数组
roomId 房间ID 字符串

消息结构如下

参数 含义 类型
idName 用户ID 字符串
nickName 用户昵称 字符串
messageId 消息ID 字符串
category 消息分类 数值
type 消息类型 数值
content 消息内容 字符串
time 发送消息时间 数值

2.20 更新房间当前在线人数

ZegoClient.onUpdateOnlineCount(roomId, userCount)

参数 含义 类型
roomId 房间ID 字符串
userCount 在线人数 数值

3 工具方法

3.1 小程序是否支持直播组件及是否已授权

ZegoClient.isSupportLive(sucCall, errCall);

sucCall(res)参数返回结果对象,参数如下;

参数 含义 类型
res.code 状态码 数值
res.msg 返回信息 字符串

该方法为静态方法,不需要先初始化ZegoClient对象


状态码有以下类型:

状态码 含义
10001 当前微信版本过低,无法使用相关组件
10002 需要摄像头和录音功能的授权

3.2 获取当前sdk版本号

ZegoClient.getCurrentVersion()

该方法为静态方法,不需要先初始化ZegoClient对象

4 直播组件<live-room>,<rtc-room>

4.1 说明

小程序sdk本质上只提供了即构实时音视频及信令等服务,在客户端播放拉流和推流,都是需要依赖微信小程序提供的,原生组件;开发者可以选择自己灵活整合两者之间的功能,同时即构也提供了将两者组合后的组件<live-room>,<rtc-room>

4.2 <live-room>和<rtc-room>区别

主要是应用场景不一样: live-room适用与单主播推流场景,默认观众从CDN拉流,推流mode为live模式;优先保证高质量音视频输出,低延迟优先级靠后 rtc-room适用于多主播场景,优先从服务器拉流,优先保证低延迟

live-room连麦时,自动切换城rtc模式,此时live-room和rtc-room两者之间没有区别

4.3 属性定义

属性 类型 说明 必填
role string 'audience','anchor' 角色 true
roomid string 数字或字母组成的任意字符串 房间id true
roomname string 任意字符串 房间名称 false
debug boolean 默认false --- false
template string 可自定义 模版 false
beauty number 默认5 美颜指数0~9 false
muted boolean 默认false 是否静音 false
pureaudio boolean 默认false 纯音频 false
pushstreamid string 任意字符串 同一房间推流id不能重复 -

4.4 方法

方法名 说明
config 同sdk用法
start 登录房间
stop 退出房间
更多... 自定义

4.5 获取组件

组件以示例代码形式,存储在即构的 github 仓库上,组件代码放在 components 文件夹下;更多用法请下载参考示例代码。

4.6 特别说明

组件默认提供了常见的‘1v1’,‘1v3’,‘vertical1v3’,'wrap'视频排列格式,若不满足需求,可以拷贝任意一个 template,修改其中的 wxss 样式。

5 错误码列表

错误码 含义
ZegoClient.Success 成功
ZegoClient.Error.Param 参数错误
ZegoClient.Error.Timeout 超时
ZegoClient.Error.Network 网络错误
ZegoClient.Error.Kickout 用户被踢
ZegoClient.Error.Server 服务返回错误
ZegoClient.Error.Unknown 未知错误
本篇目录