Public 成员函数

void setRtcChannelEventHandler (IRtcChannelEventHandler eventHandler)
 
IRtcChannelEventHandler getEventHandler ()
 
abstract int destroy ()
 
abstract String channelId ()
 
abstract String getCallId ()
 
abstract int getConnectionState ()
 
abstract int joinChannel (String token, String optionalInfo, int optionalUid, ChannelMediaOptions options)
 
abstract int joinChannelWithUserAccount (String token, String userAccount, ChannelMediaOptions options)
 
abstract int leaveChannel ()
 
abstract int publish ()
 
abstract int unpublish ()
 
abstract int renewToken (String token)
 
abstract int setEncryptionSecret (String secret)
 
abstract int setEncryptionMode (String encryptionMode)
 
abstract int registerMediaMetadataObserver (IMetadataObserver observer, int type)
 
abstract int setClientRole (int role)
 
abstract int setRemoteUserPriority (int uid, int userPriority)
 
abstract int setRemoteVoicePosition (int uid, double pan, double gain)
 
abstract int setRemoteRenderMode (int uid, int renderMode, int mirrorMode)
 
abstract int setDefaultMuteAllRemoteAudioStreams (boolean muted)
 
abstract int setDefaultMuteAllRemoteVideoStreams (boolean muted)
 
abstract int muteAllRemoteAudioStreams (boolean muted)
 
abstract int adjustUserPlaybackSignalVolume (int uid, int volume)
 
abstract int muteRemoteAudioStream (int uid, boolean muted)
 
abstract int muteAllRemoteVideoStreams (boolean muted)
 
abstract int muteRemoteVideoStream (int uid, boolean muted)
 
abstract int setRemoteVideoStreamType (int uid, int streamType)
 
abstract int setRemoteDefaultVideoStreamType (int streamType)
 
abstract int createDataStream (boolean reliable, boolean ordered)
 
abstract int sendStreamMessage (int streamId, byte[] message)
 
abstract int addPublishStreamUrl (String url, boolean transcodingEnabled)
 
abstract int removePublishStreamUrl (String url)
 
abstract int setLiveTranscoding (LiveTranscoding transcoding)
 
abstract int addInjectStreamUrl (String url, LiveInjectStreamConfig config)
 
abstract int removeInjectStreamUrl (String url)
 
abstract int startChannelMediaRelay (ChannelMediaRelayConfiguration channelMediaRelayConfiguration)
 
abstract int stopChannelMediaRelay ()
 
abstract int updateChannelMediaRelay (ChannelMediaRelayConfiguration channelMediaRelayConfiguration)
 
abstract int setRemoteVideoRenderer (int uid, IVideoSink render)
 

详细描述

RtcChannel 类。

自从
v3.0.0.

成员函数说明

◆ setRtcChannelEventHandler()

void io.agora.rtc.RtcChannel.setRtcChannelEventHandler ( IRtcChannelEventHandler  eventHandler)

设置频道事件句柄。

设置后,你可以通过 IRtcChannelEventHandler 回调监听对应频道内的事件、获取频道数据。

参数
eventHandlerRtcChannel 对象的事件回调:IRtcChannelEventHandler.

◆ getEventHandler()

IRtcChannelEventHandler io.agora.rtc.RtcChannel.getEventHandler ( )

获取频道事件句柄。

返回

◆ destroy()

abstract int io.agora.rtc.RtcChannel.destroy ( )
abstract

销毁当前的 RtcChannel 对象。

返回
  • 0:方法调用成功。
  • < 0:方法调用失败;
    • ERR_NOT_INITIALIZED(-7):调用该方法前尚未初始化 RtcChannel 对象。

◆ channelId()

abstract String io.agora.rtc.RtcChannel.channelId ( )
abstract

获取当前 RtcChannel 对象的 channel ID。

返回
  • 方法调用成功,则返回当前 RtcChannel 对象的 channel ID。
  • 方法调用失败,则返回空字符串 ""。

◆ getCallId()

abstract String io.agora.rtc.RtcChannel.getCallId ( )
abstract

获取当前的通话 ID.

返回
  • 方法调用成功,则返回当前的通话 ID。
  • 方法调用失败,则返回空字符串 ""。

◆ getConnectionState()

abstract int io.agora.rtc.RtcChannel.getConnectionState ( )
abstract

获取网络连接状态。

返回
当前的网络连接状态

◆ joinChannel()

abstract int io.agora.rtc.RtcChannel.joinChannel ( String  token,
String  optionalInfo,
int  optionalUid,
ChannelMediaOptions  options 
)
abstract

使用 uid 加入频道。

该方法与 RtcEngine 类下的 joinChannel 方法有以下区别:

RtcChannel::joinChannel RtcEngine::joinChannel
无 channelId 参数。因为创建 RtcChannel 对象时已指定了 channelId。 需要填入可以标识频道的 channelId。
加了 options 参数,可在加入频道前通过该参数设置是否订阅该频道的音视频流。 无 options 参数。加入频道即默认订阅频道内的音视频流。
通过创建多个 RtcChannel 对象,并调用相应对象的 joinChannel 方法,实现同时加入多个频道。 只允许加入一个频道。
通过该方法加入频道后,SDK 默认不发布本地音视频流到本频道,用户需要调用 publish 方法进行发布。 通过该方法加入频道后,SDK 默认发布音视频流发布到本频道。
注解
  • 该方法不支持相同的用户重复加入同一个频道。
  • 我们建议不同频道中使用不同的 UID。
  • 如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 UID 是不同的。
  • 请确保用于生成 Token 的 App ID 和创建 IRtcEngine 对象时用的 App ID 一致。
参数
token在 App 服务器端生成的用于鉴权的 Token:
optionalInfo开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。
optionalUid用户 ID,32 位无符号整数。建议设置范围:1 到 (232-1),并保证唯一性。如果不指定(即设为 0),SDK 会自动分配一个, 并在 onJoinChannelSuccess 回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
options频道媒体设置选项:ChannelMediaOptions
返回

◆ joinChannelWithUserAccount()

abstract int io.agora.rtc.RtcChannel.joinChannelWithUserAccount ( String  token,
String  userAccount,
ChannelMediaOptions  options 
)
abstract

使用 user account 加入频道.

该方法与 RtcEngine 类下的 joinChannelWithUserAccount 方法有以下区别:

RtcChannel::joinChannelWithUserAccount RtcEngine::joinChannelWithUserAccount
无 channelId 参数。因为创建 RtcChannel 对象时已指定了 channelId。 需要填入可以标识频道的 channelId。
加了 options 参数,可在加入频道前通过该参数设置是否订阅该频道的音视频流。 无 options 参数。加入频道即默认订阅频道内的音视频流。
通过创建多个 RtcChannel 对象,并调用相应对象的 joinChannelWithUserAccount 方法,实现同时加入多个频道。 只允许加入一个频道。
通过该方法加入频道后,SDK 默认不发布本地音视频流到本频道,用户需要调用 publish 方法进行发布。 通过该方法加入频道后,SDK 默认发布音视频流发布到本频道。
注解
  • 该方法不支持相同的用户重复加入同一个频道。
  • 我们建议不同频道中使用不同的 UID。
  • 如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 UID 是不同的。
  • 请确保用于生成 Token 的 App ID 和创建 IRtcEngine 对象时用的 App ID 一致。
参数
token在 App 服务器端生成的用于鉴权的 Token:
userAccount用户 User Account。该参数为必需,最大不超过 255 字节,不可为 null。请确保加入频道的 User Account 的唯一性。 以下为支持的字符集范围(共 89 个字符):
  • 26 个小写英文字母 a-z
  • 26 个大写英文字母 A-Z
  • 10 个数字 0-9
  • 空格
  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ","
options频道媒体设置选项:ChannelMediaOptions
返回

◆ leaveChannel()

abstract int io.agora.rtc.RtcChannel.leaveChannel ( )
abstract

离开当前频道。

成功调用该方法离开频道后,会触发如下回调:

返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ publish()

abstract int io.agora.rtc.RtcChannel.publish ( )
abstract

将本地音视频流发布到本频道。

该方法的调用需满足以下要求,否则 SDK 会返回 ERR_REFUSED(-5):

  • 该方法仅支持将音视频流发布到当前 RtcChannel 类所对应的频道。
  • 直播场景下,该方法仅适用于角色为主播的用户。你可以调用该 RtcChannel 类下的 setClientRole 方法设置用户角色。
  • SDK 只支持用户同一时间在一个频道发布一路音视频流。详情请参考高阶指南*多频道管理*。
    返回
  • 0:方法调用成功。
  • < 0:方法调用失败。
    • ERR_REFUSED(-5):调用被拒绝。

◆ unpublish()

abstract int io.agora.rtc.RtcChannel.unpublish ( )
abstract

停止将本地音视频流发布到本频道。

请确保你想要 unpublish 音视频流的频道 channelId,与当前正在 publish 音视频流的频道 channel ID 一致,否则 SDK 会返回 ERR_REFUSED(-5)。

返回
  • 0:方法调用成功。
  • < 0:方法调用失败。
    • ERR_REFUSED(-5):调用被拒绝。

◆ renewToken()

abstract int io.agora.rtc.RtcChannel.renewToken ( String  token)
abstract

更新 Token。

在如下情况下,SDK 判定当前的 Token 已过期:

你应该在服务端重新获取 token,然后调用该方法更新 Token,否则 SDK 无法和服务器建立连接。

参数
token新的 Token。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setEncryptionSecret()

abstract int io.agora.rtc.RtcChannel.setEncryptionSecret ( String  secret)
abstract

启用内置加密,并设置数据加密密码。

如果需要启用加密,请在加入频道前调用该方法启用内置加密功能,并设置加密密码。

同一频道内的所有用户应设置相同的密码。 当用户离开频道时,该频道的密码会自动清除。如果未指定密码或将密码设置为空,则无法激活加密功能。

注解
  • 为保证最佳传输效果,请确保加密后的数据大小不超过原始数据大小 + 16 字节。16 字节是 AES 通用加密模式下最大填充块大小。
  • 请勿在转码推流场景中使用该方法。
参数
secret加密密码。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setEncryptionMode()

abstract int io.agora.rtc.RtcChannel.setEncryptionMode ( String  encryptionMode)
abstract

设置内置的加密方案。

Agora SDK 支持内置加密功能,默认使用 AES-128-XTS 加密方式。如需使用其他加密方式,可以调用该 API 设置。 同一频道内的所有用户必须设置相同的加密方式和密码才能进行通话。关于这几种加密方式的区别,请参考 AES 加密算法的相关资料。 *

注解
  • 请勿在转码推流场景中使用该方法。
  • 该方法需要在 setEncryptionSecret 之后调用。
参数
encryptionMode加密方式:
  • "aes-128-xts":128 位 AES 加密,XTS 模式
  • "aes-128-ecb":128 位 AES 加密,ECB 模式
  • "aes-256-xts":256 位 AES 加密,XTS 模式
  • "":(默认)设置为空字符串时,默认使用加密方式 “aes-128-xts”
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ registerMediaMetadataObserver()

abstract int io.agora.rtc.RtcChannel.registerMediaMetadataObserver ( IMetadataObserver  observer,
int  type 
)
abstract

注册媒体 Metadata 观测器。

你需要在该方法中实现一个 IMetadataObserver 类,并指定 Metadata 的数据类型。成功调用该方法后,SDK 会触发 getMaxMetadataSize 回调。

该接口通过在直播的视频帧中同步添加 Metadata,实现发送商品链接、分发优惠券、发送答题等功能,构建更为丰富的直播互动方式。

注解
  • 请在调用 joinChannel 加入频道前调用该方法。
  • 该方法仅适用于直播场景。
参数
observerIMetadataObserver 类。
typeMetadata 的数据类型。目前 SDK 仅支持视频类的 Metadata,即 VIDEO_METADATA(0)
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setClientRole()

abstract int io.agora.rtc.RtcChannel.setClientRole ( int  role)
abstract

设置直播场景下的用户角色。

该方法设置用户角色为观众或主播。 直播频道中,只有角色为主播的用户才能调用 RtcChannel 类下的 publish 方法.

成功调用该方法切换用户角色后,SDK 会触发以下回调:

参数
role用户角色:
  • CLIENT_ROLE_BROADCASTER(1):直播频道中的主播。
  • CLIENT_ROLE_AUDIENCE(2):直播频道中的观众。
返回
  • 0:方法调用成功。 < 0:方法调用失败。

◆ setRemoteUserPriority()

abstract int io.agora.rtc.RtcChannel.setRemoteUserPriority ( int  uid,
int  userPriority 
)
abstract

设置用户媒体流优先级。

该方法可以与 setRemoteSubscribeFallbackOption 搭配使用。 如果将某个用户的优先级设为高,那么发给这个用户的音视频流的优先级就会高于其他用户。

注解
前 Agora SDK 仅允许将一名远端用户设为高优先级。
参数
uid远端用户的 ID。
userPriority远端用户的需求优先级:
  • USER_PRIORITY_HIGH(50):用户需求优先级为高。
  • USER_PRIORITY_NORMAL(100):(默认)用户需求优先级为正常。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setRemoteVoicePosition()

abstract int io.agora.rtc.RtcChannel.setRemoteVoicePosition ( int  uid,
double  pan,
double  gain 
)
abstract

设置远端用户声音的空间位置和音量,方便本地用户听声辨位。

用户通过调用该接口,设置远端用户声音出现的位置,左右声道的声音差异会让用户产生声音的方位感,从而判断出远端用户的实时位置。 在多人在线游戏场景,如吃鸡游戏中,该方法能有效增加游戏角色的方位感,模拟真实场景。

注解
  • 使用该方法需要在加入频道前调用 enableSoundPositionIndication 开启远端用户的语音立体声。
  • 为获得最佳听觉体验,我们建议用户佩戴耳机。
参数
uid远端用户的 ID。
pan设置远端用户声音出现的位置,取值范围为 [-1.0, 1.0]:
  • 0.0:(默认)声音出现在正前方。
  • -1.0:声音出现在左边。
  • 1.0:声音出现在右边。
gain设置远端用户声音的音量,取值范围为 [0.0, 100.0],默认值为 100.0,表示该用户的原始音量。取值越小,则音量越低。
返回
  • 0:方法调用成功。
  • -1:方法调用失败

◆ setRemoteRenderMode()

abstract int io.agora.rtc.RtcChannel.setRemoteRenderMode ( int  uid,
int  renderMode,
int  mirrorMode 
)
abstract

更新远端视图显示模式。

初始化远端用户视图后,你可以调用该方法更新远端用户视图在本地显示时的渲染和镜像模式。该方法只影响本地用户看到的视频画面。

注解
  • 请在调用 setupRemoteVideo 方法初始化远端视图后,调用该方法。
  • 你可以在通话中多次调用该方法,多次更新远端用户视图的显示模式。
参数
uid远端用户 ID。
renderMode远端用户视图的渲染模式:
  • RENDER_MODE_HIDDEN(1):优先保证视窗被填满。视频尺寸等比缩放,直至整个视窗被视频填满。如果视频长宽与显示窗口不同,多出的视频将被截掉。
  • RENDER_MODE_FIT(2):优先保证视频内容全部显示。视频尺寸等比缩放,直至视频窗口的一边与视窗边框对齐。如果视频长宽与显示窗口不同,视窗上未被填满的区域将被涂黑。
  • RENDER_MODE_ADAPTIVE(3):已废弃,不再推荐使用。
mirrorMode远端用户视图的镜像模式:
  • VIDEO_MIRROR_MODE_AUTO(0):(默认) 由 SDK 决定镜像模式。SDK 默认关闭远端用户的镜像模式。
  • VIDEO_MIRROR_MODE_ENABLED(1):开启镜像模式。
  • VIDEO_MIRROR_MODE_DISABLED(2):关闭镜像模式。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setDefaultMuteAllRemoteAudioStreams()

abstract int io.agora.rtc.RtcChannel.setDefaultMuteAllRemoteAudioStreams ( boolean  muted)
abstract

设置是否默认接收音频流。

参数
muted设置是否默认不接收所有远端音频:
  • true:不接收所有远端音频流。
  • false:(默认)接收所有远端音频流。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setDefaultMuteAllRemoteVideoStreams()

abstract int io.agora.rtc.RtcChannel.setDefaultMuteAllRemoteVideoStreams ( boolean  muted)
abstract

设置是否默认接收视频流。

参数
muted设置是否默认不接收所有远端视频:
  • true:不接收所有远端视频流。
  • false:(默认)接收所有远端视频流。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ muteAllRemoteAudioStreams()

abstract int io.agora.rtc.RtcChannel.muteAllRemoteAudioStreams ( boolean  muted)
abstract

停止/恢复接收所有音频流。

参数
muted设置是否停止/恢复接收所有音频流:
  • true:停止接收所有远端音频流。
  • false:(默认)继续接收所有远端音频流。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ adjustUserPlaybackSignalVolume()

abstract int io.agora.rtc.RtcChannel.adjustUserPlaybackSignalVolume ( int  uid,
int  volume 
)
abstract

调节本地播放的指定远端用户音量。

你可以在通话中调用该方法调节指定远端用户在本地播放的音量。如需调节多个用户在本地播放的音量,则需多次调用该方法。

注解
  • 该方法要在加入频道后调用。
  • 该方法调节的是本地播放的指定远端用户混音后的音量。
  • 该方法每次只能调整一位远端用户在本地播放的音量。若需调整多位远端用户在本地播放的音量,则需多次调用该方法。
参数
uid远端用户的 ID。
volume播放音量,取值范围为 [0,100]。
  • 0:静音。
  • 100:原始音量。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ muteRemoteAudioStream()

abstract int io.agora.rtc.RtcChannel.muteRemoteAudioStream ( int  uid,
boolean  muted 
)
abstract

停止/恢复接收指定音频流。

参数
uid指定的用户 ID。
muted设置是否停止/恢复接收指定音频流:
  • true:停止接收指定用户的音频流。
  • false:(默认)继续接收指定用户的音频流。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ muteAllRemoteVideoStreams()

abstract int io.agora.rtc.RtcChannel.muteAllRemoteVideoStreams ( boolean  muted)
abstract

停止/恢复接收所有视频流。

参数
muted设置是否停止/恢复接收所有视频流:
  • true:停止接收所有远端视频流。
  • false:(默认)继续接收所有远端视频流。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ muteRemoteVideoStream()

abstract int io.agora.rtc.RtcChannel.muteRemoteVideoStream ( int  uid,
boolean  muted 
)
abstract

停止/恢复接收指定视频流。

参数
uid指定的用户 ID。
muted设置视频停止/恢复接收指定视频流:
  • true:停止接收指定用户的视频流。
  • false:(默认)继续接收指定用户的视频流。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setRemoteVideoStreamType()

abstract int io.agora.rtc.RtcChannel.setRemoteVideoStreamType ( int  uid,
int  streamType 
)
abstract

设置订阅的视频流类型。

在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode(false) 关闭双流模式,接收端可以选择接收大流还是小流。其中,大流可以接为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。

正常情况下,用户默认接收大流。如需节约带宽和计算资源,则可以调用该方法动态调整对应远端视频流的大小。SDK 会根据该方法中的设置,切换大小流。

视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。

调用本方法的执行结果将在 onApiCallExecuted 中返回。

参数
uid远端用户的 ID。
streamType设置视频流大小类型:
  • VIDEO_STREAM_HIGH(0):视频大流,即高分辨率、高码率视频流。
  • VIDEO_STREAM_LOW(1):视频小流,即低分辨率、低码率视频流。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setRemoteDefaultVideoStreamType()

abstract int io.agora.rtc.RtcChannel.setRemoteDefaultVideoStreamType ( int  streamType)
abstract

设置默认订阅的视频流类型。

参数
streamType设置视频流大小类型:
  • VIDEO_STREAM_HIGH(0):视频大流,即高分辨率、高码率视频流
  • VIDEO_STREAM_LOW(1):视频小流,即低分辨率、低码率视频流
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ createDataStream()

abstract int io.agora.rtc.RtcChannel.createDataStream ( boolean  reliable,
boolean  ordered 
)
abstract

创建数据流。

该方法用于创建数据流。RtcChannel 生命周期内,每个用户最多只能创建 5 个数据流。频道内数据通道最多允许数据延迟 5 秒,若超过 5 秒接收方尚未收到数据流,则数据通道会向 App 报错。

参数
reliable设置是否保证接收方在 5 秒内收到数据消息:
  • true:接收方 5 秒内会收到发送方所发送的数据,否则会收到 onStreamMessageError 回调并获得相应报错信息。
  • false:接收方不保证收到,就算数据丢失也不会报错。
ordered设置接收方是否按发送方发送的顺序接收数据消息:
  • true:接收方会按照发送方发送的顺序收到数据包。
  • false:接收方不保证按照发送方发送的顺序收到数据包。
注解
请将 reliableordered 同时设置为 true 或 false,暂不支持交叉设置。
返回
  • 创建数据流成功则返回数据流 ID
  • < 0:创建数据流失败。如果返回的错误码是负数,对应错误代码和警告代码里的正整数。

◆ sendStreamMessage()

abstract int io.agora.rtc.RtcChannel.sendStreamMessage ( int  streamId,
byte []  message 
)
abstract

发送数据流。

该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:

  • 频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。
  • 每个客户端每秒最多能发送 6 KB 数据。
  • 频道内每人最多能同时有 5 个数据通道。

成功调用该方法后,远端会触发 onStreamMessage 回调,远端用户可以在该回调中获取接收到的流消息; 若调用失败,远端会触发 onStreamMessageError 回调。

参数
streamIdcreateDataStream 方法返回的数据流 ID。
message待发送的数据,格式为 byte[]。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ addPublishStreamUrl()

abstract int io.agora.rtc.RtcChannel.addPublishStreamUrl ( String  url,
boolean  transcodingEnabled 
)
abstract

增加旁路推流地址。

调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调,报告增加旁路推流地址的状态。

参数
urlCDN 推流地址,格式为 RTMP。该字符长度不能超过 1024 字节。url 不支持中文等特殊字符。
transcodingEnabled是否转码。如果设为 true,则需要在该方法前先调用 setLiveTranscoding 方法。
  • true:转码。转码是指在旁路推流时对音视频流进行转码处理后,再推送到其他 RTMP 服务器。多适用于频道内有多个主播,需要进行混流、合图的场景。
  • false:不转码。
注解
  • 调用该方法前,请确保已开通旁路推流的功能,详见进阶功能《推流到 CDN》中的前提条件。
  • 请确保在成功加入频道后才能调用该接口。
  • 该方法仅适用直播场景。
  • 该方法每次只能增加一路旁路推流地址。若需推送多路流,则需多次调用该方法。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。
    • ERR_INVALID_ARGUMENT(2):参数无效,一般是 URL 为空或是长度为 0 的字符串。
    • ERR_NOT_INITIALIZED(7):推流时未初始化 RtcChannel。

◆ removePublishStreamUrl()

abstract int io.agora.rtc.RtcChannel.removePublishStreamUrl ( String  url)
abstract

删除旁路推流地址。

调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调, 报告删除旁路推流地址的状态。

注解
  • 调用该方法前,请确保已开通旁路推流的功能,详见进阶功能《推流到 CDN》中的前提条件。
  • 该方法只适用于直播场景。
  • 该方法每次只能删除一路旁路推流地址。若需删除多路流,则需多次调用该方法。
参数
url待删除的推流地址,格式为 RTMP。该字符长度不能超过 1024 字节。推流地址不支持中文等特殊字符。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setLiveTranscoding()

abstract int io.agora.rtc.RtcChannel.setLiveTranscoding ( LiveTranscoding  transcoding)
abstract

设置直播转码。

该方法用于旁路推流的视图布局及音频设置等。调用该方法更新转码参数 LiveTranscoding 时,SDK 会触发 onTranscodingUpdated 回调。

首次调用该方法设置转码参数时,不会触发 onTranscodingUpdated 回调。

注解
  • 请确保已开通旁路推流的功能,详见进阶功能《推流到 CDN》中的前提条件。
  • 该方法仅适用于直播场景下的主播用户。
  • 请确保先调用过该方法,再调用 addPublishStreamUrl
参数
transcoding旁路推流布局相关设置:LiveTranscoding
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ addInjectStreamUrl()

abstract int io.agora.rtc.RtcChannel.addInjectStreamUrl ( String  url,
LiveInjectStreamConfig  config 
)
abstract

输入在线媒体流。

该方法通过在服务端拉取视频流并发送到频道中,将正在播出的视频输入到正在进行的直播中。可主要应用于赛事直播、多人看视频互动等直播场景。

调用该方法后,SDK 会在本地触发 onStreamInjectedStatus 回调,报告输入在线媒体流的状态;成功输入媒体流后,该音视频流会出现在频道中,频道内所有用户都会收到 onUserJoined(uid: 666)。

注解
  • 调用该方法前,请确保已开通旁路推流的功能,详见进阶功能《推流到 CDN》中的前提条件。
  • 该方法仅适用于直播场景中的主播用户。
参数
url添加到直播中的视频流 URL 地址,支持 RTMP, HLS, FLV 协议传输。
  • 支持的 FLV 音频编码格式:AAC。
  • 支持的 FLV 视频编码格式:H264 (AVC)。
config外部输入的音视频流的配置:LiveInjectStreamConfig
返回
  • 0:方法调用成功
  • < 0:方法调用失败
    • ERR_INVALID_ARGUMENT(2):输入的 URL 为空。请重新调用该方法,并确认输入的媒体流的 URL 是有效的。
    • ERR_NOT_READY(3):用户没有加入频道。
    • ERR_NOT_SUPPORTED(4):频道非直播场景。请调用 setChannelProfile 并将频道设置为直播场景再调用该方法。
    • ERR_NOT_INITIALIZED(7):引擎没有初始化。请确认调用该方法前已创建 RtcEngine 对象并完成初始化。

◆ removeInjectStreamUrl()

abstract int io.agora.rtc.RtcChannel.removeInjectStreamUrl ( String  url)
abstract

删除输入的在线媒体流。

成功删除后,会触发 onUserJoined 回调,其中 uid 为 666。

参数
url待删除的外部视频流 URL 地址,格式为 HTTP 或 HTTPS。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ startChannelMediaRelay()

abstract int io.agora.rtc.RtcChannel.startChannelMediaRelay ( ChannelMediaRelayConfiguration  channelMediaRelayConfiguration)
abstract

开始跨频道媒体流转发。

成功调用该方法后,SDK 会触发 onChannelMediaRelayStateChangedonChannelMediaRelayEvent 回调,并在回调中报告当前的跨频道媒体流转发状态和事件。

  • 如果 onChannelMediaRelayStateChanged 回调报告 RELAY_STATE_RUNNING(2) 和 RELAY_OK(0),且 onChannelMediaRelayEvent 回调报告 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL(4),则表示 SDK 开始在源频道和目标频道之间转发媒体流。
  • 如果 onChannelMediaRelayStateChanged 回调报告 RELAY_STATE_FAILURE(3),则表示跨频道媒体流转发出现异常。
注解
  • 跨频道媒体流转发功能需要提交工单联系技术支持开通。
  • 该功能不支持 String 型 UID。
  • 请在成功加入频道后调用该方法。
  • 该方法仅适用于直播场景下的主播。
  • 成功调用该方法后,若你想再次调用该方法,必须先调用 stopChannelMediaRelay 方法退出当前的转发状态。
参数
channelMediaRelayConfiguration跨频道媒体流转发参数配置:ChannelMediaRelayConfiguration
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ stopChannelMediaRelay()

abstract int io.agora.rtc.RtcChannel.stopChannelMediaRelay ( )
abstract

停止跨频道媒体流转发。

一旦停止,主播会退出所有目标频道。

成功调用该方法后,SDK 会触发 onChannelMediaRelayStateChanged 回调。 如果报告 RELAY_STATE_IDLE(0) 和 RELAY_OK(0),则表示已停止转发媒体流。

注解
如果该方法调用不成功,SDK 会触发 onChannelMediaRelayStateChanged 回调,并报告状态码 RELAY_ERROR_SERVER_NO_RESPONSE(2) 或 RELAY_ERROR_SERVER_CONNECTION_LOST(8)。 你可以调用 leaveChannel 方法离开频道,跨频道媒体流转发会自动停止。 the media stream relay automatically stops.
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ updateChannelMediaRelay()

abstract int io.agora.rtc.RtcChannel.updateChannelMediaRelay ( ChannelMediaRelayConfiguration  channelMediaRelayConfiguration)
abstract

更新媒体流转发的频道。

成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。

成功调用该方法后,SDK 会触发 onChannelMediaRelayEvent 回调, 并在回调中报告状态码 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL(7)。

注解
  • 请在 startChannelMediaRelay 方法后调用该方法,更新媒体流转发的频道。
  • 跨频道媒体流转发最多支持 4 个目标频道。如果直播间里已经有 4 个频道了,你可以在调用该方法之前,调用 ChannelMediaRelayConfiguration 类中的 removeDestChannelInfo 方法移除不需要的频道。
参数
channelMediaRelayConfiguration跨频道媒体流转发参数配置:ChannelMediaRelayConfiguration.
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setRemoteVideoRenderer()

abstract int io.agora.rtc.RtcChannel.setRemoteVideoRenderer ( int  uid,
IVideoSink  render 
)
abstract

自定义 RtcChannel 对象的远端视频渲染器。

自从
3.0.1

自定义远端视频渲染器,表示自定义渲染远端用户看到的本地视频画面。实时音视频互动过程中,Agora SDK 通常会启动默认的视频渲染器进行视频渲染。多频道场景下,当需要自定义视频渲染器时,你可以先通过 IVideoSink 自定义渲染器,然后调用该方法将自定义的渲染器添加到 RtcChannel 中。

参数
uid远端用户的 ID。
render自定义的远端视频渲染器。详见 IVideoSink
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。