RtcChannel
提供在频道中实现实时音视频功能的方法。
create
创建并获取一个 RtcChannel 对象。
static Future<RtcChannel> create(String channelId) async
你可以多次调用该方法,创建多个 RtcChannel 对象,再调用各 RtcChannel 对象中的 joinChannel 方法,实现同时加入多个频道。
加入多个频道后,你可以同时订阅各个频道的音、视频流;但是同一时间只能在一个频道发布一路音、视频流。
参数
- channelId
-
频道名。该参数标识用户进行实时音视频互动的频道。App ID 一致的前提下,填入相同频道名的用户会进入同一个频道进行音视频互动。该参数为长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
- 26 个小写英文字母 a~z
- 26 个大写英文字母 A~Z
- 10 个数字 0~9
- 空格
- "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、"_"、"{"、"}"、"|"、"~"、","
注意:- 参数没有默认值,请确保对参数设值。
- 请勿将该参数设为空字符
""
,否则 SDK 会返回ERR_REFUSED
(5)。
返回值
- 方法调用成功,返回 RtcChannel 对象。
- 方法调用失败,返回
null
。
adjustUserPlaybackSignalVolume
调节本地播放的指定远端用户信号音量。
Future<void> adjustUserPlaybackSignalVolume(int uid, int volume);
你可以在通话中调用该方法调节指定远端用户在本地播放的音量。如需调节多个用户在本地播放的音量,则需多次调用该方法。
- 该方法需要在加入频道后调用。
- 该方法调节的是本地播放的指定远端用户混音后的音量。
参数
- 远端用户 ID。
- volume
- 音乐文件音量范围为 0~100。100 (默认值)为原始文件音量。
channelId
获取当前频道的频道名。
String channelId;
返回值
- 方法调用成功,返回当前频道的频道名。
- 方法调用失败,返回空字符串
""
。
createDataStream
创建数据流。
Future<int?> createDataStream(bool reliable, bool ordered);
- 弃用:
- 请改用 createDataStreamWithConfig。
在 RtcEngine 生命周期内,每个用户最多只能创建 5 个数据流。
- 该方法需要在加入频道后调用。
- 不可将 reliable 设为
true
且将 ordered 设为true
。
参数
- reliable
-
该数据流是否可靠:
true
: 接收方 5 秒内会收到发送方所发送的数据,否则会收到 streamMessageError 回调并获得相应报错信息。false
: 接收方不保证收到,就算数据丢失也不会报错。
- ordered
-
该数据流是否有序:
true
: 接收方会按照发送方发送的顺序收到数据包。false
: 接收方不保证按照发送方发送的顺序收到数据包。
createDataStreamWithConfig
创建数据流。
Future<int?> createDataStreamWithConfig(DataStreamConfig config);
该方法用于创建数据流。每个用户在每个频道中最多只能创建 5 个数据流。
相比 createDataStream,该方法不支持数据可靠。接收方会丢弃超出发送时间 5 秒后的数据包。
参数
- config
- 数据流设置。详见 DataStreamConfig。
enableEncryption
开启或关闭内置加密。
Future<void> enableEncryption(bool enabled, EncryptionConfig config);
在安全要求较高的场景下,声网建议你在加入频道前,调用本方法开启内置加密。
同一频道内所有用户必须使用相同的加密模式和密钥。用户离开频道后,SDK 会自动关闭加密。如需重新开启加密,你需要在用户再次加入频道前调用该方法。
参数
- enabled
-
是否开启内置加密:
- true: 开启内置加密。
- false: 关闭内置加密。
- config
- 配置内置加密模式和密钥。详见 EncryptionConfig。
enableRemoteSuperResolution
开启或关闭远端视频超分辨率。
Future<void> enableRemoteSuperResolution(int userId, bool enable);
该功能可以有效提升本地用户看到的远端视频画面的分辨率。例如远端用户视频的原始分辨率为 a < b,开启该功能后,本地设备会以 2a < 2b 的分辨率 显示该远端视频。
调用该方法后,SDK 会触发 userSuperResolutionEnabled 回调报告超分辨率是否成功开启。
超分辨率功能会额外耗费系统资源。为平衡视觉体验和系统消耗,只可以对一个远端用户开启超分辨率,并且远端用户视频的原始分辨率在 Android 设备上不能超过 640 × 360,在 iOS 设备上不能超过 640 × 480。
- SuperResolutionStreamOverLimitation: 1610,远端用户的原始视频分辨率超出了可以应用超分辨率的范围。
- SuperResolutionUserCountOverLimitation: 1611,已对一个远端用户的视频使用超分辨率。
- SuperResolutionDeviceNotSupported: 1612,设备不支持使用超分辨率。
- 该方法仅适用于 Android 和 iOS 平台。
- 调用该方法前,请确保你已经集成相应的动态库:
- Android: libagora_super_resolution_extension.so
- iOS: AgoraSuperResolutionExtension.xcframework
- 该方法对用户设备具有一定要求,声网推荐你使用如下或更好的设备:
- Android:
- VIVO:V1821A,NEX S,1914A,1916A,1962A,1824BA,X60,X60 Pro
- OPPO:PCCM00,Find X3
- OnePlus:A6000
- Xiaomi:Mi 8,Mi 9,Mi 10,Mi 11,MIX3,Redmi K20 Pro
- SAMSUNG:SM-G9600,SM-G9650,SM-N9600,SM-G9708,SM-G960U,SM-G9750,S20,S21
- HUAWEI:SEA-AL00,ELE-AL00,VOG-AL00,YAL-AL10,HMA-AL00,EVR-AN00,nova 4,nova 5 Pro,nova 6 5G,nova 7 5G,Mate 30,Mate 30 Pro,Mate 40,Mate 40 Pro,P40,P40 Pro,华为平板 M6,MatePad 10.8
- iOS:
- iPhone XR
- iPhone XS
- iPhone XS Max
- iPhone 11
- iPhone 11 Pro
- iPhone 11 Pro Max
- iPhone 12
- iPhone 12 mini
- iPhone 12 Pro
- iPhone 12 Pro Max
- iPhone 12 SE(第二代)
- iPad Pro 11-inch(第三代)
- iPad Pro 12.9-inch(第三代)
- iPad Air(第三代)
- iPad Air(第四代)
- Android:
参数
- userId
- 远端用户 ID。
- enable
- 是否对远端视频开启超分辨率:
- true: 开启超分辨率。
- false: 关闭超分辨率。
getCallId
getConnectionState
获取当前网络连接状态。
Future<ConnectionStateType> getConnectionState();
该方法在加入频道前后都能调用。
返回值
当前网络连接状态。详见 ConnectionStateType。
joinChannel
通过 UID 加入频道。
Future<void> joinChannel(String? token, String? optionalInfo, int optionalUid, ChannelMediaOptions options);
用户成功加入频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
- 该方法不支持相同的用户重复加入同一个频道。
- 我们建议不同频道中使用不同的 UID。
- 如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 UID 是不同的。
参数
- token
-
在服务端生成的用于鉴权的动态密钥。详见 使用 Token 鉴权 。
警告: 请确保用于生成 token 的 App ID、频道名和用户名和 createWithContext 方法初始化引擎时用的 App ID,以及该方法中设置的频道名和用户名是一致的。 - optionalInfo
-
预留参数。
- uid
- 用户 ID。该参数用于标识在实时音视频互动频道中的用户。你需要自行设置和管理用户 ID,并确保同一频道内的每个用户 ID 是唯一的。该参数为 32 位无符号整数,建议设置范围:1 到 21 到 232-1如果不指定(即设为 0),SDK 会自动分配一个,并在 joinChannelSuccess 回调中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
- options
-
频道媒体设置选项。详见 ChannelMediaOptions 。
joinChannelWithUserAccount
通过 User Account 加入频道。
Future<void> joinChannelWithUserAccount( String? token, String userAccount, ChannelMediaOptions options);
用户成功加入频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
- 该方法不支持相同的用户重复加入同一个频道。
- 我们建议不同频道中使用不同的 user account。
- 如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 user account 是不同的。
参数
- token
-
在服务端生成的用于鉴权的动态密钥。详见 使用 Token 鉴权 。
警告: 请确保用于生成 token 的 App ID、频道名和用户名和 createWithContext 方法初始化引擎时用的 App ID,以及该方法中设置的频道名和用户名是一致的。 - userAccount
-
用户 User Account。该参数用于标识实时音视频互动频道中的用户。你需要自行设置和管理用户的 User Account,并确保同一频道中每个用户的 User Account 是唯一的。 该参数为必填,最大不超过 255 字节,不可填 null。以下为支持的字符集范围(共 89 个字符):
- 26 个小写英文字母 a-z
- 26 个大写英文字母 A-Z
- 10 个数字 0-9
- 空格
- "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、"_"、"{"、"}"、"|"、"~"、","
- options
-
频道媒体设置选项。详见 ChannelMediaOptions 。
leaveChannel
离开频道。
Future<void> leaveChannel();
离开频道,即挂断或退出通话。该方法会把会话相关的所有资源释放掉。该方法是异步操作,调用返回时并没有真正退出频道。
调用 joinChannel 后,必须调用 leaveChannel 结束通话,否则无法开始下一次通话。
不管当前是否在通话中,都可以调用 leaveChannel,没有副作用。
- 本地会触发 leaveChannel 回调。
- 通信场景下的用户和直播场景下的主播离开频道后,远端会触发 userOffline 回调。
- 如果你调用了 leaveChannel 后立即调用 destroy 方法,SDK 将无法触发 leaveChannel 回调。
- 如果你在旁路推流过程中调用了 leaveChannel 方法,SDK 将自动调用 removePublishStreamUrl 方法。
muteAllRemoteAudioStreams
取消或恢复订阅所有远端用户的音频流。
Future<void> muteAllRemoteAudioStreams(bool muted);
自 v3.3.0 起,成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流,包括在调用该方法后加入频道的用户的音频流。
- 该方法需要在加入频道后调用。
参数
- muted
-
是否取消订阅所有远端用户的音频流:
true
: 取消订阅所有远端用户的音频流。false
:(默认)订阅所有远端用户的音频流。
muteAllRemoteVideoStreams
取消或恢复订阅所有远端用户的视频流。
Future<void> muteAllRemoteVideoStreams(bool muted);
自 v3.3.0 起,成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流,包括在调用该方法后加入频道的用户的视频流。
- 该方法需要在加入频道后调用。
- 该方法的推荐设置详见设置订阅状态。
参数
- muted
-
是否取消订阅所有远端用户的视频流。
true
: 取消订阅所有用户的视频流。false
:(默认)订阅所有用户的视频流。
muteLocalAudioStream
取消或恢复发布本地音频流。。
Future<void> muteLocalAudioStream(bool mute);
参数
- mute
-
是否取消发布本地音频流。
true
: 取消发布。false
:(默认)发布。
muteLocalVideoStream
取消或恢复发布本地视频流。
Future<void> muteLocalVideoStream(bool muted);
参数
- muted
-
是否取消发送本地视频流。
true
: 取消发送本地视频流。false
: (默认)发送本地视频流。
muteRemoteAudioStream
取消或恢复订阅指定远端用户的音频流。
Future<void> muteRemoteAudioStream(int userId, bool muted);
- 该方法需要在加入频道后调用。
- 该方法的推荐设置详见《设置订阅状态》。
参数
- userId
- 指定用户的用户 ID。
- muted
-
是否取消订阅指定远端用户的音频流。
true
: 取消订阅指定用户的音频流。false
:(默认)订阅指定用户的音频流。
muteRemoteVideoStream
取消或恢复订阅指定远端用户的视频流。
Future<void> muteRemoteVideoStream(int userId, bool muted);
- 该方法需要在加入频道后调用。
- 该方法的推荐设置详见《设置订阅状态》。
参数
- userId
- 指定用户的用户 ID。
- muted
-
是否取消订阅指定远端用户的视频流。
true
: 取消订阅指定用户的视频流。false
: (默认)订阅指定用户的视频流。
pauseAllChannelMediaRelay
暂停向所有目标频道转发媒体流。
Future<void> pauseAllChannelMediaRelay();
开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法;暂停后,如果要恢复跨频道媒体流转发,可以调用 resumeAllChannelMediaRelay 方法。
成功调用该方法后,SDK 会触发 channelMediaRelayEvent 回调,并在回调中报告是否成功暂停媒体流转发。
publish
将本地音视频流发布到本频道。
Future<void> publish();
- 该方法仅支持将音视频流发布到当前 RtcChannel 类所对应的频道。
- 直播场景下,该方法仅适用于角色为主播的用户。你可以调用该 RtcChannel 类下的 setClientRole 方法设置用户角色。
- SDK 只支持用户同一时间在一个频道发布一路音视频流。详情请参考进阶功能《多频道管理》。
registerMediaMetadataObserver
注册媒体 metadata 观测器用于接收或发送 metadata。
Future<void> registerMediaMetadataObserver();
- 请在 joinChannel 前调用该方法。
- 该方法仅适用于直播场景。
destroy
销毁 RtcChannel 对象。
Future<void> destroy();
destroyAll
释放 RtcChannel 对象。
static void destroyAll()
renewToken
更新 Token。
Future<void> renewToken(String token);
- 发生 tokenPrivilegeWillExpire 回调时。
- connectionStateChanged 回调报告 TokenExpired(9) 时。
参数
- token
- 新的 Token。
resumeAllChannelMediaRelay
恢复向所有目标频道转发媒体流。
Future<void> resumeAllChannelMediaRelay();
调用 pauseAllChannelMediaRelay 方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。
成功调用该方法后,SDK 会触发 channelMediaRelayEvent 回调,并在回调中报告是否成功恢复媒体流转发。
sendMetadata
发送媒体附属信息。
Future<void> sendMetadata(Uint8List metadata);
如果成功发送了媒体附属信息,接收端会收到 metadataReceived 回调。
参数
- metadata
- 媒体附属信息。详见 Metadata。
sendStreamMessage
发送数据流。
Future<void> sendStreamMessage(int streamId, Uint8List message);
- 频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。
- 每个客户端每秒最多能发送 6 KB 数据。
- 频道内每人最多能同时有 5 个数据通道。
成功调用该方法后,远端会触发 streamMessage 回调,远端用户可以在该回调中获取接收到的流消息; 若调用失败,远端会触发 streamMessageError 回调。
- 请确保在调用该方法前,已调用 createDataStreamWithConfig 创建了数据通道。
- 直播场景下,该方法仅适用于主播用户。
参数
- streamId
- 数据流 ID。可以通过 createDataStreamWithConfig 获取。
- message
- 待发送的数据。
setEventHandler
设置 RtcChannel 对象的事件句柄。
void setEventHandler(RtcChannelEventHandler handler)
你可以通过设置的事件句柄监听本 RtcChannel 对象对应频道的事件,并接收频道中用户视频信息等。
参数
- RtcChannel 对象的事件句柄。详见 RtcChannelEventHandler。
setClientRole
设置直播场景下的用户角色和级别。
Future<void> setClientRole(ClientRole role, [ClientRoleOptions? options]);
在加入频道前和加入频道后均可调用该方法设置用户角色。
- 调用 muteLocalAudioStream 和 muteLocalVideoStream 修改发布状态。
- 本地触发 clientRoleChanged 回调。
- 远端触发 userJoined 或 userOffline 回调。
- 该方法仅在频道场景为直播(setChannelProfile 中 profile 设为 LiveBroadcasting)时生效。
参数
- role
- 直播场景中的用户角色。详见 ClientRole。
- options
- 用户具体设置,包含用户级别。详见 ClientRoleOptions。
setDefaultMuteAllRemoteAudioStreams
默认取消或恢复订阅远端用户的音频流。
Future<void> setDefaultMuteAllRemoteAudioStreams(bool muted);
该方法需要在加入频道后调用。调用成功后,本地用户取消或恢复订阅调用时刻之后加入频道的远端用户。
取消订阅音频流后,如果需要恢复订阅频道内的远端,可以进行如下操作:
- 如果需要恢复订阅单个用户的音频流,调用 muteRemoteAudioStream (
false
),并指定你想要订阅的远端用户 ID。 - 如果想恢复订阅多个用户的音频流,则需要多次调用 muteRemoteAudioStream (
false
)。
参数
- muted
-
是否默认取消订阅远端用户的音频流:
true
:默认取消订阅远端用户的音频流。false
:(默认)默认订阅远端用户的音频流。
setDefaultMuteAllRemoteVideoStreams
默认取消或恢复订阅远端用户的视频流。
Future<void> setDefaultMuteAllRemoteVideoStreams(bool muted);
该方法需要在加入频道后调用。调用成功后,本地用户取消或恢复订阅调用时刻之后加入频道的远端用户。
取消订阅视频流后,如果需要恢复订阅频道内的远端,可以进行如下操作:
- 如果需要恢复订阅单个用户的视频流,调用 muteRemoteVideoStream (false),并指定你想要订阅的远端用户 ID。
- 如果想恢复订阅多个用户的视频流,则需要多次调用 muteRemoteVideoStream
(
false
)。
参数
- muted
-
是否默认取消订阅远端用户的视频流:
true
: 默认取消订阅。false
:(默认)默认订阅。
setEncryptionMode
启用内置的加密方案。
Future<void> setEncryptionMode(EncryptionMode encryptionMode);
- 弃用:
- 该方法自 v3.1.0 起废弃。请改用 enableEncryption 方法。
声网视频 SDK 支持内置加密方案,默认支持 AES-128-XTS。如需采用其他加密方案,可以调用本方法。同一频道内的所有用户必须设置相同的加密方式和 secret 才能进行通话。关于这几种加密方式的区别,请参考 AES 加密算法的相关资料。
参数
- encryptionMode
-
加密模式:
- "
aes-128-xts
": 128 位 AES 加密,XTS 模式; - "
aes-128-ecb
": 128 位 AES 加密,ECB 模式; - "
aes-256-xts
": 256 位 AES 加密,XTS 模式; - "
sm4-128-ecb
": 128 位 SM4 加密,ECB 模式; - "
aes-128-gcm
": 128 位 AES 加密,GCM 模式; - "
aes-256-gcm
": 256 位 AES 加密,GCM 模式; - "": 设置为空字符串时,默认使用加密方式 "
aes-128-xts
"。
- "
setEncryptionSecret
启用内置加密,并设置数据加密密码。
Future<void> setEncryptionSecret(String secret);
- 弃用:
- 请改用 enableEncryption 方法。
在加入频道之前, app 需调用该方法指定 secret 来启用内置的加密功能,同一频道内的所有用户应设置相同的 secret。当用户离开频道时,该频道的 secret 会自动清除。如果未指定 secret 或将 secret 设置为空,则无法激活加密功能。
- 请不要在旁路推流时调用此方法。
- 为保证最佳传输效果,请确保加密后的数据大小不超过原始数据大小 + 16 字节。16 字节是 AES 通用加密模式下最大填充块大小。
参数
- secret
- 加密密码。
setMaxMetadataSize
设置媒体附属信息的最大大小。
Future<void> setMaxMetadataSize(int size);
调用 registerMediaMetadataObserver 后,你可以调用本方法来设置媒体附属信息的最大大小。
参数
- size
- 媒体附属信息的最大大小。
setRemoteDefaultVideoStreamType
设置默认订阅的视频流类型。
Future<void> setRemoteDefaultVideoStreamType(VideoStreamType streamType);
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode (false
) 关闭双流模式,接收端可以选择接收大流还是小流。其中,大流可以接为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。
正常情况下,用户默认接收大流。如需默认接收所有用户的视频小流,可以调用本方法进行切换。SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
调用本方法的执行结果将在 apiCallExecuted 中返回。
参数
- streamType
-
默认订阅的视频流类型: VideoStreamType 。
setRemoteUserPriority
设置远端用户媒体流的优先级。
Future<void> setRemoteUserPriority(int uid, UserPriority userPriority);
设置远端用户的优先级。如果将某个用户的优先级设为高,那么发给这个用户的音视频流的优先级就会高于其他用户。弱网下 SDK 会优先保证高优先级用户收到的流的质量。
- 目前声网 SDK 仅允许将一名远端用户设为高优先级。
- 该方法需要在加入频道前调用。
参数
- uid
- 远端用户的 ID。
- userPriority
- 远端用户的需求优先级。详见: UserPriority。
setRemoteVideoStreamType
设置订阅的视频流类型。
Future<void> setRemoteVideoStreamType(int userId, VideoStreamType streamType);
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode(false) 关闭双流模式,接收端可以选择接收大流还是小流。其中,大流为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。
正常情况下,用户默认接收大流。如需接收小流,可以调用本方法进行切换。SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
调用本方法的执行结果将在 apiCallExecuted 中返回。
参数
- userId
- 用户 ID。
- streamType
-
视频流类型: VideoStreamType 。
setRemoteVoicePosition
设置远端用户声音的 2D 位置,即水平面位置。
Future<void> setRemoteVoicePosition(int uid, double pan, double gain);
设置远端用户声音的 2D 位置和音量,方便本地用户听声辨位。
通过调用该接口设置远端用户声音出现的位置,左右声道的声音差异会产生声音的方位感,从而判断出远端用户的实时位置。在多人在线游戏场景,如吃鸡游戏中,该方法能有效增加游戏角色的方位感,模拟真实场景。
- 使用该方法需要在加入频道前调用 enableSoundPositionIndication 开启远端用户的语音立体声。
- 为获得最佳听觉体验,我们建议使用该方法时使用有线耳机。
- 该方法需要在加入频道后调用。
参数
- uid
- 远端用户的 ID
- pan
- 设置远端用户声音的 2D 位置,取值范围为 [-1.0,1.0]:
- (默认)0.0: 声音出现在正前方。
- -1.0: 声音出现在左边。
- 1.0: 声音出现在右边。
- gain
- 设置远端用户声音的音量,取值范围为 [0.0,100.0],默认值为 100.0,表示该用户的原始音量。取值越小,则音量越低。
startChannelMediaRelay
开始跨频道媒体流转发。该方法可用于实现跨频道连麦等场景。
Future<void> startChannelMediaRelay( ChannelMediaRelayConfiguration channelMediaRelayConfiguration);
- 如果 channelMediaRelayStateChanged 回调报告 Running (2) 和 None (0),且 channelMediaRelayEvent 回调报告 SentToDestinationChannel (4), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。
- 如果 channelMediaRelayStateChanged 回调报告 Failure (3), 则表示跨频道媒体流转发出现异常。
- 请在成功加入频道后调用该方法。
- 在直播场景中,只有角色为主播的用户才能调用该方法。
- 功调用该方法后,若你想再次调用该方法,必须先调用 stopChannelMediaRelay 方法退出当前的转发状态。
- 跨频道媒体流转发功能需要联系技术支持开通。
- 该功能不支持 String 型 UID。
参数
- channelMediaRelayConfiguration
- 跨频道媒体流转发参数配置。详见 ChannelMediaRelayConfiguration。
startRtmpStreamWithoutTranscoding
开始非转码推流。
Future<void> startRtmpStreamWithoutTranscoding(String url);
调用该方法,你可以向指定的 CDN 推流地址推送直播音视频流。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址推流,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 rtmpStreamingStateChanged 回调,报告推流的状态。
- 请确保已开通旁路推流服务,详见进阶功能旁路推流中的前提条件。
- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 stopRtmpStream,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
startRtmpStreamWithTranscoding
开始旁路推流并设置转码属性。
Future<void> startRtmpStreamWithTranscoding(LiveTranscoding transcoding);
调用该方法,你可以向指定的 CDN 推流地址推送直播音视频流并设置转码属性。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址转码推流,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 rtmpStreamingStateChanged 回调,报告推流的状态。
- 请确保已开通旁路推流服务,详见进阶功能旁路推流中的前提条件。
- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 stopRtmpStream,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
- transcoding
-
旁路推流的转码属性,详见 LiveTranscoding 类。
stopChannelMediaRelay
停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。
Future<void> stopChannelMediaRelay();
成功调用该方法后,SDK 会触发 channelMediaRelayStateChanged 回调。如果报告 Idle (0) 和 None (0),则表示已停止转发媒体流。
stopRtmpStream
结束旁路推流。
Future<void> stopRtmpStream(String url);
调用该方法,你可以结束指定的 CDN 推流地址上的直播。该方法每次只能结束一个推流地址上的直播,如果你需要结束多个推流地址的直播,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 rtmpStreamingStateChanged 回调,报告推流的状态。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
unpublish
停止将本地音视频流发布到本频道。
Future<void> unpublish();
如果当前 IChannel 频道没有发布音视频流,调用该方法后 SDK 会返回 -5(ERR_REFUSED)。
unregisterMediaMetadataObserver
取消注册媒体附属信息观测器。
Future<void> unregisterMediaMetadataObserver();
updateChannelMediaRelay
更新媒体流转发的频道。
Future<void> updateChannelMediaRelay( ChannelMediaRelayConfiguration channelMediaRelayConfiguration);
成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。
成功调用该方法后,SDK 会触发 channelMediaRelayEvent 回调, 并在回调中报告状态码 UpdateDestinationChannel (7)。
参数
- channelMediaRelayConfiguration
- 跨频道媒体流转发参数配置。详见 ChannelMediaRelayConfiguration 。