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 |
public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_UNKNOWN = 0;
媒体流网络质量未知。
public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_EXCELLENT = 1;
媒体流网络质量极好。
public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_GOOD = 2;
媒体流网络质量好。
public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_POOR = 3;
媒体流网络质量较差但不影响沟通。
public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_BAD = 4;
媒体流网络质量差沟通不顺畅。
public static final int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.QUALITY_VBAD = 5;
媒体流网络质量非常差。
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 。 |
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 。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onWarning(
int warn)
发生警告回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| warn | int | 警告代码,详情定义见: RtcWarnCode |
注意
该回调方法表示SDK运行时出现了(网络或媒体相关的)警告。通常情况下,SDK上报的警告信息App可以忽略,SDK会自动恢复。
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onError(
int err)
发生错误回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| err | int | 错误代码,详情定义见: RtcErrorCode |
注意
表示SDK运行时出现了(网络或媒体相关的)错误。通常情况下,SDK上报的错误意味着SDK无法自动恢复,需要App干预或提示用户。
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onResponse(
String res)
API 响应回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| res | String | 响应内容 |
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 | 丢包(百分比) |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLeaveChannel(
IRtcEngineEventHandler.RtcStats stats)
离开房间成功回调。
用户调用 leaveChannel 方法后,SDK 会停止所有的发布订阅流,并释放所有通话相关的音视频资源。SDK 完成所有的资源释放后通过此回调通知用户。
离开房间结束通话后,如果 App 需要使用系统音视频设备,则建议在收到此回调后再初始化音视频设备,否则可能由于 SDK 占用了导致 App 初始化音视频设备失败。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stats | IRtcEngineEventHandler.RtcStats | 本次通话的统计数据。详见 RtcStats 数据类型。 |
注意
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRtcStats(
IRtcEngineEventHandler.RtcStats stats)
房间通话数据回调。
用户加入当前房间成功后,SDK 会周期性(2s)的通过此回调事件通知用户当前房间内的汇总统计信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stats | IRtcEngineEventHandler.RtcStats | 房间内的汇总统计数据。详见 RtcStats 数据类型。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioVolumeIndication(
IRtcEngineEventHandler.AudioVolumeInfo[] speakers,
int totalVolume)
提示房间内谁正在说话以及说话者音量的回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| speakers | IRtcEngineEventHandler.AudioVolumeInfo[] | 房间内所有用户ID, 以及每个用户对应的音量,包括发送流和接收流。详见 AudioVolumeInfo |
| totalVolume | int | 房间内所有用户的总音量,只包含接收流 |
注意
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 所属用户的媒体流下行网络质量。 |
注意
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 移动网络。 |
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 。 |
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: 用户掉线。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onMuteAllRemoteVideo(
String uid,
boolean muted)
当某个用户开启/关闭远端所有用户视频时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 远端用户标识。 |
| muted | boolean | 是否被关闭。 • true: 远端用户关闭所有用户视频数据; • false: 远端用户打开所有用户视频数据。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserMuteAudio(
String uid,
boolean muted)
远端用户将其本地音频流静音时,房间内其他人会收到这个回调。 该回调由远端用户调用 muteLocalAudioStream 方法触发。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 用户ID。 |
| muted | boolean | 该用户是否已将其本地音频流静音 • true: 该用户已将其本地音频流静音 • false: 该用户已将其本地音频流取消了静音 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserMuteVideo(
String uid,
boolean muted)
远端用户暂停/恢复发送视频流时回调该事件,即远端用户调用 muteLocalVideoStream 时,本地用户将会收到该回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 用户ID,提示是哪个用户的视频流。 |
| muted | boolean | 是否发送视频流。 • true:该用户已暂停发送视频流。 • false:该用户已恢复发送视频流。 |
注意
提示有其他用户暂停/恢复了视频流的发送。
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserEnableLocalVideo(
String uid,
boolean enabled)
远端用户开启/关闭本地视频采集时回调该事件,即远端用户调用 enableLocalVideo 时,本地用户将会收到该回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 用户ID,提示是哪个用户的视频流。 |
| enabled | boolean | 是否启用本地视频功能。 • true:该用户已启用本地视频功能。启用后,其他用户可以接收到该用户的视频流。 • false:该用户已关闭视频功能。关闭后,该用户仍然可以接收其他用户的视频流,但其他用户接收不到该用户的视频流。 |
注意
提示有其他用户启用/关闭了本地视频功能。
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onUserEnableLocalAudio(
String uid,
boolean enabled)
远端用户已开启/关闭音频设备采集时,房间内其他用户会收到这个回调。 该回调由远端用户调用 enableLocalAudio 方法触发
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 远端用户ID |
| enabled | boolean | 该用户是否开启了音频设备采集 • true:该用户开启了音频设备采集 • false:该用户关闭了音频设备采集 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteVideoStats(
IRtcEngineEventHandler.RemoteVideoStats stats)
远端视频流的统计信息回调。
本地用户订阅远端视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的视频流在此次统计周期内的状况。用户订阅多路远端视频流时,每一路流均会回调此事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stats | IRtcEngineEventHandler.RemoteVideoStats | 远端视频流统计信息。详见 RemoteVideoStats 数据类型。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteStreamSwitch(
RemoteStreamSwitch event)
收到远端流回退或恢复时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| event | RemoteStreamSwitch | 远端流回退或恢复数据。详见 RemoteStreamSwitch。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLocalVideoStats(
IRtcEngineEventHandler.LocalVideoStats stats)
本地视频流的统计信息回调。
本地用户发布视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的视频流在此次统计周期内的状况。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stats | IRtcEngineEventHandler.LocalVideoStats | 本地视频流统计信息。详见 LocalVideoStats 数据类型。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteAudioStats(
IRtcEngineEventHandler.RemoteAudioStats stats)
远端音频流的统计信息回调。
本地用户订阅远端音频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的音频流在此次统计周期内的状况。用户订阅多路远端音频流时,每一路流均会回调此事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stats | IRtcEngineEventHandler.RemoteAudioStats | 远端音频流统计信息。详见 RemoteAudioStats 数据类型。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLocalAudioStats(
LocalAudioStats stats)
本地音频流的统计信息回调。
本地用户发布音频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的音频流在此次统计周期内的状况。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stats | LocalAudioStats | 本地音频流统计信息。详见 LocalAudioStats 数据类型。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLocalAudioStateChanged(
int state,
int error)
本地音频的状态发生改变时,该回调通知当前的本地音频状态。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| state | int | 本地音频设备的状态,详细定义见: LocalAudioStreamState |
| error | int | 本地音频状态改变时的错误码, 详细定义见: LocalAudioStreamError |
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 | 耗时,从加入房间到该事件发生经历的时间 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLocalVideoStateChanged(
int state,
int error)
本地视频的状态发生改变时,该回调返回当前的本地视频状态。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| state | int | 本地视频状态。 |
| error | int | 本地视频状态改变时的错误码。 |
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 | 耗时,暂未实现。 |
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)。出图时间指从订阅视频流到第一个视频帧刷出来的间隔。
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstLocalScreenFrame(
int width,
int height,
int elapsed)
本地屏幕视频首帧回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| width | int | 视频流宽(像素) |
| height | int | 视频流高(像素) |
| elapsed | int | 从开启屏幕共享到本地屏幕首帧经过的时间(毫秒) |
注意
第一帧本地视频显示在本地视图上时,触发此回调。
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 加入频道开始到发生此事件过去的时间(毫秒) |
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 直至该回调被触发的延迟(毫秒)。 |
注意
第一帧本地视频显示在视图上时,触发此回调。
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。
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]。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onConnectionLost()
SDK 与信令服务器连接断开回调。当 SDK 与信令服务器的网络连接断开超过 10 秒时回调该事件。
注意
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onConnectionInterrupted()
SDK 与信令服务器连接中断回调。当 SDK 的当前网络连接类型发生改变时回调该事件。
注意
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 。 |
注意
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onStreamAdd(
ByteStream stream)
房间内新流发布回调。
房间内的远端用户发布新的音视频流时,本地用户会收到此回调通知。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream | ByteStream | 流的属性,详见 ByteStream 数据类型。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onStreamRemove(
ByteStream stream,
IRtcEngineEventHandler.RtcStreamRemoveReason reason)
房间内远端流移除回调。
房间内的远端用户停止发布音视频流时,本地用户会收到此回调通知。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream | ByteStream | 流的属性,详见 ByteStream 数据类型。 |
| reason | IRtcEngineEventHandler.RtcStreamRemoveReason | 流移除的原因,详见枚举类型 RtcStreamRemoveReason 。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioMixingFinished()
本地音乐文件播放已结束回调。 当调用 startAudioMixing 启动的混音文件播放结束后,会触发该回调。
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioRouteChanged(
int routing)
音频路由变化时回调该事件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| routing | int | 新的音频路由,值含义如下: • -1 默认音频路由,实际不会出现 • 0 耳机 • 1 听筒 • 3 扬声器 • 5 蓝牙耳机 |
注意
音频路由设置与音频路由策略详见 setEnableSpeakerphone
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstLocalAudioFrame(
int elapsed)
当收到本地第一帧音频的时候上报该事件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| elapsed | int | 从开始发布音频流到收到该事件经历的时间(毫秒单位) |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onFirstRemoteAudioFrame(
String uid,
long elapsed)
当收到远端流的第一帧音频的时候上报该事件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 远端用户 ID |
| elapsed | long | 从开始订阅音频流到收到该事件经历的时间(毫秒单位) |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onActiveSpeaker(
String uid)
监测到活跃用户回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 当前时间段声音最大的用户的uid。如果返回的uid为0,则默认为本地用户 |
注意
如果用户开启了 enableAudioVolumeIndication 功能,则当音量检测模块监测到频道内有新的活跃用户说话时,会通过本回调返回该用户的 uid。
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onAudioEffectFinished(
int soundId)
本地音效文件播放已结束回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | int | 音效ID,应用调用者维护,请保证唯一性。 |
注意
当调用 playEffect 方法开始播放指定音效文件, 音效文件播放结束后, 应用会收到该回调。
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onLogReport(
String logType,
JSONObject logContent)
上报日志时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| logType | String | 日志类型。 |
| logContent | JSONObject | 日志内容。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onRemoteVideoStateChanged(
String uid,
int state)
视频状态转换回调,计算卡顿使用
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 用户ID |
| state | int | 状态 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onCustomMessage(
String message)
广播消息回调。接收到房间内的广播消息时触发。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| message | String | 收到的消息内容 |
注意
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onStreamPublished(
String url,
int error)
直播推流转码状态回调。
用户调用 enableLiveTranscoding 方法启动直播推流转码功能后,直播推流转码功能启动成功或失败时、推流过程中发生错误时,SDK 通过此回调通知用户对应的状态事件。
回调事件为错误状态事件时,App 需根据功能状态码的处理建议做对应的处理,如通知用户或重试等。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| url | String | 推流地址。直播推流的地址,为 URL 地址。 |
| error | int | 直播推流转码功能状态码,详见枚举类型 RtcTransCodeingErrorCode 。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onMessageReceived(
String uid,
String message)
点对点消息回调。接收到同一房间内 uid 所属用户发来消息时触发。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 消息发送者 ID 。 |
| message | String | 收到的消息内容。 |
注意
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onMessageSendResult(
long msgid,
int error)
点对点消息发送结果回调。当调用 sendMessage 函数发送消息后,回调此条消息的发送结果(反馈)。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | long | 本条消息的 ID 。 |
| error | int | 消息发送结果。 • 0: 成功。 • 1: 失败,超时。 • 2: 失败,连接中断。 • 3: 失败,没有找到对应的接收者。 • 100: 失败,没有加入房间。 • 101: 失败,连接未完成初始化,发送失败。 • 102: 失败,没有可用的连接。 • 1000: 失败,未知错误。 |
public void com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.onMirrorStateChanged(
boolean mirrored)
当本地视频镜像状态改变时回调该事件。默认回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mirrored | boolean | 当前是否开启镜像。 • true: 当前本地视频状态为开启镜像; • false: 当前本地视频状态为关闭镜像。 |
public static class com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.RemoteStreamSwitch
远端流回退或恢复数据
| 类型 | 名称 |
|---|---|
| String | uid |
| boolean | isScreen |
| int | before_video_index |
| int | after_video_index |
| boolean | before_enable |
| boolean | after_enable |
| FallbackOrRecoverReason | reason |
public String com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.RemoteStreamSwitch.uid;
远端用户id
public boolean com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.RemoteStreamSwitch.isScreen;
是否是屏幕共享流
public int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.RemoteStreamSwitch.before_video_index;
流切换前订阅视频流的分辨率对应的索引
public int com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.RemoteStreamSwitch.after_video_index;
流切换后订阅视频流的分辨率对应的索引
public boolean com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.RemoteStreamSwitch.before_enable;
流切换前是否有视频流
public boolean com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.RemoteStreamSwitch.after_enable;
流切换后是否有视频流
public FallbackOrRecoverReason com.ss.video.rtc.engine.handler.IRtcEngineEventHandler.RemoteStreamSwitch.reason;
流切换原因
public interface com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler
音频外部设备事件监听,只用于自定义音频采集渲染的情况 SDK内部需要控制外部设备时,通过这个事件监听类通知上层应用
| 返回 | 名称 |
|---|---|
| void | onAudioDeviceRecordStart |
| void | onAudioDeviceRecordStop |
| void | onAudioDevicePlayoutStart |
| void | onAudioDevicePlayoutStop |
void com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler.onAudioDeviceRecordStart()
通知上层应用开启音频采集设备
void com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler.onAudioDeviceRecordStop()
通知上层应用关闭音频采集设备
void com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler.onAudioDevicePlayoutStart()
通知上层应用开启音频播放设备
void com.ss.video.rtc.engine.handler.IRtcEngineAudioDeviceEventHandler.onAudioDevicePlayoutStop()
通知上层应用关闭音频播放设备
public interface com.ss.video.rtc.engine.mediaio.IVideoSink
视频数据回调接口。
| 返回 | 名称 |
|---|---|
| boolean | onInitialize |
| boolean | onStart |
| void | onStop |
| void | onDispose |
| EGLContext | getEGLContextHandle |
| int | getBufferType |
| int | getPixelFormat |
boolean com.ss.video.rtc.engine.mediaio.IVideoSink.onInitialize()
初始化渲染器。
返回值
true:Media Engine 会认为自定义的渲染器已经初始化好 false:Media Engine 会认为自定义的渲染器初始化失败,不继续往下运行
注意
MediaEngine初始化渲染器的时候调用这个方法。开发者可以在这个方法中做渲染器的初始化工作。如果是耗时操作,也可以提前初始化好,然后在这个方法中告知 Media Engine 自定义渲染器已初始化好。 该方法需要开发者自己输入 true 或 false,以告知 Media Engine 自定义渲染器的状态。
boolean com.ss.video.rtc.engine.mediaio.IVideoSink.onStart()
启动渲染器。
返回值
true:MediaEngine继续进行渲染 false:MediaEngine认为出错而停止渲染器的功能
注意
MediaEngine 在开启渲染功能的时候会回调这个方法。开发者可以在这个方法中启动渲染器。该方法需要开发者输入 true 或 false,Media Engine 会根据返回值做对应的动作。
void com.ss.video.rtc.engine.mediaio.IVideoSink.onStop()
停止渲染器。
注意
MediaEngine在停止渲染功能的时候会回调这个方法。开发者可以在这个方法中停止渲染。
void com.ss.video.rtc.engine.mediaio.IVideoSink.onDispose()
释放渲染器。
注意
MediaEngine通知开发者渲染器即将被废弃。在onDispose()返回之后,开发者就可以释放掉资源了。
EGLContext com.ss.video.rtc.engine.mediaio.IVideoSink.getEGLContextHandle()
获取 EGLContextHandle。
返回值
返回创建好的EGLContext
注意
Media Engine 在需要创建 EGLContext 的时候,首先会从自定义的渲染器中查询,是都已经创建了 EGLContext。如果自定义渲染器中已经创建了并管理 EGL 环境,这个方法就会返回 EGLContext 的 Native Handle 并共享给 Media Engine。 如果自定义渲染器中没有创建 EGLContext,会返回 0。
@RtcVideoFrame.BufferType int com.ss.video.rtc.engine.mediaio.IVideoSink.getBufferType()
获取Buffer类型。
返回值
Buffer类型
注意
开发者在返回值中指定一种 Buffer 类型并告知 Media Engine。
@RtcVideoFrame.PixelFormat int com.ss.video.rtc.engine.mediaio.IVideoSink.getPixelFormat()
获取像素格式。
返回值
PixelFormat像素格式
注意
用于自定义渲染器的时候,还需要指定视频数据的像素格式。当自定义渲染器希望得到 ByteArray 或者 ByteBuffer 类型的视频数据时,可以选择 YUV(YUV420P格式; 当自定义渲染器希望直接得到 Texture 时,也可以选择 Texture。
public interface com.ss.video.rtc.engine.IAudioFrameObserver
音频数据回调观察者
| 返回 | 名称 |
|---|---|
| void | onRecordAudioFrame |
| void | onPlaybackAudioFrame |
| void | onMixedAudioFrame |
void com.ss.video.rtc.engine.IAudioFrameObserver.onRecordAudioFrame(
ByteAudioFrame audioFrame)
返回麦克风录制的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteAudioFrame | 麦克风录制的音频数据, 详见:ByteAudioFrame |
void com.ss.video.rtc.engine.IAudioFrameObserver.onPlaybackAudioFrame(
ByteAudioFrame audioFrame)
返回远端所有用户混音后的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteAudioFrame | 远端所有用户混音后的音频数据, 详见:ByteAudioFrame |
void com.ss.video.rtc.engine.IAudioFrameObserver.onMixedAudioFrame(
ByteAudioFrame audioFrame)
返回本地麦克风录制和远端所有用户混音后的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteAudioFrame | 本地麦克风录制和远端所有用户混音后的音频数据, 详见:ByteAudioFrame |
public interface com.ss.video.rtc.engine.IMetadataObserver
metadata 观察者,可以接收媒体流中的 metadata, 或者向媒体流中添加 metadata
| 返回 | 名称 |
|---|---|
| void | onMetadataReceived |
| byte[] | onReadyToSendMetadata |
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 视频帧的时间戳,单位为毫秒 |
注意
回调中不能有耗时操作,以免影响视频卡顿
public byte[] com.ss.video.rtc.engine.IMetadataObserver.onReadyToSendMetadata(
long timeStampMs)
当SDK准备发送一个视频帧时,会回调该接口,向你询问是否需要在该视频帧中添加 metadata
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| timeStampMs | long | 待添加 metadata 视频帧的时间戳, 单位毫秒 |
返回值
byte[] 待发送的数据,大小不能超过1024bytes
注意