增加旁路推流地址。
调用该方法后,SDK 会在本地触发 streamPublished 回调,报告增加旁路推流地址的状态。
旁路推流地址,格式为 RTMP。该字符长度不能超过 1024 字节,且不支持中文等特殊字符。
设置是否转码:
true
,需先调用 setLiveTranscoding 方法。ERR_INVALID_ARGUMENT (2)
: RTMP 流地址为空或者字符长度为 0。ERR_NOT_INITIALIZED (7)
: 使用该功能之前没有初始化 AgoraRtcChannel
。远端用户 ID。
播放音量,取值范围为 [0,100]:
获取当前频道的频道名。
AgoraRtcChannel
创建数据流。
true
:接收方 5 秒内会收到发送方所发送的数据,否则会收到 streamMessageError
回调并获得相应报错信息false
:接收方不保证收到,就算数据丢失也不会报错true
:接收方 5 秒内会按照发送方发送的顺序收到数据包false
:接收方不保证按照发送方发送的顺序收到数据包创建数据流。
数据流设置
开启或关闭内置加密。
是否开启内置加密:
配置内置加密模式和密钥。
-2
: 调用了无效的参数。需重新指定参数。-4
: 设置的加密模式不正确或加载外部加密库失败。需检查枚举值是否正确或重新加载外部加密库。-7
: SDK 尚未初始化。需在调用 API 之前已创建 AgoraRtcEngine 对象并完成初始化。获取通话 ID。
客户端在每次 joinChannel 后会生成一个对应的 CallId
,标识该客户端的此次通话。
有些方法如 rate, complain 需要在通话结束后调用,向 SDK 提交反馈,这些方法必须指定 CallId
参数。
使用这些反馈方法,需要在通话过程中调用 getCallId
方法获取 CallId
,在通话结束后在反馈方法中作为参数传入。
通话 ID
获取当前网络连接状态。
connect 网络连接状态
加入频道并设置是否自动订阅音频或视频流。
该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。使用不同 App ID 的 App 是不能互通的。 如果已在通话中,用户必须调用 leaveChannel 退出当前通话,才能进入下一个频道。
成功调用该方法加入频道后,本地会触发 joinChannelSuccess
回调;
通信场景下的用户和直播场景下的主播加入频道后,远端会触发 userJoined
回调。
在网络状况不理想的情况下,客户端可能会与声网的服务器失去连接;SDK 会自动尝试重连,重连成功后,本地会触发 rejoinChannelSuccess
回调。
在服务端生成的用于鉴权的 Token。 详见从服务端生成 Token。
(非必选项) 预留参数。
(非必选项) 用户 ID,32位无符号整数。建议设置范围:1到 232-1,并保证唯一性。如果不指定(即设为0),SDK 会自动分配一个,
并在 joinChannelSuccess
回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
请注意:频道内每个用户的 UID 必须是唯一的。如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 UID 是不同的。
频道媒体设置选项。
-2
: 参数无效。-3
: SDK 初始化失败,请尝试重新初始化 SDK。-5
: 调用被拒绝。可能有如下两个原因:-7
: SDK 尚未初始化,就调用该方法。请确认在调用 API 之前已创建 AgoraRtcRtcEngine 对象并完成初始化。使用 User Account 加入频道。
该方法允许本地用户使用 User Account 加入频道。成功加入频道后,会触发以下回调:
localUserRegistered
和 joinChannelSuccess
回调userJoined
和 userInfoUpdated
回调用户成功加入频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
在服务端生成的用于鉴权的 Token。详见从服务端生成 Token。
用户 User Account。该参数为必需,最大不超过 255 字节,不可为 null
。请确保注册的 User Account 的唯一性。以下为支持的字符集范围(共 89 个字符):
-2
-3
-5
-7
离开频道。
离开频道,即机挂断或退出通话。
该方法会把回话相关的所有资源都释放掉。该方法是异步操作,调用返回时并没有真正退出频道。
真正退出频道后,本地会触发 leaveChannel
回调;通信场景下的用户和直播场景下的主播离开频道后,远端会触发 removeStream
回调。
取消或恢复订阅所有远端用户的音频流。
自 v3.3.1 起,成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流,包括在调用该方法后加入频道的用户的音频流。
是否取消订阅所有远端用户的音频流。
取消或恢复订阅所有远端用户的视频流。
自 v3.3.1 起,成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流,包括在调用该方法后加入频道的用户的视频流。
是否取消订阅所有远端用户的视频流。
取消或恢复发布本地音频流。
是否取消发布本地音频流。
-5 (ERR_REFUSED)
: 调用被拒绝。取消或恢复发布本地视频流。
是否取消发布本地视频流。
-5 (ERR_REFUSED)
: 调用被拒绝。取消或恢复订阅指定远端用户的音频流。
是否取消订阅指定远端用户的音频流。
取消或恢复订阅指定远端用户的视频流。
是否取消订阅指定远端用户的视频流。
成功加入频道。
用户 ID
从调用 joinChannel 开始到发生此事件过去的时间(毫秒)
发生警告回调。
警告码
详细的警告信息
发生错误回调。
错误码
详细的错误信息
重新加入频道回调。
有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后触发此回调方法。
用户 ID
从调用 joinChannel 开始到发生此事件过去的时间(毫秒)
用户离开频道。
调用 leaveChannel 离开频道后,SDK 触发该回调。
用户角色已切换回调。
回调由本地用户在加入频道后调用 setClientRole 改变用户角色触发的。
切换前的角色
切换后的角色
远端用户(通信场景)/主播(直播场景)加入当前频道回调。
该回调在如下情况下会被触发:
新加入频道的远端用户/主播 ID
从本地调用 joinChannel 到发生此事件过去的时间(毫秒)
远端用户离开当前频道回调。
用户离开频道有两个原因:
离线用户或主播的用户 ID。
离线原因
0
:用户主动离开。1
:因过长时间收不到对方数据包,超时掉线。注意:由于 SDK 使用的是不可靠通道,也有可能对方主动离开本方没收到对方离开消息而误判为超时掉线。2
:用户身份从主播切换为观众。网络连接中断,且 SDK 无法在 10 秒内连接服务器回调。
Token 已过期回调。
调用 joinChannel 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中 SDK 可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。
该回调通知 App 需要生成新的 Token,并需调用 joinChannel 为 SDK 指定新的 Token。
Token 服务即将过期回调。
在调用 joinChannel 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒 App 更新 Token。当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。
即将服务失效的 Token
通话相关统计信息。
通话信息详情
通话中每个用户的网络上下行 last mile 质量报告回调。
该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到声网边缘服务器的网络状态。
该回调每 2 秒触发一次。如果远端有多个用户,该回调每 2 秒会被触发多次。
用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。 当 uid 为 0 时,返回的是本地用户的网络质量
该用户的上行网络质量,基于上行发送码率、上行丢包率、平均往返时延和网络 抖动计算。
该用户的下行网络质量,基于下行网络的丢包率、平均往返延时和网络抖动计算。
通话中远端视频流的统计信息回调。
远端视频流统计信息
通话中远端音频流的统计信息回调。
远端音频流统计信息
远端音频流状态发生改变回调。
远端用户/主播音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
发生音频状态改变的远端用户 ID。
远端音频流状态码
远端音频流状态改变的原因码
从本地用户调用 joinChannel 方法到发生本事件经历的时间, 单位为 ms。
检测到活跃用户回调。
如果用户开启了 enableAudioVolumeIndication 功能,则当音量检测模块监测到频道内有新的活跃用户说话时,会通过本回调返回该用户的 uid
。
当前时间段内声音最大的用户的 uid
用户 ID,指定是哪个用户的音频流
从本地用户调用 joinChannel 方法加入频道直至该回调触发的延迟,单位为毫秒
本地或远端视频大小和旋转信息发生改变回调。
图像尺寸和旋转信息发生变化的用户的用户 ID(本地用户的 uid
为 0
)
视频流的宽度(px)
视频流的高度(px)
旋转信息 [0, 360]
远端用户视频流状态发生改变回调。
发生视频流状态改变的远端用户的用户 ID。
远端视频流状态
远端视频流状态改变的具体原因
从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为 ms。
接收到对方数据流消息的回调。
该回调表示本地用户收到了远端用户调用 sendStreamMessage 方法发送的流消息。
用户 ID
数据流 ID
视频截图结果回调。
音频设备测试回调。
音量类型。详见 AudioDeviceTestVolumeType。
音量大小,范围为 [0,255]。
接收对方数据流小时发生错误回调。
该回调表示本地用户未收到远端用户调用 sendStreamMessage 方法发送的流消息。
用户 ID
数据流 ID
丢失的消息数量
数据流中断后,后面缓存的消息数量
跨频道媒体流转发状态发生改变回调。
当跨频道媒体流转发状态发生改变时,SDK 会触发该回调,并报告当前的转发状态以及相关的 错误信息。
跨频道媒体流转发状态码
跨频道媒体流转发出错的错误码
跨频道媒体流转发事件回调。
该回调报告跨频道媒体流转发过程中发生的事件。
跨频道媒体流转发事件码
发送音频帧的远端用户的 ID
从调用 joinChannel 方法直至该回调被触发的延迟(毫秒)
旁路推流状态发生改变回调。
该回调返回本地用户调用 addPublishStreamUrl 或 removePublishStreamUrl 方法的结果。
旁路推流状态发生改变时,SDK 会触发该回调,并在回调中明确状态发生改变的 URL 地址及 当前推流状态。该回调方便推流用户了解当前的推流状态;推流出错时,你可以通过返回的错误码 了解出错的原因,方便排查问题。
推流状态发生改变的 URL 地址
推流状态:
0
: 推流未开始或已结束。成功调用 removePublishStreamUrl 后会返回该状态。1
: 正在连接声网推流服务器和 RTMP 服务器。调用 addPublishStreamUrl
后会返回该状态。2
: 推流正在进行。成功推流后,会返回该状态。3
: 正在恢复推流。当 CDN 出现异常,或推流短暂中断时,SDK 会自动尝试恢复推流,并返回该状态。2
。4
。如果觉得 60 秒太长,也可以主动调用
addPublishStreamUrl,再调用 removePublishStreamUrl 尝试重连。4
: 推流失败。失败后,你可以通过返回的错误码排查错误原因,也可以再次调用
addPublishStreamUrl 重新尝试推流。5
: SDK 正在与声网推流服务器和 CDN 服务器断开连接。
当你调用 remove
或 stop
方法正常结束推流时,SDK 会依次报告推流状态为 DISCONNECTING
、IDLE
。推流错误码:
0
: 推流成功。1
: 参数无效。请检查输入参数是否正确。2
: 推流已加密,不能推流。3
: 推流超时未成功。可调用 addPublishStreamUrl 重新推流。4
: 推流服务器出现错误。请调用 addPublishStreamUrl 重新推流。5
: RTMP 服务器出现错误。6
: 推流请求过于频繁。7
: 单个主播的推流地址数目达到上线 10。请删掉一些不用的推流地址再增加推流地址。8
: 主播操作不属于自己的流。例如更新其他主播的流参数、停止其他主播的流。请检查 App 逻辑。9
: 服务器未找到这个流。10
: 推流地址格式有错误。请检查推流地址格式是否正确。11
: 用户角色不是主播,该用户无法使用推流功能。请检查你的应用代码逻辑。13
: 非转码推流情况下,调用了 updateRtmpTranscoding
或 setLiveTranscoding
方法更新转码属性。请检查你的应用代码逻辑。14
: 主播的网络出错。15
: 你的 App ID 没有使用声网推流服务的权限。请参考前提条件开启推流服务。旁路推流设置被更新回调。该回调用于通知主播 CDN 转码已成功更新。
setLiveTranscoding 方法中的转码合图参数(LiveTranscoding
)更新时,transcodingUpdated
回调会被触发并向主播报告更新信息。
远端订阅流已回退为音频流回调。
如果你调用了设置远端订阅流回退选项 setRemoteSubscribeFallbackOption 并将 option
设置为 2
时, 当下行网络环境不理想、仅接收远端音频流时,或当下行网络改善、恢复订阅音视频流时,会触发该回调。
远端订阅流因弱网环境不能同时满足音视频而回退为小流时,你可以使用 remoteVideoStats
回调来监控远端视频大小流的切换。
远端用户的 ID
远端订阅流已回退或恢复:
true
:由于网络环境不理想,远端订阅流已回退为音频流false
:由于网络环境改善,订阅的音频流已恢复为音视频流网络连接状态已改变回调。
该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态,和引起网络状态改变的原因。
当前的网络连接状态
引起当前网络连接状态发生改变的原因
音频发布状态改变回调。
之前的发布状态。
当前的发布状态。
两次状态变化时间间隔(毫秒)。
视频发布状态改变回调。
之前的发布状态。
当前的发布状态。
两次状态变化时间间隔(毫秒)。
音频订阅状态发生改变回调。
远端用户的 ID。
之前的订阅状态。
当前的订阅状态。
两次状态变化时间间隔(毫秒)。
视频订阅状态发生改变回调。
远端用户的 ID。
之前的订阅状态。
当前的订阅状态。
两次状态变化时间间隔(毫秒)。
已显示首帧远端视频回调。
第一帧远端视频显示在视图上时,触发此调用。 App 可在此调用中获知出图时间(elapsed)。
用户 ID,指定是哪个用户的视频流。
视频流宽(px)。
视频流高(px)。
从本地调用 joinChannel 到发生此事件过去的时间(毫秒)。
将本地音视频流发布到本频道。
ERR_REFUSED (5)
: 调用被拒绝注册媒体附属信息观测器。
释放 AgoraRtcChannel
所有资源。
调用该方法后,用户将无法再使用 AgoraRtcChannel 中的所有方法和回调。
删除旁路推流地址。
调用该方法后,SDK 会在本地触发 streamUnpublished
回调,报告删除旁路推流地址的状态。
待删除的推流地址,格式为 RTMP。该字符长度不能超过 1024 字节。
更新 Token。
如果启用了 Token 机制,过一段时间后使用的 Token 会失效。当报告错误码 109
或 tokenPrivilegeWillExpire
回调时,
你应重新获取 Token,然后调用该 API 更新 Token,否则 SDK 无法和服务器建立连接。
新的 Token
发送媒体附属信息。
调用 registerMediaMetadataObserver 后,你可以调用本方法来发送媒体附属信息。
如果发送成功,发送方会收到 sendMetadataSuccess
回调,接收方会收到 receiveMetadata
回调。
媒体附属信息。
发送数据流。
该方法发送数据流消息到频道内所有用户。
SDK 对该方法的实现进行了如下限制:频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。 每个客户端每秒最多能发送 6 KB 数据。频道内每人最多能同时有 5 个数据通道。
成功调用该方法后,远端会触发 streamMessage
回调,远端用户可以在该回调中获取接收到的流消息;
若调用失败,远端会触发 streamMessageError
回调。
数据流 ID,createDataStream 的返回值
待发送的数据
设置直播场景下的用户角色。
加入频道前,用户需要通过本方法设置观众或主播模式。
加入频道后,用户可以通过本方法切换用户模式。直播场景下,如果你在加入频道后调用该方法切换用户角色,
调用成功后,本地会触发 clientRoleChanged
事件;远端会触发 userJoined
事件。
用户角色:
设置直播场景下的用户角色和观众端延时级别。
直播场景中的用户角色。
用户具体设置,包含用户级别。
默认取消或恢复订阅远端用户的音频流。
是否默认取消订阅远端用户的音频流:
默认取消或恢复订阅远端用户的视频流。
是否默认取消订阅远端用户的视频流:
设置内置的加密方案。
加密方式。目前支持以下几种:
加密密码
设置直播转码。
调用该方法更新 transcoding
参数时,SDK 会触发 transcodingUpdated
回调。
旁路推流转码合图相关设置
设置媒体附属信息的最大大小。
调用 registerMediaMetadataObserver 后,你可以调用本方法来设置媒体附属信息 的最大大小。
媒体附属信息的最大大小。
设置默认订阅的视频流类型。
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode(false) 关闭双流模式, 接收端可以选择接收大流还是小流。其中,大流可以接为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。
正常情况下,用户接收大流。如需默认接收小流,可以调用本方法进行切换。SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。
视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
设置视频流的类型:
设置订阅的视频流类型。
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode(false) 关闭双流模式, 接收端可以选择接收大流还是小流。其中,大流可以接为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。
正常情况下,用户默认接收大流。如需接收小流,可以调用本方法进行切换。SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。
视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
调用本方法的执行结果将在 apiCallExecuted
中返回。
用户 ID
视频流类型
设置远端用户声音的空间位置和音量,方便本地用户听声辨位。
用户通过调用该接口,设置远端用户声音出现的位置,左右声道的声音差异会让用户产生声音的方位感,从而判断出远端用户的实时位置。 在多人在线游戏场景,如吃鸡游戏中,该方法能有效增加游戏角色的方位感,模拟真实场景。
远端用户的 ID
设置远端用户声音出现的位置,取值范围为 [-1.0, 1.0]:
设置远端用户声音的音量,取值范围为 [0.0, 100.0],默认值为 100.0,表示该用户的原始音量。取值越小,则音量越低
开始跨频道媒体流转发。
该方法可用于实现跨频道连麦等场景。
成功调用该方法后,SDK 会触发 channelMediaRelayState
和 channelMediaRelayEvent
回调,并在回调中报告当前的跨频道媒体流转发状态和事件。
channelMediaRelayState
回调报告 ChannelMediaRelayState 中的
状态码 1
和 ChannelMediaRelayError 中错误码为 0
,且 channelMediaRelayEvent
回调报告
ChannelMediaRelayEvent 中的事件码 4
,则表示 SDK 开始在源频道和目标频道
之间转发媒体流。channelMediaRelayState
回调报告 ChannelMediaRelayState 中的
状态码 3
,则表示跨频道媒体流转发出现异常。跨频道媒体流转发参数配置
停止跨频道媒体流转发。
一旦停止,主播会退出所有目标频道。
成功调用该方法后,SDK 会触发 channelMediaRelayState
回调。
如果报告 ChannelMediaRelayState 中的状态码 0
和 ChannelMediaRelayError
中的错误码 0
,则表示已停止转发媒体流。
取消注册媒体附属信息观测器。
停止将本地音视频流发布到本频道。
ERR_REFUSED (5)
: 调用被拒绝更新媒体流转发的频道。
成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以 调用该方法。
成功调用该方法后,SDK 会触发 channelMediaRelayState
回调,向你报告
ChannelMediaRelayEvent 中的 事件码 7
。
跨频道媒体流转发参数配置
v3.0.0
AgoraRtcChannel 类