# 媒体事件管理

# 本地媒体事件

# 本地音频状态发生改变回调

void onLocalAudioStateChanged(		int 	state,
int 	error 
)	;

本地音频状态发生改变回调。 本地音频的状态发生改变时(包括本地麦克风录制状态和音频编码状态),SDK 会触发该回调报告当前的本地音频状态。 在本地音频出现故障时,该回调可以帮助你了解当前音频的状态以及出现故障的原因,方便你排查问题。 注解

  • 当状态为 LOCAL_AUDIO_STREAM_STATE_FAILED(3) 时,你可以在 error 参数中查看返回的错误信息。 参数
参数 描述
stats 当前的本地音频状态:LOCAL_AUDIO_STREAM_STATE_STOPPED(0):本地音频默认初始状态;LOCAL_AUDIO_STREAM_STATE_CAPTURING(1):本地音频录制设备启动成功;LOCAL_AUDIO_STREAM_STATE_ENCODING(2):本地音频首帧编码成功;LOCAL_AUDIO_STREAM_STATE_FAILED(3):本地音频启动失败
error 本地音频出错原因:LOCAL_AUDIO_STREAM_ERROR_OK(0):本地音频状态正常;LOCAL_AUDIO_STREAM_ERROR_FAILURE(1):本地音频出错原因不明确;LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION(2):没有权限启动本地音频录制设备;LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY(3):本地音频录制设备已经在使用中;LOCAL_AUDIO_STREAM_ERROR_CAPTURE_FAILURE(4):本地音频录制失败,建议你检查录制设备是否正常工作;LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE(5):本地音频编码失败

# 本地视频状态改变回调

void onLocalVideoStateChanged(	int localVideoState,
int 	error 
)	;

本地视频状态发生改变回调。 本地视频的状态发生改变时,SDK 会触发该回调返回当前的本地视频状态;当状态为 LOCAL_VIDEO_STREAM_STATE_FAILED(3) 时,你可以在 error 参数中查看返回的错误信息。 该接口在本地视频出现故障时,方便你了解当前视频的状态以及出现故障的原因,方便排查问题。

参数

参数 描述
localVideoState 当前的本地视频状态:LOCAL_VIDEO_STREAM_STATE_STOPPED(0):本地视频默认初始状态;LOCAL_VIDEO_STREAM_STATE_CAPTURING(1):本地视频采集设备启动成功;LOCAL_VIDEO_STREAM_STATE_ENCODING(2):本地视频首帧编码成功;LOCAL_VIDEO_STREAM_STATE_FAILED(3):本地视频启动失败
error 本地视频出错原因:LOCAL_VIDEO_STREAM_ERROR_OK(0):本地视频状态正常;LOCAL_VIDEO_STREAM_ERROR_FAILURE(1):出错原因不明确;LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION(2):没有权限启动本地视频采集设备;LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY(3):本地视频采集设备正在使用中;LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE(4):本地视频采集失败,建议检查采集设备是否正常工作;Android 9 及以上版本,app 切后台一段时间后,系统收回相机权限;Android 6 及以上版本,如果相机被第三方应用占用,且未被及时释放。如果一段时间后,相机被释放,则 SDK 会再次出发该回调,并报告 state 为 CAPTURING,error 为 ERROR_OK.;LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE(5):本地视频编码失败

# 远端媒体事件

# 远端用户音频状态已改变回调

void onRemoteAudioStateChanged(	int 	uid,
int 	state,
int 	reason,
int 	elapsed 
)	;

远端音频状态发生改变回调。

远端用户(通信场景)或主播(直播场景)音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。

参数

uid 发生音频状态改变的远端用户 ID
state 远端音频流状态:[REMOTE_AUDIO_STATE_STOPPED(0)]:远端音频流默认初始状态。 在 REMOTE_AUDIO_REASON_LOCAL_MUTED(3)、REMOTE_AUDIO_REASON_REMOTE_MUTED(5) 或 REMOTE_AUDIO_REASON_REMOTE_OFFLINE(7) 的情况下,会报告该状态。REMOTE_AUDIO_STATE_STARTING(1):本地用户已接收远端音频首包REMOTE_AUDIO_STATE_DECODING(2):远端音频流正在解码,正常播放。在 REMOTE_AUDIO_REASON_NETWORK_RECOVERY(2)、 REMOTE_AUDIO_REASON_LOCAL_UNMUTED(4) 或 REMOTE_AUDIO_REASON_REMOTE_UNMUTED(6) 的情况下,会报告该状态REMOTE_AUDIO_STATE_FROZEN(3):远端音频流卡顿。在 REMOTE_AUDIO_REASON_NETWORK_CONGESTION(1) 的情况下,会报告该状态REMOTE_AUDIO_STATE_FAILED(4):远端音频流播放失败。在 REMOTE_AUDIO_REASON_INTERNAL(0) 的情况下,会报告该状态
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 方法到发生本事件经历的时间,单位为 ms

# 远端用户视频状态已变化回调

void onRemoteVideoStateChanged(	int 	uid,
int 	state,
int 	reason,
int 	elapsed 
)

远端用户视频状态发生已变化回调。

参数

uid 发生视频状态改变的远端用户 ID
state 远端视频流状态:REMOTE_VIDEO_STATE_STOPPED(0):远端视频默认初始状态。在 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED(3)、REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED(5) 或 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE(7) 的情况下,会报告该状态。REMOTE_VIDEO_STATE_STARTING(1):本地用户已接收远端视频首包REMOTE_VIDEO_STATE_DECODING(2):远端视频流正在解码,正常播放。在 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY(2)、REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED(4)、REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED(6) 或 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY(9) 的情况下,会报告该状态REMOTE_VIDEO_STATE_FROZEN(3):远端视频流卡顿。在 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION(1) 或 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK(8) 的情况下,会报告该状态REMOTE_VIDEO_STATE_FAILED(4):远端视频流播放失败。在 REMOTE_VIDEO_STATE_REASON_INTERNAL(0) 的情况下,会报告该状态。
reason 远端视频流状态改变的具体原因:REMOTE_VIDEO_STATE_REASON_INTERNAL(0):内部原因REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION(1):网络阻塞REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY(2):网络恢复正常REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED(3):本地用户停止接收远端视频流或本地用户禁用视频模块REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED(4):本地用户恢复接收远端视频流或本地用户启动视频模块REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED(5):远端用户停止发送视频流或远端用户禁用视频模块REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED(6):远端用户恢复发送视频流或远端用户启用视频模块REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE(7):远端用户离开频道REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK(8):远端视频流已回退为音频流REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY(9):回退的远端音频流恢复为视频流
elapsed 从本地用户调用 joinChannel方法到发生本事件经历的时间,单位为 ms