API 概览
频道相关接口:
接口名 | 描述 |
加入频道 | |
设置媒体选项并进入频道 | |
离开频道 | |
设置频道场景 | |
设置用户角色 | |
设置直播场景下的用户角色和级别 | |
加入频道后更新频道媒体选项 |
音频相关接口
接口名 | 描述 |
取消或恢复订阅所有远端用户的音频流 | |
取消或恢复发布本地音频流 | |
取消或恢复订阅指定远端用户的音频流 | |
调节本地播放的指定远端用户信号音量 | |
调节本地播放的所有远端用户信号音量 | |
关闭音频模块 | |
启用音频模块 | |
启用用户音量提示 | |
设置音频编码属性 | |
调节音频采集信号音量 | |
开启耳返功能 | |
开关本地音频采集 | |
设置耳返音量 |
路由设置
接口名 | 描述 |
开启或关闭扬声器播放 | |
检查扬声器状态启用状态 | |
设置默认的音频路由 | |
选择通话音量模式下的音频路由 |
视频相关接口
接口名 | 描述 |
启用视频模块 | |
关闭视频模块 | |
取消或恢复订阅所有远端用户的视频流 | |
取消或恢复发布本地视频流 | |
取消或恢复订阅指定远端用户的视频流 | |
设置视频编码属性 | |
开启视频预览 | |
停止摄像头预览 | |
设置本地画面的渲染参数 | |
设置远端画面的渲染模式 | |
初始化本地视图 | |
初始化远端用户视图 | |
选切换前置/后置摄像头 |
事件回调
接口名 | 描述 |
发生错误回调 | |
直播场景下用户角色已切换回调 | |
直播场景下切换用户角色失败回调 | |
成功加入频道回调 | |
离开频道回调 | |
成功重新加入频道回调 | |
远端用户(通信场景)/主播(直播场景)加入当前频道回调 | |
远端用户(通信场景)/主播(直播场景)离开当前频道回调 | |
当前通话统计信息回调 | |
通话中远端音频流的统计信息回调 | |
通话中本地音频流的统计信息回调 | |
通话中远端视频流的统计信息回调 | |
本地视频流统计信息回调 | |
用户音量提示回调 | |
已发布本地音频首帧回调 | |
远端音频流状态发生改变回调 | |
远端用户(通信场景)/主播(直播场景)停止或恢复发送音频流回调 | |
本地视频状态发生改变回调 | |
远端视频状态发生改变回调 | |
本地或远端视频大小和旋转信息发生改变回调 | |
音频路由已发生变化回调 | |
已发布本地视频首帧回调 | |
已显示本地视频首帧回调 | |
渲染器已接收首帧远端视频回 |
第三方美颜
注册原始视频观测器对象 | |
| |
API 详情
joinChannel [1/2](加入频道)
joinChannel
abstract public int joinChannel(String token, String channelId, String optionalInfo, int uid);
详情: | 该方法让用户加入通话频道,加入成功后本地会触发 onJoinChannelSuccess 回调。通信场景下的用户和直播场景下的主播加入频道后,远端会触发 onUserJoined 回调。 |
参数: | token 用户签名(必填),当前 userId 对应的验证签名,相当于使用云服务的登录密码,具体使用方法参见:
如何使用token。 |
| channelId 频道名,限制长度为 64 字节。以下为支持的字符集范围(共 89 个字符): 大小写英文字母(a-z A-Z) 数字(0-9) 空格、 ! # $ % & ( ) + - : ; < = . > ? @ [ ] ^ _ { } | ~ , 。 |
| optionalInfo (非必选项) 预留参数。 |
| uid 用户 ID。该参数用于标识在实时音视频互动频道中的用户。 |
joinChannel [2/2](设置媒体选项并进入频道)
joinChannel
abstract public int joinChannel(String token, String channelId, int uid, ChannelMediaOptions options);
详情: | 相比上一个 joinChannel[1/2] 方法,该方法该方法增加了 options 参数,用于配置用户加入频道时是否自动订阅频道内所有远端音视频流。 |
参数: | token 用户签名(必填),当前 userId 对应的验证签名,相当于使用云服务的登录密码,具体使用方法参见:
如何使用token。 |
| channelId 频道名,限制长度为 64 字节。以下为支持的字符集范围(共 89 个字符): 大小写英文字母(a-z A-Z) 数字(0-9) 空格、 ! # $ % & ( ) + - : ; < = . > ? @ [ ] ^ _ { } | ~ , 。 |
| publishCameraTrack 设置是否发布摄像头采集的视频:true:发布摄像头采集的视频。false:不发布摄像头采集的视频。 publishMicrophoneTrack 设置是否发布麦克风采集到的音频:true:发布麦克风采集到的音频。false:不发布麦克风采集到的音频。 clientRoleType CLIENT_ROLE_BROADCASTER (1):主播。CLIENT_ROLE_AUDIENCE (2):观众。 autoSubscribeAudio 设置是否自动订阅所有音频流:true:自动订阅所有音频流。false:不自动订阅任何音频流。 autoSubscribeVideo 设置是否自动订阅所有视频流:true:自动订阅所有视频流。false:不自动订阅任何视频流。 channelProfile 频道使用场景:CHANNEL_PROFILE_COMMUNICATION (0):通信。声网推荐使用直播场景以获取更好的音视频体验。CHANNEL_PROFILE_LIVE_BROADCASTING (1):(默认)直播。 |
| uid 用户 ID。该参数用于标识在实时音视频互动频道中的用户。 |
leaveChannel(离开频道)
leaveChannel
abstract public int leaveChannel();
详情: | 调用该接口使用户离开当前房间,并释放摄像头、麦克风、扬声器等资源,等资源释放完毕后: 本地会触发 onLeaveChannel 回调。 远端会触发 onUserOffline 回调。 |
setChannelProfile(设置频道场景)
setChannelProfile
abstract public int setChannelProfile(int profile);
详情: | SDK 会针对不同的使用场景采用不同的优化策略,以获取最佳的音视频传输体验。 |
参数: | profile 频道使用场景: CHANNEL_PROFILE_COMMUNICATION (0):通信。声网推荐使用直播场景以获取更好的音视频体验。 HANNEL_PROFILE_LIVE_BROADCASTING (1):(默认)直播。 |
注意:
该方法必须在 joinChannel 前调用和进行设置,进入频道后无法再设置。
setClientRole [1/2](设置用户角色)
setClientRole
abstract public int setClientRole(int role);
详情: | SDK 会针对不同的使用场景采用不同的优化策略,以获取最佳的音视频传输体验。 |
参数: | role 用户的角色: CLIENT_ROLE_BROADCASTER (1):主播。 CLIENT_ROLE_AUDIENCE (2):观众。 |
注意:
当您创建的engine为TRTCCloud时,该方法只能在加入频道后使用。
setClientRole [2/2](设置直播场景下的用户角色和级别)
setClientRole
public abstract int setClientRole(int role, ClientRoleOptions options);
详情: | 只有加入频道后才可调用该方法设置用户角色,该方法与 setClientRole [1/2] 效果一样,设置options参数无效。 |
参数: | role 用户的角色: CLIENT_ROLE_BROADCASTER (1):主播。 CLIENT_ROLE_AUDIENCE (2):观众。 |
|
注意:
当您创建的 engine 为 TRTCCloud 时,该参数不生效。
当您创建的 engine 为 TRTCCloud 时,该方法只能在加入频道后使用。
updateChannelMediaOptions(加入频道后更新频道媒体选项)
updateChannelMediaOptions
public abstract int updateChannelMediaOptions(ChannelMediaOptions options);
参数: | publishCameraTrack 设置是否发布摄像头采集的视频: true:发布摄像头采集的视频。 false:不发布摄像头采集的视频。 publishMicrophoneTrack 设置是否发布麦克风采集到的音频: true:发布麦克风采集到的音频。 false:不发布麦克风采集到的音频。 clientRoleType 用户的角色: CLIENT_ROLE_BROADCASTER (1):主播。 CLIENT_ROLE_AUDIENCE (2):观众。其他设置不生效。 |
| |
注意:
当您创建的 engine 为 TRTCCloud 时,该参数不生效。
当您创建的 engine 为 TRTCCloud 时,该方法只能在加入频道后使用。
muteAllRemoteAudioStreams(取消或恢复订阅所有远端用户的音频流)
muteAllRemoteAudioStreams
abstract public int muteAllRemoteAudioStreams(boolean muted);
详情: | 成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流。 |
参数: | muted 是否取消订阅所有远端用户的音频流: true: 取消订阅所有远端用户的音频流。 false:(默认)订阅所有远端用户的音频流。 |
| |
muteLocalAudioStream(取消或恢复发布本地音频流)
muteLocalAudioStream
abstract public int muteLocalAudioStream(boolean muted);
详情: | 成功调用该方法后,远端会触发 onUserMuteAudio 回调和 onRemoteAudioStateChanged 回调。 |
参数: | muted 是否取消订阅所有远端用户的音频流: true: 取消发布本地音频流。 false:发布本地音频流。 |
| |
muteRemoteAudioStream(取消或恢复订阅指定远端用户的音频流)
muteRemoteAudioStream
abstract public int muteRemoteAudioStream(int uid, boolean muted);
详情: | 成功调用该方法后,远端会触发 onUserMuteAudio 回调和 onRemoteAudioStateChanged 回调。 |
参数: | uid 指定用户的用户 ID。 |
| |
| muted 是否取消订阅所有远端用户的音频流: true: 取消订阅指定用户的音频流。 false:(默认)订阅指定用户的音频流。 |
注意:
该方法需要在加入频道后调用。
adjustUserPlaybackSignalVolume(调节本地播放的指定远端用户信号音量)
adjustUserPlaySignalVolume
abstract public int adjustUserPlaybackSignalVolume(int uid, int volume);
详情: | 您可以在通话中调用该方法调节指定远端用户在本地播放的音量。如需调节多个用户在本地播放的音量,则需多次调用该方法。 |
参数: | uid 指定用户的用户 ID。 |
| |
| volume 音量范围为 [0,100]。 |
adjustPlaybackSignalVolume(调节本地播放的所有远端用户信号音量)
adjustPlaybackSignalVolume
abstract public int adjustPlaybackSignalVolume(int volume);
详情: | 调节本地播放的所有远端用户信号音量。 |
参数: | volume 音量,取值范围为 [0,400]。 |
| |
| |
disableAudio(关闭音频模块)
disableAudio
abstract public int disableAudio();
详情: | 调用该接口后,音频相关接口将不生效。 |
| |
| |
注意:
当您创建的实例为 RtcEngine 时,会停止本地麦克风采集、停止发布本地音频流、停止接收所有远端音频流。而当您创建的实例为 TRTCCloud 时,音频相关接口调用将不再生效。
enableAudio(启用音频模块)
enableAudio
abstract public int enableAudio();
详情: | 调用该接口后,音频相关接口将生效。 |
注意:
当您创建的实例为 RtcEngine 时,会开启本地麦克风采集、创建并发布本地音频流、接收并播放所有远端音频流。而当您创建的实例为TRTCCloud 时,音频相关接口将生效。
enableAudioVolumeIndication(启用用户音量提示)
enableAudioVolumeIndicatio
abstract public int enableAudioVolumeIndication(int interval, int smooth, boolean reportVad);
详情: | 调用该接口后,engine 会按设置的时间间隔触发 onAudioVolumeIndication 回调报告音量信息。 |
参数: | interval 回调的触发间隔,单位为毫秒。 ≤ 0: 关闭回调。 > 0: 返回音量提示的间隔,单位为毫秒,最小间隔为 100ms,推荐值:300ms。 |
| smooth 平滑系数,该参数目前不生效。 |
| reportVad 是否开启本地人声检测功能,在 enableLocalAudio 之前调用才可以生效。 |
setAudioProfile(设置音频编码属性)
setAudioProfile
abstract public int setAudioProfile(int profile);
参数: | profile 音频编码属性,详见参数 profile,目前仅有以下参数生效: profile = 1:流畅:采样率:16k;单声道;音频裸码率:16kbps;适合语音通话为主的场景,例如在线会议,语音通话。 profile = 2:默认:采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之。 profile = 4、profile = 5:高音质:采样率:48k;双声道 + 全频带;音频裸码率:128kbps;适合需要高保真传输音乐的场景,例如在线K歌、音乐直播等。 profile等于其他值均为:默认:采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量。 |
adjustRecordingSignalVolume(调节音频采集信号音量)
adjustRecordingSingalVolume
abstract public int adjustRecordingSignalVolume(int volume);
参数: | volume 音量,取值范围为 [0,400]。 |
enableInEarMonitoring(开启耳返功能)
enableInEarMonitoring
abstract public int enableInEarMonitoring(boolean enabled);
详情: | 成功调用该方法后,开启耳返功能 |
参数: | enabled 开启/关闭耳返功能: true: 开启耳返功能。 false: (默认)关闭耳返功能。 |
| |
enableLocalAudio(开关本地音频采集)
enableLocalAudio
abstract public int enableLocalAudio(boolean enabled);
详情: | SDK 默认不开启麦克风,当用户需要发布本地音频时,需要调用该接口开启麦克风采集,并将音频编码并发布到当前的房间中。
开启本地音频的采集和发布后,房间中的其他用户会收到 onUserMuteAudio 的通知。 |
参数: | enabled 开启/关闭本地音频采集: true: 开启。 false: 关闭。 |
| |
setInEarMonitoringVolume(设置耳返音量)
setInEarMonitoringVolume
abstract public int setInEarMonitoringVolume(int volume);
详情: | 该接口可设置耳返音量,取之范围[0,400]。 |
参数: | volume 音量大小,取值范围为[0,400],默认值:400。 |
| |
setEnableSpeakerphone(开启或关闭扬声器播放)
setEnableSpeakerphone
abstract public int setEnableSpeakerphone(boolean enabled);
详情: | 手机有两个扬声器:一个是位于手机顶部的听筒,一个是位于手机底部的立体声扬声器。 设置音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。 设置音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。 |
参数: | enabled 设置是否开启扬声器播放: true: 开启。音频路由为扬声器。 false: 关闭。音频路由为听筒。 |
| |
isSpeakerphoneEnabled(检查扬声器状态启用状态)
isSpeakerphoneEnabled
abstract public boolean isSpeakerphoneEnabled();
详情: | 调用该接口可获得扬声器的状态(开启/关闭) |
参数: | 返回值: true: 扬声器已开启,语音会输出到扬声器。 false: 扬声器未开启,语音会输出到非扬声器(听筒,耳机等)。 |
| |
setDefaultAudioRoutetoSpeakerphone(设置默认的音频路由)
setDefaultAudioRoutetoSpeakerphone
abstract public int setDefaultAudioRoutetoSpeakerphone(boolean defaultToSpeaker);
详情: | 调用该接口设置默认音频路由(听筒/扬声器)。 |
参数: | defaultToSpeaker 是否使用扬声器作为默认的音频路由: true: 设置默认音频路由为扬声器。 false: 设置默认音频路由为听筒。 |
| |
注意:
该方法需要在加入频道前调用。如需在加入频道后切换音频路由,请调用 setEnableSpeakerphone。
setRouteInCommunicationMode(选择通话音量模式下的音频路由)
setRouteInCommunicationMode
abstract public int setRouteInCommunicationMode(int route);
详情: | 调用该接口设置通话模式下的音频路由。 |
参数: | 1:听筒。 其他值均为:扬声器。 |
| |
注意:
当您创建的实例为 TRTCCloud 类型时,目前只设置听筒和扬声器生效。
enableVideo(启用视频模块)
enableVideo
abstract public int enableVideo();
详情: | 当您调用该接口后,视频相关接口将生效。 |
注意:
当您创建的 engine 为 RtcEngine 类型时,会创建并发布本地视频流,接收并播放远端所有视频流。而当当您创建的实例 为TRTCCloud 类型时,调用该接口后视频相关接口将生效。
disableVideo(关闭视频模块)
disableVideo
abstract public int disableVideo();
详情: | 当您调用该接口后,视频相关接口将不生效。 |
注意:
当您创建的实例为 RtcEngine 类型时,会停止发布本地视频流,停止接收远端所有视频流。而当当您创建的实例 为 TRTCCloud 类型时,调用该接口后视频相关接口将生效。
muteAllRemoteVideoStreams(取消或恢复订阅所有远端用户的视频流)
muteAllRemoteVideoStreams
abstract public int muteAllRemoteVideoStreams(boolean muted);
详情: | 该接口仅暂停/恢复接收所有用户的视频流,但并不释放显示资源,视频画面会被冻屏在接口调用时的最后一帧。 |
参数: | muted 是否取消订阅所有远端用户的视频流: true: 取消订阅所有用户的视频流。 false:(默认)订阅所有用户的视频流。 |
muteLocalVideoStream(取消或恢复发布本地视频流)
muteLocalVideoStream
abstract public int muteLocalVideoStream(boolean muted);
详情: | 成功调用该方法后,远端会触发 onUserMuteVideo 回调。 |
参数: | muted 是否取消发送本地视频流: true: 取消发送本地视频流。 false:(默认)发送本地视频流。 |
muteRemoteVideoStream(取消或恢复订阅指定远端用户的视频流)
muteRemoteVideoStream
abstract public int muteRemoteVideoStream(int userId, boolean muted);
详情: | 成功调用该方法后,会根据 userId 指定订阅远端用户的视频流 |
参数: | userId 指定用户的用户 ID。 |
| muted 是否取消订阅指定远端用户的视频流: true: 取消订阅指定用户的视频流。 false:(默认)订阅指定用户的视频流。 |
setVideoEncoderConfiguration(设置视频编码属性)
setVideoEncoderConfiguration
abstract public int setVideoEncoderConfiguration(VideoEncoderConfiguration config);
详情: | 成功调用该方法后,可设置视频编码属性,当您创建的实例为 TRTCCloud 类型时,目前仅支持 dimensions(分辨率)、frameRate(视频编码的帧率)、bitrate(视频编码码率)、orientationMode(视频编码的方向模式)几项配置。 |
参数: | |
| 0: 调用成功。 <0: 调用失败。 |
注意:
当您创建的实例 为 TRTCCloud 类型时,参数 config 仅支持 dimensions(分辨率)、frameRate(视频编码的帧率)、bitrate(视频编码码率)、orientationMode(视频编码的方向模式)几项配置。
startPreview(开启视频预览)
startPreview
public abstract int startPreview();
详情: | 在 joinChannel 之前调用此函数,SDK 只会开启摄像头,并一直等到您调用 joinChannel 之后才开始推流。在 joinChannel 之后调用此函数,SDK 会开启摄像头并自动开始视频推流。调用该方法前,必须先调用 enableVideo开启视频功能、setupLocalVideo 初始化本地视图。 |
stopPreview(停止摄像头预览)
stopPreview
abstract public int stopPreview();
详情: | 调用 startPreview 开启预览后,如果您想关闭本地视频预览,请调用该方法。 |
setLocalRenderMode(设置本地画面的渲染参数)
setLocalRenderMode
abstract public int setLocalRenderMode(int renderMode, int mirrorMode);
详情: | 初始化本地用户视图后,您可以调用该方法更新本地用户视图的渲染和镜像模式。该方法只影响本地用户看到的视频画面,不影响本地发布视频。 |
参数: | renderMode 画面填充模式: RENDER_MODE_HIDDEN (1):填充模式:即将画面内容居中等比缩放以充满整个显示区域,超出显示区域的部分将会被裁剪掉,此模式下画面可能不完整。 RENDER_MODE_FIT (2):适应模式:即按画面长边进行缩放以适应显示区域,短边部分会被填充为黑色,此模式下图像完整但可能留有黑边。 |
| mirrorMode 画面镜像模式: VIDEO_MIRROR_MODE_AUTO (0):自动模式:如果正使用前置摄像头则开启镜像,如果是后置摄像头则不开启镜像(仅适用于移动设备)。 VIDEO_MIRROR_MODE_ENABLED (1):强制开启镜像,不论当前使用的是前置摄像头还是后置摄像头。 VIDEO_MIRROR_MODE_DISABLED (2):强制关闭镜像,不论当前使用的是前置摄像头还是后置摄像头。 |
setRemoteRenderMode(设置远端画面的渲染模式)
setRemoteRenderMode
abstract public int setRemoteRenderMode(int userId, int renderMode, int mirrorMode);
详情: | 初始化远端用户视图后,您可以调用该方法更新远端用户视图在本地显示时的渲染和镜像模式。该方法只影响本地用户看到的视频画面。 |
参数: | userId 远端用户 ID。 |
| renderMode 画面填充模式: RENDER_MODE_HIDDEN (1):填充模式:即将画面内容居中等比缩放以充满整个显示区域,超出显示区域的部分将会被裁剪掉,此模式下画面可能不完整。 RENDER_MODE_FIT (2):适应模式:即按画面长边进行缩放以适应显示区域,短边部分会被填充为黑色,此模式下图像完整但可能留有黑边。 |
| mirrorMode 画面镜像模式: VIDEO_MIRROR_MODE_AUTO (0):自动模式:如果正使用前置摄像头则开启镜像,如果是后置摄像头则不开启镜像(仅适用于移动设备)。 VIDEO_MIRROR_MODE_ENABLED (1):强制开启镜像,不论当前使用的是前置摄像头还是后置摄像头。 VIDEO_MIRROR_MODE_DISABLED (2):强制关闭镜像,不论当前使用的是前置摄像头还是后置摄像头。 |
setupLocalVideo(初始化本地视图)
setupLocalVideo
abstract public int setupLocalVideo(VideoCanvas local);
详情: | 该方法初始化本地视图并设置本地用户视频显示属性,只影响本地用户看到的视频画面,不影响本地发布视频。调用该方法绑定本地视频流的显示视窗(view),并设置本地用户视图的渲染模式和镜像模式。 |
参数: | |
| |
| |
注意:
当您创建的实例为 TRTCCloud 类型时,传入参数仅生效 local.view、local.renderMode、local.mirrorMode。
setupRemoteVideo(初始化远端用户视图)
setupRemoteVideo
abstract public int setupRemoteVideo(VideoCanvas remote);
详情: | 调用该方法绑定远端视频流的显示视窗(view)。 |
参数: | |
| |
| |
注意:
当您创建的实例为 TRTCCloud 类型时,传入参数仅生效 local.view、local.renderMode、local.mirrorMode。
switchCamera(选切换前置/后置摄像头)
switchCamera
abstract public int switchCamera();
详情: | 该方法开启摄像头前后均可使用。 |
| |
onError(发生错误回调)
onError
public void onError(int err) {}
详情: | 该回调方法表示 SDK 运行时出现了网络或媒体相关的错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。 |
| |
参数: | ERR_OK(0):没有错误。 ERR_JOIN_CHANNEL_REJECTED(17)。加入频道被拒绝。 ERR_INVALID_APP_ID(101):不是有效的 App ID。请更换有效的 App ID 重新加入频道。 ERR_INVALID_CHANNEL_NAME(102):不是有效的频道名。可能的原因是设置的参数数据类型不正确。请更换有效的频道名重新加入频道。 ERR_CONNECTION_INTERRUPTED(111):网络连接中断。SDK 在和服务器建立连接后,失去网络连接超过 4 秒。 ERR_ADM_STOP_PLAYOUT(1010):停止播放设备出错。 |
说明:
当您创建的实例为TRTCCloud时,除以上有效错误码外,其他错误码均为ERR_FAILED(1):一般性的错误(没有明确归类的错误原因)
onClientRoleChanged(直播场景下用户角色已切换回调)
onClientRoleChanged
public void onClientRoleChanged(int oldRole, int newRole, ClientRoleOptions newRoleOptions) {}
详情: | 该回调是由本地用户在加入频道后调用 setClientRole 改变用户角色触发的。 |
| |
参数: | oldRole 切换前的角色: CLIENT_ROLE_BROADCASTER (1):主播。 CLIENT_ROLE_AUDIENCE (2):观众。 |
| newRole 切换后的角色: CLIENT_ROLE_BROADCASTER (1):主播。 CLIENT_ROLE_AUDIENCE (2):观众。 |
|
注意:
当您创建的实例为 TRTCCloud 类型时,newRoleOptions参数不生效。
onClientRoleChangeFailed(直播场景下切换用户角色失败回调)
onClientRoleChangeFailed
public void onClientRoleChangeFailed(int reason, int currentRole) {}
详情: | 直播场景下,本地用户加入频道后调用 setClientRole [2/2] 切换用户角色失败时,SDK 会触发该回调,报告切换失败的原因和当前的用户角色。 |
| |
参数: | reason 切换用户角色失败的原因,详见 reason ,由于错误码不统一,reason 统一为:CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT(3)请求超时。建议提示用户检查网络连接状况后重新尝试切换用户角色。 |
| currentRole 当前用户角色: CLIENT_ROLE_BROADCASTER(1): 主播。主播可以发流也可以收流。 CLIENT_ROLE_AUDIENCE(2): 观众。观众只能收流不能发流。 |
| |
注意:
由于错误码不统一,当您创建的实例为 TRTCCloud 类型时,reason 统一为:CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT(3)。
onJoinChannelSuccess(成功加入频道回调)
onJoinChannelSuccess
public void onJoinChannelSuccess(String channel, int uid, int elapsed) {}
详情: | 该回调方法表示该客户端成功加入了指定的频道。 |
| |
参数: | channel 频道名。 |
| uid 加入频道的用户 ID。 |
| |
| elapsed 从本地调用 joinChannel [2/2] 开始到发生此事件过去的时间(毫秒)。 |
注意:
由于错误码不统一,当您创建的实例为 TRTCCloud 类型时,reason 统一为:CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT(3)。
onLeaveChannel(离开频道回调)
onLeaveChannel
public void onLeaveChannel(RtcStats stats) {}
详情: | 当您调用 leaveChannel [2/2] 方法成功时,会触发该回调。 |
| |
参数: | stats 通话的统计数据: 该参数无效。 |
| |
| |
| |
注意:
当您创建的实例为 TRTCCloud 类型时,stats 无效,可以通过 onRtcStats 回调获取。
onRejoinChannelSuccess(成功重新加入频道回调)
onRejoinChannelSuccess
public void onRejoinChannelSuccess(String channel, int uid, int elapsed) {}
详情: | 有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后本地触发此回调方法。 |
| |
参数: | channel 频道名。 |
| |
| |
| |
| uid 重新加入频道的用户 ID。 |
| elapsed 从调用 joinChannel [2/2] 方法到触发该回调的时间间隔(毫秒)。 |
onUserJoined(远端用户(通信场景)/主播(直播场景)加入当前频道回调)
onUserJoined
public void onUserJoined(int uid, int elapsed) {}
详情: | 该回调用于提示有远端用户加入频道,如果加入之前,已有其他用户在频道中,新加入的用户也会收到这些已有用户加入频道的回调。 |
| |
参数: | uid 新加入频道的远端用户/主播 ID。 |
| |
| |
| |
| elapsed 从调用 joinChannel [2/2] 方法到触发该回调的时间间隔(毫秒)。 |
| |
onUserOffline(远端用户(通信场景)/主播(直播场景)离开当前频道回调)
onUserOffline
public void onUserOffline(int uid, int reason) {}
详情: | 该回调用于提示有远端用户离开频道。 |
| |
参数: | uid 离线用户或主播的用户 ID。 |
| |
| |
| |
| reason 远端用户(通信场景)或主播(直播场景)下线的原因: USER_OFFLINE_QUIT(0):用户主动离开。此时离开频道的用户会发送一个类似“再见”的消息。收到该消息是,SDK 判定该用户离开频道。 USER_OFFLINE_DROPPED(1):因过长时间收不到对方数据包,SDK 判定该远端用户超时掉线。注意:在网络连接不稳定时,该判定 可能会有误。建议使用实时消息 SDK 来做可靠的掉线检测。 USER_OFFLINE_BECOME_AUDIENCE(2):用户的角色从主播切换为观众。 |
| |
onRtcStats(当前通话统计信息回调)
onRtcStats
public void onRtcStats(RtcStats stats) {}
详情: | SDK 定期向 App 报告当前通话的统计信息,每两秒触发一次。 |
| |
参数: | totalDuration :本地用户通话时长(秒),累计值。 cpuAppUsage :当前应用的 CPU 使用率,单位 (%),Android 8.0 以上不支持。 cpuTotalUsage :当前系统的 CPU 使用率,单位 (%),Android 8.0 以上不支持。 lastmileDelay :从 SDK 到云端的往返延时,单位 ms该数值代表从 SDK 发送一个网络包到云端,再从云端回送一个网络包到 SDK 的总计耗时,也就是一个网络包经历 “SDK=>云端=>SDK” 的总耗时。 rxAudioKBitRate :音频接收码率 (Kbps)。 txAudioKBitRate :音频包的发送码率 (Kbps)。 rxVideoKBitRate :视频接收码率 (Kbps)。 txVideoKBitRate :视频发送码率 (Kbps)。 txKBitRate :发送码率 (Kbps)。 rxKBitRate :接收码率 (Kbps)。 rxBytes :接收字节数 (bytes)。 txBytes :发送字节数 (bytes)。 users :当前频道内的用户人数。 |
| |
| |
| |
| |
| |
onRemoteAudioStats(通话中远端音频流的统计信息回调)
onRemoteAudioStats
public void onRemoteAudioStats(RemoteAudioStats stats) {}
详情: | 该回调针对每个发送音频流的远端用户每 2 秒触发一次,用于通知 SDK 内部音频关的专业技术指标。 |
| |
参数: | uid :远端用户的用户 ID。 jitterBufferDelay:音频接收端到网络抖动缓冲的网络延迟(毫秒)。 audioLossRate:音频流的总丢包率(%)。 receivedSampleRate:音频的采样率,单位 Hz。 receivedBitrate:音频的码率,单位 Kbps。 totalFrozenTime:音频播放的累计卡顿时长,单位 ms。 frozenRate:音频播放卡顿率,单位 (%)。 |
| |
| |
| |
| |
| |
onLocalAudioStats(通话中本地音频流的统计信息回调)
onLocalAudioStats
public void onLocalAudioStats(LocalAudioStats stats) {}
详情: | SDK 每 2 秒触发该回调一次,用于通知 SDK 内部音频关的专业技术指标。 |
| |
参数: | sentBitrate:发送本地音频的码率。 sentSampleRate:发送本地音频的采样率,单位为 Hz。 |
| |
| |
| |
| |
| |
onRemoteVideoStats(通话中远端视频流的统计信息回调)
onRemoteVideoStats
public void onRemoteVideoStats(RemoteVideoStats stats) {}
详情: | SDK 每 2 秒触发该回调一次,用于通知 SDK 内部视频相关的专业技术指标。 |
| |
参数: | uid:远端用户的用户 ID。 width :远端视频的宽度,单位 px。 height:远端视频的高度,单位 px。 e2eDelay :端到端视频延时(毫秒) receivedBitrate:接收到的码率(Kbps)。 frameLossRate :远端视频丢包率(%)。 rxStreamType :视频流类型,大流或小流。 totalFrozenTime:视频播放的累计卡顿时长,单位 ms。 frozenRate:远端用户在加入频道后发生视频卡顿的累计时长占视频总有效时长的百分比 (%)。 |
| |
| |
| |
| |
| |
onLocalVideoStats(本地视频流统计信息回调)
onLocalVideoStats
public void onLocalVideoStats(Constants.VideoSourceType source, LocalVideoStats stats) {}
详情: | SDK 每 2 秒触发该回调一次,用于通知 SDK 内部视频相关的专业技术指标。 |
| |
参数: | source 视频源的类型:目前仅支持 VIDEO_SOURCE_CAMERA_PRIMARY(0)(默认)视频源为第一个摄像头。 |
| |
| |
| |
| |
| |
| uid:本地用户的 ID。 encodedFrameWidth:视频编码宽度(px)。 encodedFrameHeight:视频编码高度(px)。 sentBitrate :实际发送码率 (Kbps)。 sentFrameRate:实际发送帧率 (fps)。 |
onAudioVolumeIndication(用户音量提示回调)
onAudioVolumeIndication
public void onAudioVolumeIndication(AudioVolumeInfo[] speakers, int totalVolume) {}
详情: | 该回调默认禁用,您可以通过 enableAudioVolumeIndication 开启。 开启后,只要频道内有发流用户,SDK 会在加入频道后按 enableAudioVolumeIndication 中设置的时间间隔触发 onAudioVolumeIndication 回调。每次会触发两个 onAudioVolumeIndication 回调,一个报告本地发流用户的音量相关信息,另一个报告瞬时音量最高的远端用户的音量相关信息。 |
| |
参数: | |
| |
| |
| |
| |
| |
| totalVolume 混音后的总音量,取值范围为 [0,255]。 |
注意:
当您创建的实例为 TRTCCloud 类型时,无论当前房间中是否有人说话,SDK 都会按照您设定的时间间隔定时抛出此事件回调,数组 speakers 不会为空。而当您创建的实例为 RtcEngine 类型时,如果 speakers 为空,则表示远端用户不发流或没有远端用户。
onFirstLocalAudioFramePublished(已发布本地音频首帧回调)
onFirstLocalAudioFramePublished
public void onFirstLocalAudioFramePublished(int elapsed) {}
详情: | SDK 会在以下时机触发该回调:
开启本地音频的情况下,调用 joinChannel [2/2] 成功加入频道后。调用 muteLocalAudioStream(true),再调用 muteLocalAudioStream(false) 后。 |
| |
参数: | elapsed 从调用 joinChannel [2/2] 方法到触发该回调的时间间隔(毫秒)。 |
| |
| |
| |
| |
| |
| |
onRemoteAudioStateChanged(远端音频流状态发生改变回调)
onRemoteAudioStateChanged
public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed) {}
详情: | 远端用户的音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。 |
| |
参数: | uid 发生音频状态改变的远端用户 ID。 |
| |
| |
| |
| |
| |
| |
| state 远端音频流状态,详见 参数 state,目前仅有以下参数生效: REMOTE_AUDIO_STATE_STOPPED (0): 远端音频默认初始状态。 REMOTE_AUDIO_STATE_STARTING (1): 本地用户已接收远端音频首包。 REMOTE_AUDIO_STATE_DECODING (2): 远端音频流正在解码。 |
| reason 远端音频流状态改变的具体原因: REMOTE_AUDIO_REASON_INTERNAL (0): 音频状态发生改变时,会报告该原因。 REMOTE_AUDIO_REASON_NETWORK_CONGESTION (1): 网络阻塞。 REMOTE_AUDIO_REASON_NETWORK_RECOVERY (2): 网络恢复正常。 REMOTE_AUDIO_REASON_LOCAL_MUTED (3): 本地用户停止接收远端音频流或本地用户禁用音频模块。 REMOTE_AUDIO_REASON_LOCAL_UNMUTED (4): 本地用户恢复接收远端音频流或本地用户启动音频模块。 REMOTE_AUDIO_REASON_REMOTE_MUTED (5): 远端用户停止发送音频流或远端用户禁用音频模块。 REMOTE_AUDIO_REASON_REMOTE_UNMUTED (6): 远端用户恢复发送音频流或远端用户启用音频模块。 REMOTE_AUDIO_REASON_REMOTE_OFFLINE (7): 远端用户离开频道。(该参数无效) |
| elapsed 从本地用户调用 joinChannel [2/2] 方法到发生本事件经历的时间,单位为毫秒。 |
注意:
当您创建的 engine 为 TRTCCloud 时,参数 REMOTE_AUDIO_REASON_REMOTE_OFFLINE (7) 不生效。
onUserMuteAudio(远端用户(通信场景)/主播(直播场景)停止或恢复发送音频流回调)
onUserMuteAudio
public void onUserMuteAudio(int uid, boolean muted) {}
详情: | 远端用户的音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。 |
| |
参数: | uid 用户 ID。 |
| |
| |
| |
| |
| |
| |
| muted 该用户是否静音: true: 该用户已将音频静音。 false: 该用户取消了音频静音。 |
| |
| |
onLocalVideoStateChanged(本地视频状态发生改变回调)
onLocalVideoStateChanged
public void onLocalVideoStateChanged(Constants.VideoSourceType source, int state, int reason) {}
详情: | 目前只有摄像头准备就绪时会触发该回调。 |
| |
参数: | sourceType 视频源类型,详见 VideoSourceType。当您创建的实例为 TRTCCloud 类型时,目前仅生效 VIDEO_SOURCE_CAMERA_PRIMARY(0)类型的流。 |
| |
| |
| |
| |
| |
| |
| state 本地视频状态,详见 state。当您创建的实例为 TRTCCloud 类型时,目前仅生效 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1): 本地视频采集设备启动成功。 |
| |
| |
| reason 本地视频状态改变的具体原因,详见参数 reason。当您创建的实例为 TRTCCloud 类型时,目前仅生效 LOCAL_VIDEO_STREAM_REASON_OK (0): 本地视频状态正常。 |
注意:
当您创建的实例 为 TRTCCloud 类型时:
sourceType 仅生效 VIDEO_SOURCE_CAMERA_PRIMARY(0)类型的流。
state 仅生效 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1): 本地视频采集设备启动成功。
reason 仅生效 LOCAL_VIDEO_STREAM_REASON_OK (0): 本地视频状态正常。
onRemoteVideoStateChanged(远端视频状态发生改变回调)
onRemoteVideoStateChanged
public void onRemoteVideoStateChanged(int uid, int state, int reason, int elapsed) {}
详情: | 远端视频状态发生改变回调。 |
| |
参数: | uid 发生视频状态改变的远端用户 ID。 |
| |
| |
| |
| |
| |
| |
| 该回调的参数 state 为 REMOTE_VIDEO_STATE_STARTING (1):本地用户已接收远端视频首包。 该回调的参数 state 为 REMOTE_VIDEO_STATE_STOPPED (0):远端视频默认初始状态。 |
| |
| |
| reason 本地视频状态改变的具体原因,详见参数 reason。当您创建的实例为 TRTCCloud 类型时,目前仅生效 REMOTE_VIDEO_STATE_REASON_INTERNAL (0) |
| elapsed 从本地用户调用 joinChannel [2/2] 方法到发生本事件经历的时间,单位为毫秒。 |
onVideoSizeChanged(本地或远端视频大小和旋转信息发生改变回调)
onVideoSizeChanged
public void onVideoSizeChanged(Constants.VideoSourceType source, int uid, int width, int height, int rotation) {}
详情: | 本地或远端视频大小和旋转信息发生改变回调。 |
| |
参数: | 当画面为辅路(Sub)一般用于承载屏幕分享画面,参数source为:VIDEO_SOURCE_CAMERA_SECONDARY(1)。 主路(Main)一般用于承载摄像头画面,参数source为:VIDEO_SOURCE_CAMERA_PRIMARY(0)。 |
| uid 图像尺寸和旋转信息发生变化的用户 ID |
| |
| |
| |
| |
| |
| |
| width 视频流的宽度(像素)。 |
| |
| |
| height 视频流的高度(像素)。 |
| rotation 旋转信息,当您创建的实例为 TRTCCloud 类型时,该参数不生效。 |
onAudioRouteChanged(音频路由已发生变化回调)
onAudioRouteChanged
public void onAudioRouteChanged(int routing) {}
详情: | 当音频路由发生变化时,触发该回调。 |
| |
参数: | AUDIO_ROUTE_SPEAKERPHONE (3):音频路由为设备自带的扬声器。 AUDIO_ROUTE_EARPIECE (1):音频路由为听筒。 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
onFirstLocalVideoFramePublished(已发布本地视频首帧回调)
onFirstLocalVideoFramePublished
public void onFirstLocalVideoFramePublished(Constants.VideoSourceType source, int elapsed) {}
详情: | 开启本地视频的情况下,调用 joinChannel [2/2] 成功加入频道后。调用 muteLocalVideoStream(true),再调用 muteLocalVideoStream(false) 后。 |
| |
参数: | 当画面为辅路(Sub)一般用于承载屏幕分享画面,参数source为:VIDEO_SOURCE_CAMERA_SECONDARY(1)。 主路(Main)一般用于承载摄像头画面,参数source为:VIDEO_SOURCE_CAMERA_PRIMARY(0)。 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| elapsed 从调用 joinChannel [2/2] 方法到触发该回调的时间间隔(毫秒)。 |
onFirstLocalVideoFrame(已显示本地视频首帧回调)
onFirstLocalVideoFrame
public void onFirstLocalVideoFrame(Constants.VideoSourceType source, int width, int height, int elapsed) {}
详情: | 本地视频首帧显示在本地视图上时,SDK 会触发此回调。 |
| |
参数: | VIDEO_SOURCE_CAMERA_PRIMARY 0:(默认)视频源为第一个摄像头。 VIDEO_SOURCE_SCREEN_PRIMARY 2:视频源为第一个屏幕。 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| width 本地渲染视频的宽 (px) 。 |
| height 本地渲染视频的高 (px)。 |
| elapsed 从调用 joinChannel [2/2] 到发生此事件过去的时间(毫秒)。 |
onFirstRemoteVideoFrame(渲染器已接收首帧远端视频回调)
onFirstRemoteVideoFrame
public void onFirstRemoteVideoFrame(int uid, int width, int height, int elapsed) {}
详情: | 渲染器已接收首帧远端视频回调。 |
| |
参数: | uid 远端用户 ID。 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| width 视频流宽(px)。 |
| height 视频流高(px)。 |
| elapsed 从调用 joinChannel [2/2] 到发生此事件过去的时间(毫秒)。 |
registerVideoFrameObserver(注册原始视频观测器对象)
registerVideoFrameObserver
public abstract int registerVideoFrameObserver(Object observer);
详情: | 设置该回调之后,SDK 会把采集到的视频帧通过您设置的 listener 回调出来,用于第三方美颜组件进行二次处理,之后 SDK 会将处理后的视频帧进行编码和发送。 |
参数: | observer 自定义预处理回调,当您使用 AllInOneRTCEngine 创建的实例为 TRTCCloud 类型时,该参数需要传入 TRTCVideoFrameListener 类型的对象,而当您创建的实例为 RtcEngine 时,该参数需要传入 IVideoFrameObserver 类型的对象。 |
| |
| |
| |