设置频道事件句柄。
设置后,你可以通过 RtcChannelEvents
回调监听对应频道内的事件、获取频道数据。
事件类型。
RtcChannel
对象的事件回调。
增加旁路推流地址。
CDN 推流地址,格式为 RTMP。该字符长度不能超过 1024 字节。url 不支持中文等特殊字符。
是否转码。如果设为 true
,则需要在该方法前
先调用 setLiveTranscoding
方法。
true
:转码。转码是指在旁路推流时对音视频流进行转码处理后,再推送到其他 CDN 服务器。
多适用于频道内有多个主播,需要进行混流、合图的场景。false
:不转码。调节本地播放的指定远端用户音量。
你可以多次调用该方法调节不同远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。
Note
远端用户的 ID。
播放音量,取值范围为 [0,100]。
创建数据流。
设置是否保证接收方在 5 秒内收到数据消息:
true
:接收方 5 秒内会收到发送方所发送的数据,否则会收到 StreamMessageError
回调并获得相应报错信息。false
:接收方不保证收到,就算数据丢失也不会报错。设置接收方是否按发送方发送的顺序接收数据消息:
true
:接收方会按照发送方发送的顺序收到数据包。false
:接收方不保证按照发送方发送的顺序收到数据包。创建数据流。
自从 v3.3.1
该方法用于创建数据流。每个用户在每个频道内最多只能创建 5 个数据流。
该方法不支持数据可靠,接收方会丢弃超出发送时间 5 秒后的数据包。
数据流设置。详见 DataStreamConfig
。
销毁当前的 RtcChannel
对象。
RtcChannel
对象。开启或关闭内置加密。
自从 v3.1.2。
在安全要求较高的场景下,声网建议你在加入频道前,调用 enableEncryption
方法开启内置加密。
用户离开频道后,SDK 会自动关闭加密。如需重新开启加密,你需要在用户再次加入频道前调用该方法。
自 v3.4.5 起,声网推荐使用 AES128GCM2
或 AES256GCM2
加密模式。这两种模式支持设置盐,安全性更高。设置方法详见《媒体流加密》。
Warning 同一频道内所有用户必须使用相同的加密模式、密钥和盐,否则用户之间无法互通。
Note
是否开启内置加密:
true
: 开启内置加密。false
: 关闭内置加密。配置内置加密方案。详见 EncryptionConfig
。
RtcEngine
对象并完成初始化。开启/关闭远端视频超分辨率。(beta 功能)
自从 v3.5.2
该功能可以有效地提升本地用户看到的远端视频画面的分辨率。远端用户视频的原始分辨率为 a × b,开启该功能后,本地设备会以 2a × 2b 的分辨率显示该远端视频。
调用该方法后,SDK 会触发 UserSuperResolutionEnabled
回调报告超分辨率是否成功开启。
Warning
超分辨率功能会额外耗费系统资源。为平衡视觉体验和系统消耗,只可以对一个远端用户开启超分辨率,并且远端用户视频的原始分辨率不能超过一定范围。
如果本地用户在 Android 系统上应用超分辨率,远端视频原始分辨率不能超过 640 × 360;如果本地用户在 iOS 系统上应用超分辨率,远端视频原始分辨率不能超过 640 × 480。当超出限制时,SDK 会触发 Warning
回调,并返回相应的警告码:
SuperResolutionStreamOverLimitation(1610)
:远端用户的原始视频分辨率超出了可以应用超分辨率的范围。SuperResolutionUserCountOverLimitation(1611)
:已对一个远端用户的视频使用超分辨率。SuperResolutionDeviceNotSupported(1612)
:设备不支持使用超分辨率。Note 该方法对用户设备具有一定要求,声网推荐你使用如下或更好的设备:
远端用户 ID。
是否对远端视频开启超分辨率:
true
: 开启。false
: 关闭。获取当前的通话 ID。
获取网络连接状态。
使用 UID 加入频道。
Note
RtcEngine
对象时用的 App ID 一致。相比于 RtcEngine
类下的 joinChannel
方法,该方法支持通过创建多个 RtcChannel
对象,
并调用相应对象的 joinChannel
方法,实现同时加入多个频道。
用户成功加入频道后,户发布本地音视频流并自动订阅频道内所有其他用户的音视频流。
订阅音视频流会产生用量并影响计费。 如果想取消订阅,可以通过设置 options
参数或相应的 mute
方法实现。
在你的服务器上生成的 Token。详见使用 Token 鉴权。
开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。
用户 ID,32 位无符号整数。建议设置范围:1 到 (232-1),并保证唯一性。
如果不指定(即设为 0),SDK 会自动分配一个,
并在 JoinChannelSuccess
回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
频道媒体设置选项。
RtcChannel
频道。RtcChannel
加入了一个频道,并在该 RtcChannel
频道中发布了音视频流。RtcEngine
对象并完成初始化。RtcChannel
频道,当已经加入某个 RtcChannel
频道的用户再次调用该 RtcChannel
对象的加入频道方法时,会返回此错误码。使用 User Account 加入频道。
Note
用户成功加入(切换)频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
在你的服务器上生成的 Token。详见使用 Token 鉴权。
用户 User Account。该参数为必需,最大不超过 255 字节,不可为 null。请确保加入频道的 User Account 的唯一性。 以下为支持的字符集范围(共 89 个字符):
频道媒体设置选项。
RtcChannel
频道,当已经加入
某个 RtcChannel
频道的用户再次调用该 RtcChannel
对象的加入频道方法时,会返回此错误码。停止/恢复接收所有音频流。
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流,包括在调用该方法后加入频道的用户的音频流。
Note
setDefaultMuteAllRemoteAudioStreams
的功能。
声网建议不要一起调用 muteAllRemoteAudioStreams
和 setDefaultMuteAllRemoteVideoStreams
,否则设置可能会不生效。详见《设置订阅状态》。设置是否停止接收所有远端音频流:
true
:停止接收所有远端音频流。false
:继续接收所有远端音频流(默认)。停止/恢复接收所有视频流。
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流,包括在调用该方法后加入频道的用户的视频流。
Note
setDefaultMuteAllRemoteVideoStreams
的功能。
声网建议不要一起调用 muteAllRemoteVideoStreams
和 setDefaultMuteAllRemoteVideoStreams
,否则设置可能会不生效。详见《设置订阅状态》。设置是否停止/恢复接收所有视频流:
true
:停止接收所有远端视频流。false
:(默认)继续接收所有远端视频流。取消或恢复发布本地音频流。
自从 v3.4.5
该方法仅设置用户在 RtcChannel
频道中的音频发布状态。
成功调用该方法后,远端会触发 RemoteAudioStateChanged
回调。
同一时间,本地的音视频流只能发布到一个频道。如果你创建了多个频道,请确保你只在一个频道中调用 muteLocalAudioStream(false)
否则方法会调用失败并返回 -5 (ERR_REFUSED)
。
Note
joinChannel
和 setClientRole
方法的影响,详见《设置发布状态》。是否取消发布本地音频流:
-5 (ERR_REFUSED)
:调用被拒绝。取消或恢复发布本地视频流。
自从 v3.4.5
该方法仅设置用户在 RtcChannel
频道中的视频发布状态。
成功调用该方法后,远端会触发 RemoteVideoStateChanged
回调。
同一时间,本地的音视频流只能发布到一个频道。如果你创建了多个频道,请确保你只在一个频道中
调用 muteLocalVideoStream(false)
,否则方法会调用失败并返回 -5 (ERR_REFUSED)
。
Note
joinChannel
和 setClientRole
方法的影响,详见《设置发布状态》。是否取消发布本地视频流:
-5 (ERR_REFUSED)
:调用被拒绝。停止/恢复接收指定音频流。
指定的用户 ID。
设置是否停止/恢复接收指定音频流:
true
:停止接收指定用户的音频流。false
:(默认)继续接收指定用户的音频流。停止/恢复接收指定视频流。
指定的用户 ID。
设置是否停止/恢复接收指定视频流:
true
:停止接收指定用户的视频流。false
:(默认)继续接收指定用户的视频流。暂停向所有目标频道转发媒体流。
自从 v3.5.2
开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法;
暂停后,如果要恢复跨频道媒体流转发,可以调用 resumeAllChannelMediaRelay
方法。
成功调用该方法后,SDK 会触发 ChannelMediaRelayEvent
回调,并在回调中报告是否成功暂停媒体流转发。
Note
该方法需要在 startChannelMediaRelay
后调用。
将本地音视频流发布到本频道。
注册媒体 Metadata 观测器。
该接口通过在直播的视频帧中同步添加 Metadata,实现发送商品链接、分发优惠券、发送答题等功能,构建更为丰富的直播互动方式。
Note
joinChannel
加入频道前调用该方法。删除所有的频道事件句柄。
事件类型。
删除指定的频道事件句柄。
该方法删除指定的回调句柄。对于某些注册的回调句柄, 如果你在收到相应回调事件后无需再次接收回调消息,可以调用该方法移除回调句柄。
事件类型。
RtcChannel
对象的事件回调。
删除旁路推流地址。
待删除的推流地址,格式为 RTMP。该字符长度不能超过 1024 字节。推流地址不支持中文等特殊字符。
更新 Token。
在如下情况下,SDK 判定当前的 Token 已过期:
TokenPrivilegeWillExpire
回调,或者ConnectionStateChanged
回调中报告 TokenExpired(9)
错误。你应该在服务端重新获取 token,然后调用该方法更新 Token,否则 SDK 无法和服务器建立连接。
新的 Token。
恢复向所有目标频道转发媒体流。
自从 v3.5.2
调用 pauseAllChannelMediaRelay
方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。
成功调用该方法后,SDK 会触发 ChannelMediaRelayEvent
回调,并在回调中报告是否成功恢复媒体流转发。
Note
该方法需要在 pauseAllChannelMediaRelay
后调用。
发送 metadata。
需要发送的 metadata。
Note
请确保在该方法中传入的 Metadata 大小不超过 setMaxMetadataSize
中设定的值。
发送数据流。
该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:
成功调用该方法后,远端会触发 StreamMessage
回调,远端用户可以在该回调中获取接收到的流消息;
若调用失败,远端会触发 StreamMessageError
回调。
createDataStream 方法返回的数据流 ID。
待发送的数据,格式为 byte[]。
设置发流端音画同步。
标识音频发送端所在频道的频道名。
音频发送端的用户 ID。
设置直播场景下的用户角色。
直播场景下,SDK 会默认设置用户角色为观众,你可以调用 setClientRole
设置用户角色为主播。
该方法在加入频道前后均可调用。如果你在加入频道后调用该方法切换用户角色,调用成功后,SDK 会自动进行如下操作:
muteLocalAudioStream
和 muteLocalVideoStream
修改发布状态。ClientRoleChanged
或 ClientRoleChangeFailed
。UserJoined
或 UserOffline
(BecomeAudience
)。Note
setChannelProfile
中 profile
设为 LiveBroadcasting
)。options
参数,支持设置用户级别。直播场景中的用户角色。详见 ClientRole。
用户具体设置,包含用户级别,详见 ClientRoleOptions。
options
参数的 joinChannel
,并使用默认设置 publishLocalAudio = true
或 publishLocalVideo = true
。setClientRole
,并设置用户角色为主播。muteLocalAudioStream(false)
或 muteLocalVideoStream(false)
。设置是否默认接收音频流。
是否默认取消订阅远端用户的音频流:
设置是否默认接收视频流。
是否默认取消订阅远端用户的视频流:
设置内置的加密方案。
加密方式。
启用内置加密,并设置数据加密密码。
加密密码。
设置直播转码。
旁路推流布局相关设置。
设置 Metadata 的最大数据大小。
Metadata 的最大数据大小,单位为 Byte,最大值不超过 1024。
设置默认订阅的视频流类型。
Note
setRemoteVideoStreamType
,则 SDK 以 setRemoteVideoStreamType
中的设置为准。设置视频流大小类型。
设置用户媒体流优先级。
该方法可以与 setRemoteSubscribeFallbackOption
搭配使用。
如果将某个用户的优先级设为高,那么发给这个用户的音视频流的优先级就会高于其他用户。
Note
声网 SDK 仅允许将一名远端用户设为高优先级。
远端用户的 ID。
远端用户的需求优先级。
设置订阅的视频流类型。
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode
关闭双流模式,
接收端可以选择接收大流还是小流。其中,大流可以接为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。
正常情况下,用户默认接收大流。如需节约带宽和计算资源,则可以调用该方法动态调整对应远端视频流的大小。 SDK 会根据该方法中的设置,切换大小流。
视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
Note 该方法在加入频道前后都能调用。如果既调用了 setRemoteVideoStreamType
,也调用了 setRemoteDefaultVideoStreamType
,
则 SDK 以 setRemoteVideoStreamType
中的设置为准。
远端用户的 ID。
设置视频流大小类型。
设置远端用户声音的空间位置和音量,方便本地用户听声辨位。
用户通过调用该接口,设置远端用户声音出现的位置,左右声道的声音差异会让用户产生声音的方位感, 从而判断出远端用户的实时位置。 在多人在线游戏场景,如吃鸡游戏中,该方法能有效增加游戏角色的方位感,模拟真实场景。
Note
enableSoundPositionIndication
开启远端用户的语音立体声。远端用户的 ID。
设置远端用户声音出现的位置,取值范围为 [-1.0,1.0]:
设置远端用户声音的音量,取值范围为 [0.0,100.0],默认值为 100.0, 表示该用户的原始音量。取值越小,则音量越低。
开始跨频道媒体流转发。
成功调用该方法后,SDK 会触发 ChannelMediaRelayStateChanged
和
ChannelMediaRelayEvent
回调,并在回调中报告当前的跨频道媒体流转发状态和事件。
ChannelMediaRelayStateChanged
回调报告 Running(2)
和 None(0)
,
且 ChannelMediaRelayEvent
回调报告 SentToDestinationChannel(4)
,则表示 SDK 开始在源频道和目标频道之间转发媒体流。ChannelMediaRelayStateChanged
回调报告 Failure(3)
,则表示跨频道媒体流转发出现异常。Note
stopChannelMediaRelay
方法退出当前的转发状态。跨频道媒体流转发参数配置。
开始 CDN 直播推流并设置转码属性。
CDN 推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
CDN 直播推流的转码属性,详见 LiveTranscoding
。
开始非转码推流。
CDN 推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
停止跨频道媒体流转发。
一旦停止,主播会退出所有目标频道。
成功调用该方法后,SDK 会触发 ChannelMediaRelayStateChanged
回调。
如果报告 Idle(0)
和 None(0)
,则表示已停止转发媒体流。
Note
如果该方法调用不成功,SDK 会触发 ChannelMediaRelayStateChanged
回调,
并报告状态码 ServerNoResponse(2)
或 ServerConnectionLost(8)
。
你可以调用 leaveChannel
方法离开频道,跨频道媒体流转发会自动停止。
结束 CDN 直播推流。
CDN 推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
停止将本地音视频流发布到本频道。
注销媒体 Metadata 观测器。
更新媒体流转发的频道。
成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。
成功调用该方法后,SDK 会触发 ChannelMediaRelayEvent
回调,
并在回调中报告状态码 UpdateDestinationChannel(7)
。
Note
startChannelMediaRelay
方法后调用该方法,
更新媒体流转发的频道。跨频道媒体流转发参数配置。
更新转码属性。
CDN 直播推流的转码属性,详见 LiveTranscoding
。
创建并返回 RtcChannel
对象。
你可以多次调用该方法,创建多个 RtcChannel
对象,再调用各 RtcChannel
对象中的 joinChannel
方法,实现同时加入多个频道。
加入多个频道后,你可以同时订阅各个频道的音、视频流;但是同一时间只能在一个频道发布一路音、视频流。
标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
Note
Refused(-5)
。RtcChannel
对象。channelId
设为空字符 "",则返回错误码 Refused(-5)
。销毁所有的 RtcChannel
对象。
RtcChannel
类。