IRtcEngineEventHandler

public abstract class com.ss.video.rtc.engine.handler.IRtcEngineEventHandler

音视频引擎事件回调接口

成员变量

类型 名称
int QUALITY_UNKNOWN
int QUALITY_EXCELLENT
int QUALITY_GOOD
int QUALITY_POOR
int QUALITY_BAD
int QUALITY_VBAD

成员函数

返回 名称
void onJoinChannelSuccess
void onRejoinChannelSuccess
void onWarning
void onError
void onResponse
void onAudioQuality
void onLeaveChannel
void onRtcStats
void onAudioVolumeIndication
void onNetworkQuality
void onNetworkTypeChanged
void onUserJoined
void onUserOffline
void onMuteAllRemoteVideo
void onUserMuteAudio
void onUserMuteVideo
void onUserEnableLocalVideo
void onUserEnableLocalAudio
void onRemoteVideoStats
void onRemoteStreamSwitch
void onLocalVideoStats
void onRemoteAudioStats
void onLocalAudioStats
void onLocalAudioStateChanged
void onRemoteAudioStateChanged
void onLocalVideoStateChanged
void onRemoteVideoStateChanged
void onFirstRemoteVideoFrame
void onFirstLocalScreenFrame
void onFirstRemoteScreenFrame
void onFirstLocalVideoFrame
void onFirstRemoteVideoDecoded
void onVideoSizeChanged
void onConnectionLost
void onConnectionInterrupted
void onConnectionStateChanged
void onStreamAdd
void onStreamRemove
void onAudioMixingFinished
void onAudioRouteChanged
void onFirstLocalAudioFrame
void onFirstRemoteAudioFrame
void onActiveSpeaker
void onAudioEffectFinished
void onLogReport
void onRemoteVideoStateChanged
void onRoomMessageReceived
void onRoomBinaryMessageReceived
void onStreamPublished
void onUserMessageReceived
void onUserBinaryMessageReceived
void onUserMessageSendResult
void onRoomMessageSendResult
void onAudioFrameSendStateChanged
void onVideoFrameSendStateChanged
void onScreenVideoFrameSendStateChanged
void onAudioFramePlayStateChanged
void onVideoFramePlayStateChanged
void onScreenVideoFramePlayStateChanged
void onMirrorStateChanged

变量说明

QUALITY_UNKNOWN

public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_UNKNOWN = 0;

媒体流网络质量未知。

QUALITY_EXCELLENT

public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_EXCELLENT = 1;

媒体流网络质量极好。

QUALITY_GOOD

public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_GOOD = 2;

媒体流网络质量好。

QUALITY_POOR

public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_POOR = 3;

媒体流网络质量较差但不影响沟通。

QUALITY_BAD

public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_BAD = 4;

媒体流网络质量差沟通不顺畅。

QUALITY_VBAD

public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_VBAD = 5;

媒体流网络质量非常差。

函数说明

onJoinChannelSuccess

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onJoinChannelSuccess(
    String channel,
    String uid,
    int elapsed)

加入房间成功回调。此回调事件表示本地用户成功加入了指定的房间。
用户调用 joinChannel 方法加入房间,首次加入房间成功后 SDK 通过此回调事件通知用户加入房间成功。此回调事件在用户调用 joinChannel 方法加入房间到用户调用 leaveChannel 方法离开房间期间至多回调一次。

传入参数

参数名 类型 说明
channel String 房间ID 。本地用户加入的房间的房间ID 。
uid String 用户ID 。本地用户的用户ID 。
elapsed int 加入房间耗时。本地用户从调用 joinChannel 方法到加入房间成功所经历的时间间隔,单位为 ms 。

onRejoinChannelSuccess

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRejoinChannelSuccess(
    String channel,
    String uid,
    int elapsed)

重新加入房间成功回调。此回调事件表示本地用户成功重连入房间。
本地用户加入房间成功后,在本端网络状况不佳的情况下,SDK 可能会与服务器失去连接。此时 SDK 将会自动重连,并在重连成功通过此回调事件通知用户重连成功。

传入参数

参数名 类型 说明
channel String 房间 ID 。本地用户加入的房间的房间ID 。
uid String 用户ID 。本地用户的用户ID 。
elapsed int 重连耗时。本地用户从连接断开到重连成功所经历的时间间隔,单位为 ms 。

onWarning

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onWarning(
    int warn)

发生警告回调。

传入参数

参数名 类型 说明
warn int 警告代码,详情定义见: RtcWarnCode

注意

该回调方法表示SDK运行时出现了(网络或媒体相关的)警告。通常情况下,SDK上报的警告信息App可以忽略,SDK会自动恢复。

onError

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onError(
    int err)

发生错误回调。

传入参数

参数名 类型 说明
err int 错误代码,详情定义见: RtcErrorCode

注意

表示SDK运行时出现了(网络或媒体相关的)错误。通常情况下,SDK上报的错误意味着SDK无法自动恢复,需要App干预或提示用户。

onResponse

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onResponse(
    String res)

API 响应回调。

传入参数

参数名 类型 说明
res String 响应内容

onAudioQuality

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioQuality(
    String uid,
    int quality,
    short delay,
    short lost)

远端用户音频质量回调

传入参数

参数名 类型 说明
uid String 用户ID
quality int 质量等级
delay short 延时(毫秒)
lost short 丢包(百分比)

onLeaveChannel

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLeaveChannel(
    IRtcEngineEventHandler.RtcStats stats)

离开房间成功回调。
用户调用 leaveChannel 方法后,SDK 会停止所有的发布订阅流,并释放所有通话相关的音视频资源。SDK 完成所有的资源释放后通过此回调通知用户。
离开房间结束通话后,如果 App 需要使用系统音视频设备,则建议在收到此回调后再初始化音视频设备,否则可能由于 SDK 占用了导致 App 初始化音视频设备失败。

传入参数

参数名 类型 说明
stats IRtcEngineEventHandler.RtcStats 本次通话的统计数据。详见 RtcStats 数据类型。

注意

onRtcStats

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRtcStats(
    IRtcEngineEventHandler.RtcStats stats)

房间通话数据回调。
用户加入当前房间成功后,SDK 会周期性(2s)的通过此回调事件通知用户当前房间内的汇总统计信息。

传入参数

参数名 类型 说明
stats IRtcEngineEventHandler.RtcStats 房间内的汇总统计数据。详见 RtcStats 数据类型。

onAudioVolumeIndication

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioVolumeIndication(
    IRtcEngineEventHandler.AudioVolumeInfo[] speakers,
    int totalVolume)

提示房间内谁正在说话以及说话者音量的回调

传入参数

参数名 类型 说明
speakers IRtcEngineEventHandler.AudioVolumeInfo[] 房间内所有用户ID, 以及每个用户对应的音量,包括发送流和接收流。详见 AudioVolumeInfo
totalVolume int 房间内所有用户的总音量,只包含接收流

注意

onNetworkQuality

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onNetworkQuality(
    String uid,
    int txQuality,
    int rxQuality)

通话中用户的媒体流网络上下行质量报告回调。加入房间成功后,每隔 2 秒会触发此回调,通知房间内用户与媒体服务器之间数据交互的网络质量。

传入参数

参数名 类型 说明
uid String 回调的网络质量报告所属用户的用户 ID 。
txQuality int uid 所属用户的媒体流上行网络质量。
rxQuality int uid 所属用户的媒体流下行网络质量。

注意

onNetworkTypeChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onNetworkTypeChanged(
    int type)

SDK 当前网络连接类型改变回调。当 SDK 的当前网络连接类型发生改变时回调该事件。

传入参数

参数名 类型 说明
type int 网络类型。
• -1: 网络连接类型未知。
• 0: 网络连接已断开。
• 1: 网络类型为 LAN 。
• 2: 网络类型为 Wi-Fi(包含热点)。
• 3: 网络类型为 2G 移动网络。
• 4: 网络类型为 3G 移动网络。
• 5: 网络类型为 4G 移动网络。

onUserJoined

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserJoined(
    String uid,
    int elapsed)

远端用户加入房间回调。
此回调用于提示房间中有新用户加入。如果本地用户已经在房间中,有新的远端用户加入时,SDK 通过此回调方法通知房间中有新用户加入;如果用户加入房间前,房间中已有其他用户,加入房间后用户也会收到这些已在房间中的远端用户的加入房间回调。
回调的具体触发时机如下:
1.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,调用 joinChannel 方法加入房间。
2.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,在断网后重连入房间。
3.远端已在房间中的房间模式为直播、游戏或云游戏模式的静默观众角色的用户,调用 setClientRole 方法将用户角色切换至主播或观众。
4.本地用户加入房间时,会收到已在房间中的远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户的加入房间回调。

传入参数

参数名 类型 说明
uid String 用户ID 。新加入的远端用户的用户ID 。
elapsed int 本地用户调用 joinChannel 加入房间到收到该事件经历的时间,单位为 ms 。

onUserOffline

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserOffline(
    String uid,
    int reason)

远端用户离开房间回调。
此回调用于提示房间中有远端用户离开。用户离开房间的原因有两个,即用户主动调用 leaveChannel 方法离开房间和超时掉线。
回调的具体触发时机如下:
1.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,调用 leaveChannel 方法离开房间。用户离开的原因为用户主动离开。
2.远端已在房间中的房间模式为直播、游戏或云游戏模式的主播、观众角色的用户调用 setClientRole 方法将用户角色切换至静默观众。用户离开的原因为用户主动离开。
3.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,断网且一直未恢复。用户离开的原因为用户掉线。

传入参数

参数名 类型 说明
uid String 用户ID 。离开房间的远端用户的用户ID 。
reason int 用户离开的原因。用户离开原因取值如下:
• 0: 用户主动离开。
• 1: 用户掉线。

onMuteAllRemoteVideo

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onMuteAllRemoteVideo(
    String uid,
    boolean muted)

当某个用户开启/关闭远端所有用户视频时回调该事件。

传入参数

参数名 类型 说明
uid String 远端用户标识。
muted boolean 是否被关闭。
• true: 远端用户关闭所有用户视频数据;
• false: 远端用户打开所有用户视频数据。

onUserMuteAudio

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserMuteAudio(
    String uid,
    boolean muted)

远端用户将其本地音频流静音时,房间内其他人会收到这个回调。 该回调由远端用户调用 muteLocalAudioStream 方法触发。

传入参数

参数名 类型 说明
uid String 用户ID。
muted boolean 该用户是否已将其本地音频流静音
• true: 该用户已将其本地音频流静音
• false: 该用户已将其本地音频流取消了静音

onUserMuteVideo

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserMuteVideo(
    String uid,
    boolean muted)

远端用户暂停/恢复发送视频流时回调该事件,即远端用户调用 muteLocalVideoStream 时,本地用户将会收到该回调

传入参数

参数名 类型 说明
uid String 用户ID,提示是哪个用户的视频流。
muted boolean 是否发送视频流。
• true:该用户已暂停发送视频流。
• false:该用户已恢复发送视频流。

注意

提示有其他用户暂停/恢复了视频流的发送。

onUserEnableLocalVideo

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserEnableLocalVideo(
    String uid,
    boolean enabled)

远端用户开启/关闭本地视频采集时回调该事件,即远端用户调用 enableLocalVideo 时,本地用户将会收到该回调

传入参数

参数名 类型 说明
uid String 用户ID,提示是哪个用户的视频流。
enabled boolean 是否启用本地视频功能。
• true:该用户已启用本地视频功能。启用后,其他用户可以接收到该用户的视频流。
• false:该用户已关闭视频功能。关闭后,该用户仍然可以接收其他用户的视频流,但其他用户接收不到该用户的视频流。

注意

提示有其他用户启用/关闭了本地视频功能。

onUserEnableLocalAudio

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserEnableLocalAudio(
    String uid,
    boolean enabled)

远端用户已开启/关闭音频设备采集时,房间内其他用户会收到这个回调。 该回调由远端用户调用 enableLocalAudio 方法触发

传入参数

参数名 类型 说明
uid String 远端用户ID
enabled boolean 该用户是否开启了音频设备采集
• true:该用户开启了音频设备采集
• false:该用户关闭了音频设备采集

onRemoteVideoStats

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteVideoStats(
    IRtcEngineEventHandler.RemoteVideoStats stats)

远端视频流的统计信息回调。
本地用户订阅远端视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的视频流在此次统计周期内的状况。用户订阅多路远端视频流时,每一路流均会回调此事件。

传入参数

参数名 类型 说明
stats IRtcEngineEventHandler.RemoteVideoStats 远端视频流统计信息。详见 RemoteVideoStats 数据类型。

onRemoteStreamSwitch

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteStreamSwitch(
    RemoteStreamSwitch event)

收到远端流回退或恢复时回调该事件。

传入参数

参数名 类型 说明
event RemoteStreamSwitch 远端流回退或恢复数据。详见 RemoteStreamSwitch。

onLocalVideoStats

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLocalVideoStats(
    IRtcEngineEventHandler.LocalVideoStats stats)

本地视频流的统计信息回调。
本地用户发布视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的视频流在此次统计周期内的状况。

传入参数

参数名 类型 说明
stats IRtcEngineEventHandler.LocalVideoStats 本地视频流统计信息。详见 LocalVideoStats 数据类型。

onRemoteAudioStats

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteAudioStats(
    IRtcEngineEventHandler.RemoteAudioStats stats)

远端音频流的统计信息回调。
本地用户订阅远端音频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的音频流在此次统计周期内的状况。用户订阅多路远端音频流时,每一路流均会回调此事件。

传入参数

参数名 类型 说明
stats IRtcEngineEventHandler.RemoteAudioStats 远端音频流统计信息。详见 RemoteAudioStats 数据类型。

onLocalAudioStats

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLocalAudioStats(
    LocalAudioStats stats)

本地音频流的统计信息回调。
本地用户发布音频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的音频流在此次统计周期内的状况。

传入参数

参数名 类型 说明
stats LocalAudioStats 本地音频流统计信息。详见 LocalAudioStats 数据类型。

onLocalAudioStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLocalAudioStateChanged(
    int state,
    int error)

本地音频的状态发生改变时,该回调通知当前的本地音频状态。

传入参数

参数名 类型 说明
state int 本地音频设备的状态,详细定义见: LocalAudioStreamState
error int 本地音频状态改变时的错误码, 详细定义见: LocalAudioStreamError

onRemoteAudioStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteAudioStateChanged(
    String uid,
    int state,
    int reason,
    int elapsed)

远端用户音频状态发生改变时,该回调报告当前的远端音频流状态。

传入参数

参数名 类型 说明
uid String 该远端流的用户ID
state int 远端音频流状态,详细定义见: RemoteAudioState
reason int 远端音频流状态改变的原因,详细定义见: RemoteAudioStateReason
elapsed int 耗时,从加入房间到该事件发生经历的时间

onLocalVideoStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLocalVideoStateChanged(
    int state,
    int error)

本地视频的状态发生改变时,该回调返回当前的本地视频状态。

传入参数

参数名 类型 说明
state int 本地视频状态。
error int 本地视频状态改变时的错误码。

onRemoteVideoStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteVideoStateChanged(
    String uid,
    int state,
    int reason,
    int elapsed)

远端用户视频状态发生改变时,该回调报告当前的远端视频流状态。

传入参数

参数名 类型 说明
uid String 该远端流的用户ID。
state int 远端视频流状态。
reason int 远端视频流状态改变的原因。
elapsed int 耗时,暂未实现。

onFirstRemoteVideoFrame

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstRemoteVideoFrame(
    String uid,
    int width,
    int height,
    int elapsed)

收到远端流后解码第一帧时回调该事件。

传入参数

参数名 类型 说明
uid String 远端用户 UserId。
width int 视频流宽(像素)。
height int 视频流高(像素)。
elapsed int 从调用 joinChannel 加入频道开始到发生此事件过去的时间(毫秒)。

注意

第一帧远端视频显示在视图上时,触发此调用。应用可在此调用中获知出图时间(elapsed)。出图时间指从订阅视频流到第一个视频帧刷出来的间隔。

onFirstLocalScreenFrame

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstLocalScreenFrame(
    int width,
    int height,
    int elapsed)

本地屏幕视频首帧回调。

传入参数

参数名 类型 说明
width int 视频流宽(像素)
height int 视频流高(像素)
elapsed int 从开启屏幕共享到本地屏幕首帧经过的时间(毫秒)

注意

第一帧本地视频显示在本地视图上时,触发此回调。

onFirstRemoteScreenFrame

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstRemoteScreenFrame(
    String uid,
    int width,
    int height,
    int elapsed)

远端屏幕共享数据流视频首帧回调。

传入参数

参数名 类型 说明
uid String 用户ID,指定是哪个用户的屏幕共享流
width int 视频流宽(像素)
height int 视频流高(像素)
elapsed int 从调用 joinChannel 加入频道开始到发生此事件过去的时间(毫秒)

onFirstLocalVideoFrame

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstLocalVideoFrame(
    int width,
    int height,
    int elapsed)

收到第一帧本地视频画面时回调该事件。

传入参数

参数名 类型 说明
width int 视频流宽(像素)。
height int 视频流高(像素)。
elapsed int 从调用 joinChannel 方法直至该回调被触发的延迟(毫秒),如果在 joinChannel 之前调用了 startPreview,则返回的是从调用 startPreview 直至该回调被触发的延迟(毫秒)。

注意

第一帧本地视频显示在视图上时,触发此回调。

onFirstRemoteVideoDecoded

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstRemoteVideoDecoded(
    String uid,
    int width,
    int height,
    int elapsed)

当远端视频第一帧视频被解码时回调该事件。

传入参数

参数名 类型 说明
uid String 远端用户ID。
width int 视频流宽(像素)。
height int 视频流高(像素)。
elapsed int 从调用 joinChannel 方法直至该回调被触发的延迟(毫秒)。

注意

收到第一帧远端视频流并解码成功时,触发此调用。应用可以在此回调中设置该用户的 View。

onVideoSizeChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onVideoSizeChanged(
    String uid,
    int width,
    int height,
    int rotation)

本地或远端视频大小或旋转信息发生改变回调。

传入参数

参数名 类型 说明
uid String 图像尺寸和旋转信息发生变化的用户ID。如果返回的 uid 为 null,则表示本地用户。
width int 视频流的宽度(像素)。
height int 视频流的高度(像素)。
rotation int 旋转角度[0,360]。

onConnectionLost

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onConnectionLost()

SDK 与信令服务器连接断开回调。当 SDK 与信令服务器的网络连接断开超过 10 秒时回调该事件。

注意

onConnectionInterrupted

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onConnectionInterrupted()

SDK 与信令服务器连接中断回调。当 SDK 的当前网络连接类型发生改变时回调该事件。

注意

onConnectionStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onConnectionStateChanged(
    int state,
    int reason)

回调 SDK 与信令服务器连接状态相关事件。当 SDK 与信令服务器的网络连接状态改变时回调该事件。

传入参数

参数名 类型 说明
state int 当前 SDK 与信令服务器连接状态。
• 1: 连接中断。
• 2: 连接建立中。
• 3: 连接已建立。
• 4: 连接重连中。
• 5: 连接已重连。
reason int 引起信令服务器连接状态发生改变的原因,目前未启用固定为 -1 。

注意

onStreamAdd

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onStreamAdd(
    ByteStream stream)

房间内新流发布回调。
房间内的远端用户发布新的音视频流时,本地用户会收到此回调通知。

传入参数

参数名 类型 说明
stream ByteStream 流的属性,详见 ByteStream 数据类型。

onStreamRemove

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onStreamRemove(
    ByteStream stream,
    IRtcEngineEventHandler.RtcStreamRemoveReason reason)

房间内远端流移除回调。
房间内的远端用户停止发布音视频流时,本地用户会收到此回调通知。

传入参数

参数名 类型 说明
stream ByteStream 流的属性,详见 ByteStream 数据类型。
reason IRtcEngineEventHandler.RtcStreamRemoveReason 流移除的原因,详见枚举类型 RtcStreamRemoveReason 。

onAudioMixingFinished

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioMixingFinished()

本地音乐文件播放已结束回调。 当调用 startAudioMixing 启动的混音文件播放结束后,会触发该回调。

onAudioRouteChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioRouteChanged(
    int routing)

音频路由变化时回调该事件

传入参数

参数名 类型 说明
routing int 新的音频路由,值含义如下:
• -1 默认音频路由,实际不会出现
• 0 耳机
• 1 听筒
• 3 扬声器
• 5 蓝牙耳机

注意

音频路由设置与音频路由策略详见 setEnableSpeakerphone

onFirstLocalAudioFrame

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstLocalAudioFrame(
    int elapsed)

当收到本地第一帧音频的时候上报该事件

传入参数

参数名 类型 说明
elapsed int 从开始发布音频流到收到该事件经历的时间(毫秒单位)

onFirstRemoteAudioFrame

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstRemoteAudioFrame(
    String uid,
    long elapsed)

当收到远端流的第一帧音频的时候上报该事件

传入参数

参数名 类型 说明
uid String 远端用户 ID
elapsed long 从开始订阅音频流到收到该事件经历的时间(毫秒单位)

onActiveSpeaker

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onActiveSpeaker(
    String uid)

监测到活跃用户回调。

传入参数

参数名 类型 说明
uid String 当前时间段声音最大的用户的uid。如果返回的uid为0,则默认为本地用户

注意

如果用户开启了 enableAudioVolumeIndication功能,则当音量检测模块监测到频道内有新的活跃用户说话时,会通过本回调返回该用户的 uid。

onAudioEffectFinished

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioEffectFinished(
    int soundId)

本地音效文件播放已结束回调。

传入参数

参数名 类型 说明
soundId int 音效ID,应用调用者维护,请保证唯一性。

注意

当调用 playEffect 方法开始播放指定音效文件, 音效文件播放结束后, 应用会收到该回调。

onLogReport

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLogReport(
    String logType,
    JSONObject logContent)

上报日志时回调该事件。

传入参数

参数名 类型 说明
logType String 日志类型。
logContent JSONObject 日志内容。

onRemoteVideoStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteVideoStateChanged(
    String uid,
    int state)

视频状态转换回调,计算卡顿使用

传入参数

参数名 类型 说明
uid String 用户ID
state int 状态

onRoomMessageReceived

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRoomMessageReceived(
    String message)

接收到房间内广播消息的回调。

传入参数

参数名 类型 说明
message String 收到的消息内容

注意

1.同一房间内其他用户调用 sendMessageToRoom 发送广播消息时会收到该回调。

onRoomBinaryMessageReceived

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRoomBinaryMessageReceived(
    ByteBuffer message)

接收到房间内广播二进制消息的回调。

传入参数

参数名 类型 说明
message ByteBuffer 收到的二进制消息内容

注意

1.同一房间内其他用户调用 sendBinaryMessageToRoom 发送广播消息时会收到该回调。

onStreamPublished

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onStreamPublished(
    String url,
    int error)

直播推流转码状态回调。
用户调用 enableLiveTranscoding 方法启动直播推流转码功能后,直播推流转码功能启动成功或失败时、推流过程中发生错误时,SDK 通过此回调通知用户对应的状态事件。
回调事件为错误状态事件时,App 需根据功能状态码的处理建议做对应的处理,如通知用户或重试等。

传入参数

参数名 类型 说明
url String 推流地址。直播推流的地址,为 URL 地址。
error int 直播推流转码功能状态码,详见枚举类型 RtcTransCodeingErrorCode 。

onUserMessageReceived

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserMessageReceived(
    String uid,
    String message)

接收到同一房间内 uid 所属用户发来消息的回调

传入参数

参数名 类型 说明
uid String 消息发送者 ID
message String 收到的消息内容

注意

1.同一房间内其他用户调用 sendMessageToUser 发送用户消息时会收到该回调。

onUserBinaryMessageReceived

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserBinaryMessageReceived(
    String uid,
    ByteBuffer message)

接收到同一房间内 uid 所属用户发来二进制消息的回调

传入参数

参数名 类型 说明
uid String 消息发送者 ID
message ByteBuffer 收到的消息内容

注意

1.同一房间内其他用户调用 sendBinaryMessageToUser 发送用户消息时会收到该回调。

onUserMessageSendResult

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserMessageSendResult(
    long msgid,
    int error)

当调用 sendMessageToUser 函数发送消息后,回调此条消息的发送结果(反馈)。

传入参数

参数名 类型 说明
msgid long 本条消息的 ID
error int 消息发送结果,详见MessageSendResultCode

onRoomMessageSendResult

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRoomMessageSendResult(
    long msgid,
    int error)

当调用 sendMessageToRoom 函数发送消息后,回调此条消息的发送结果(反馈)。

传入参数

参数名 类型 说明
msgid long 本条消息的 ID
error int 消息发送结果,详见MessageSendResultCode

onAudioFrameSendStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioFrameSendStateChanged(
    RtcUser user,
    FirstFrameSendState state)

音频首帧发送状态改变回调

传入参数

参数名 类型 说明
user RtcUser 本地用户信息,详见 RtcUser
state FirstFrameSendState 首帧发送状态,详见 FirstFrameSendState

onVideoFrameSendStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onVideoFrameSendStateChanged(
    RtcUser user,
    FirstFrameSendState state)

视频首帧发送状态改变回调

传入参数

参数名 类型 说明
user RtcUser 本地用户信息,详见 RtcUser
state FirstFrameSendState 首帧发送状态,详见 FirstFrameSendState

onScreenVideoFrameSendStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onScreenVideoFrameSendStateChanged(
    RtcUser user,
    FirstFrameSendState state)

屏幕共享流视频首帧发送状态改变回调

传入参数

参数名 类型 说明
user RtcUser 本地用户信息,详见 RtcUser
state FirstFrameSendState 首帧发送状态,详见 FirstFrameSendState

onAudioFramePlayStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioFramePlayStateChanged(
    RtcUser user,
    FirstFramePlayState state)

音频首帧播放状态改变回调

传入参数

参数名 类型 说明
user RtcUser 远端用户信息,详见 RtcUser
state FirstFramePlayState 首帧播放状态,详见 FirstFramePlayState

onVideoFramePlayStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onVideoFramePlayStateChanged(
    RtcUser user,
    FirstFramePlayState state)

视频首帧播放状态改变回调

传入参数

参数名 类型 说明
user RtcUser 远端用户信息,详见 RtcUser
state FirstFramePlayState 首帧播放状态,详见 FirstFramePlayState

onScreenVideoFramePlayStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onScreenVideoFramePlayStateChanged(
    RtcUser user,
    FirstFramePlayState state)

屏幕共享流视频首帧播放状态改变回调

传入参数

参数名 类型 说明
user RtcUser 远端用户信息,详见 RtcUser
state FirstFramePlayState 首帧播放状态,详见 FirstFramePlayState

onMirrorStateChanged

public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onMirrorStateChanged(
    boolean mirrored)

当本地视频镜像状态改变时回调该事件。默认回调该事件。

传入参数

参数名 类型 说明
mirrored boolean 当前是否开启镜像。
• true: 当前本地视频状态为开启镜像;
• false: 当前本地视频状态为关闭镜像。

IRtcEngineAudioDeviceEventHandler

public interface com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler

音频外部设备事件监听,只用于自定义音频采集渲染的情况 SDK内部需要控制外部设备时,通过这个事件监听类通知上层应用

成员函数

返回 名称
void onAudioDeviceRecordStart
void onAudioDeviceRecordStop
void onAudioDevicePlayoutStart
void onAudioDevicePlayoutStop

函数说明

onAudioDeviceRecordStart

void com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler.onAudioDeviceRecordStart()

通知上层应用开启音频采集设备

onAudioDeviceRecordStop

void com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler.onAudioDeviceRecordStop()

通知上层应用关闭音频采集设备

onAudioDevicePlayoutStart

void com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler.onAudioDevicePlayoutStart()

通知上层应用开启音频播放设备

onAudioDevicePlayoutStop

void com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler.onAudioDevicePlayoutStop()

通知上层应用关闭音频播放设备

IVideoSink

public interface com.ss.video.rtc.engine.mediaio.IVideoSink

视频数据回调接口。

成员函数

返回 名称
boolean onInitialize
boolean onStart
void onStop
void onDispose
EGLContext getEGLContextHandle
int getBufferType
int getPixelFormat

函数说明

onInitialize

boolean com.ss.video.rtc.engine.mediaio.IVideoSink.onInitialize()

初始化渲染器。

返回值

true:Media Engine 会认为自定义的渲染器已经初始化好 false:Media Engine 会认为自定义的渲染器初始化失败,不继续往下运行

注意

MediaEngine初始化渲染器的时候调用这个方法。开发者可以在这个方法中做渲染器的初始化工作。如果是耗时操作,也可以提前初始化好,然后在这个方法中告知 Media Engine 自定义渲染器已初始化好。 该方法需要开发者自己输入 true 或 false,以告知 Media Engine 自定义渲染器的状态。

onStart

boolean com.ss.video.rtc.engine.mediaio.IVideoSink.onStart()

启动渲染器。

返回值

true:MediaEngine继续进行渲染 false:MediaEngine认为出错而停止渲染器的功能

注意

MediaEngine 在开启渲染功能的时候会回调这个方法。开发者可以在这个方法中启动渲染器。该方法需要开发者输入 true 或 false,Media Engine 会根据返回值做对应的动作。

onStop

void com.ss.video.rtc.engine.mediaio.IVideoSink.onStop()

停止渲染器。

注意

MediaEngine在停止渲染功能的时候会回调这个方法。开发者可以在这个方法中停止渲染。

onDispose

void com.ss.video.rtc.engine.mediaio.IVideoSink.onDispose()

释放渲染器。

注意

MediaEngine通知开发者渲染器即将被废弃。在onDispose()返回之后,开发者就可以释放掉资源了。

getEGLContextHandle

EGLContext com.ss.video.rtc.engine.mediaio.IVideoSink.getEGLContextHandle()

获取 EGLContextHandle。

返回值

返回创建好的EGLContext

注意

Media Engine 在需要创建 EGLContext 的时候,首先会从自定义的渲染器中查询,是都已经创建了 EGLContext。如果自定义渲染器中已经创建了并管理 EGL 环境,这个方法就会返回 EGLContext 的 Native Handle 并共享给 Media Engine。 如果自定义渲染器中没有创建 EGLContext,会返回 0。

getBufferType

@RtcVideoFrame.BufferType int com.ss.video.rtc.engine.mediaio.IVideoSink.getBufferType()

获取Buffer类型。

返回值

Buffer类型

注意

开发者在返回值中指定一种 Buffer 类型并告知 Media Engine。

getPixelFormat

@RtcVideoFrame.PixelFormat int com.ss.video.rtc.engine.mediaio.IVideoSink.getPixelFormat()

获取像素格式。

返回值

PixelFormat像素格式

注意

用于自定义渲染器的时候,还需要指定视频数据的像素格式。当自定义渲染器希望得到 ByteArray 或者 ByteBuffer 类型的视频数据时,可以选择 YUV(YUV420P格式; 当自定义渲染器希望直接得到 Texture 时,也可以选择 Texture。

IAudioFrameObserver

public interface com.ss.video.rtc.engine.IAudioFrameObserver

音频数据回调观察者

成员函数

返回 名称
void onRecordAudioFrame
void onPlaybackAudioFrame
void onMixedAudioFrame

函数说明

onRecordAudioFrame

void com.ss.video.rtc.engine.IAudioFrameObserver.onRecordAudioFrame(
    ByteAudioFrame audioFrame)

返回麦克风录制的音频数据

传入参数

参数名 类型 说明
audioFrame ByteAudioFrame 麦克风录制的音频数据, 详见:ByteAudioFrame

onPlaybackAudioFrame

void com.ss.video.rtc.engine.IAudioFrameObserver.onPlaybackAudioFrame(
    ByteAudioFrame audioFrame)

返回远端所有用户混音后的音频数据

传入参数

参数名 类型 说明
audioFrame ByteAudioFrame 远端所有用户混音后的音频数据, 详见:ByteAudioFrame

onMixedAudioFrame

void com.ss.video.rtc.engine.IAudioFrameObserver.onMixedAudioFrame(
    ByteAudioFrame audioFrame)

返回本地麦克风录制和远端所有用户混音后的音频数据

传入参数

参数名 类型 说明
audioFrame ByteAudioFrame 本地麦克风录制和远端所有用户混音后的音频数据, 详见:ByteAudioFrame

IMetadataObserver

public interface com.ss.video.rtc.engine.IMetadataObserver

metadata 观察者,可以接收媒体流中的 metadata, 或者向媒体流中添加 metadata

成员函数

返回 名称
void onMetadataReceived
byte[] onReadyToSendMetadata

函数说明

onMetadataReceived

public void com.ss.video.rtc.engine.IMetadataObserver.onMetadataReceived(
    byte[] buffer,
    String uid,
    long timeStampMs)

当SDK收到的视频帧包含 medatada时,会回调该接口

传入参数

参数名 类型 说明
buffer byte[] metadata
uid String 当前帧所属的用户ID
timeStampMs long 包含 metadata 视频帧的时间戳,单位为毫秒

注意

回调中不能有耗时操作,以免影响视频卡顿

onReadyToSendMetadata

public byte[] com.ss.video.rtc.engine.IMetadataObserver.onReadyToSendMetadata(
    long timeStampMs)

当SDK准备发送一个视频帧时,会回调该接口,向你询问是否需要在该视频帧中添加 metadata

传入参数

参数名 类型 说明
timeStampMs long 待添加 metadata 视频帧的时间戳, 单位毫秒

返回值

byte[] 待发送的数据,大小不能超过1024bytes

注意