You need to enable JavaScript to run this app.
导航
回调
最近更新时间:2024.11.07 21:05:32首次发布时间:2022.08.08 10:29:46

IRemoteEncodedVideoFrameObserver
class bytertc::IRemoteEncodedVideoFrameObserver
cpp

远端编码后视频数据监测器

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual voidonRemoteEncodedVideoFrame

函数说明

onRemoteEncodedVideoFrame

virtual void bytertc::IRemoteEncodedVideoFrameObserver::onRemoteEncodedVideoFrame(
    const RemoteStreamKey &stream_info,
    const IEncodedVideoFrame &video_stream
)=0
cpp

调用 registerRemoteEncodedVideoFrameObserver 后,SDK 监测到远端编码后视频数据时,触发该回调

传入参数

参数名类型说明
stream_infoconst RemoteStreamKey &收到的远端流信息,参看 RemoteStreamKey
video_streamconst IEncodedVideoFrame &收到的远端视频帧信息,参看 IEncodedVideoFrame

IAudioEffectPlayerEventHandler
class bytertc::IAudioEffectPlayerEventHandler
cpp

IAudioEffectPlayer 对应的回调句柄。你必须调用 setEventHandler 完成设置后,才能收到对应回调。

成员函数

返回名称
virtual~IAudioEffectPlayerEventHandler
virtual voidonAudioEffectPlayerStateChanged

函数说明

~IAudioEffectPlayerEventHandler

virtual bytertc::IAudioEffectPlayerEventHandler::~IAudioEffectPlayerEventHandler()
cpp

onAudioEffectPlayerStateChanged

virtual void bytertc::IAudioEffectPlayerEventHandler::onAudioEffectPlayerStateChanged(
    int effect_id,
    PlayerState state,
    PlayerError error
)=0
cpp

播放状态改变时回调。

传入参数

参数名类型说明
effect_idintIAudioEffectPlayer 的 ID。通过 getAudioEffectPlayer 设置。
statePlayerState混音状态。参考 PlayerState
errorPlayerError错误码。参考 PlayerError

IEncryptHandler
class bytertc::IEncryptHandler
cpp

加密/解密处理函数

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual unsigned intonEncryptData
virtual unsigned intonDecryptData

函数说明

onEncryptData

virtual unsigned int bytertc::IEncryptHandler::onEncryptData(
    const unsigned char* data,
    unsigned int length,
    unsigned char* buf,
    unsigned int buf_len
)=0
cpp

自定义加密。

使用设定的自定义加密方式,对编码后传输前的音视频帧数据进行加密。

暂不支持对原始音视频帧进行加密。

传入参数

参数名类型说明
dataconst unsigned char *原始音视频帧数据
lengthunsigned int原始音视频帧数据的长度
bufunsigned char *可供写入的加密后数据缓冲区
buf_lenunsigned int可供写入的加密后数据缓冲区大小

返回值

加密后的数据

  • ≥ 0:加密后实际写入缓冲区的数据大小
  • 0:丢弃该帧

注意

  • 使用此接口进行自定义加密前,你必须先设置自定义加密方式,参看 setCustomizeEncryptHandler
  • 使用 onDecryptData 对已加密的音视频帧数据进行解密。
  • 返回的数据大小应控制在原始数据的 90% ~ 120% 范围以内,不然将被丢弃。

onDecryptData

virtual unsigned int bytertc::IEncryptHandler::onDecryptData(
    const unsigned char* data,
    unsigned int length,
    unsigned char* buf,
    unsigned int buf_len
)=0
cpp

自定义解密。

对自定义加密后的音视频帧数据进行解密。关于自定义加密,参看 onEncryptData

传入参数

参数名类型说明
dataconst unsigned char *原始音视频帧数据
lengthunsigned int原始音视频帧数据的长度
bufunsigned char *可供写入的加密后数据缓冲区
buf_lenunsigned int可供写入的加密后数据缓冲区大小

返回值

加密后的数据

  • ≥ 0:加密后实际写入缓冲区的数据大小
  • 0:丢弃该帧

注意

  • 使用此接口进行解密前,你必须先设定解密方式,参看 setCustomizeEncryptHandler
  • 返回的数据大小应控制在原始数据的 90% ~ 120% 范围以内,不然将被丢弃。

IMixedStreamObserver
class bytertc::IMixedStreamObserver
cpp

合流推流 Observer

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual boolisSupportClientPushStream
virtual voidonMixingVideoFrame
virtual voidonMixingAudioFrame
virtual voidonMixingDataFrame

函数说明

isSupportClientPushStream

virtual bool bytertc::IMixedStreamObserver::isSupportClientPushStream()=0
cpp

是否具有推流能力。

  • false:不具备推流能力(默认值)
  • true:具备推流能力

注意

  • 如果需要开启端云一体转推直播功能,你必须确保你的 App 包含 librtmp,具有推流能力。此时,设置该回调为 true。

onMixingVideoFrame

virtual void bytertc::IMixedStreamObserver::onMixingVideoFrame(
    const char* task_id,
    IVideoFrame* video_frame
)=0
cpp

合流视频回调,运行在视频回调线程

传入参数

参数名类型说明
task_idconst char *合流任务 ID
video_frameIVideoFrame *视频帧,参看 IVideoFrame

注意

收到该回调的周期与视频的帧间隔一致。

onMixingAudioFrame

virtual void bytertc::IMixedStreamObserver::onMixingAudioFrame(
    const char* task_id,
    IAudioFrame* audio_frame
)=0
cpp

合流音频回调,运行在音频回调线程

传入参数

参数名类型说明
task_idconst char *转推直播任务 ID
audio_frameIAudioFrame *音频帧,参看 IAudioFrame

注意

收到该回调的周期为每 10 毫秒一次,并且每次的音频数据量为 10 毫秒数据量。

onMixingDataFrame

virtual void bytertc::IMixedStreamObserver::onMixingDataFrame(
    const char* task_id,
    IDataFrame* data_frame
)=0
cpp

视频 SEI 帧回调,运行在视频回调线程

传入参数

参数名类型说明
task_idconst char *转推直播任务 ID
data_frameIDataFrame *SEI 数据

IRTCRoomEventHandler
class bytertc::IRTCRoomEventHandler
cpp

音视频房间事件回调接口

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual voidonRoomStateChanged
virtual voidonStreamStateChanged
virtual voidonLeaveRoom
virtual voidonTokenWillExpire
virtual voidonPublishPrivilegeTokenWillExpire
virtual voidonSubscribePrivilegeTokenWillExpire
virtual voidonRoomStats
virtual voidonRemoteStreamStats
virtual voidonUserJoined
virtual voidonUserLeave
virtual voidonUserPublishStream
virtual voidonUserUnpublishStream
virtual voidonUserPublishScreen
virtual voidonUserUnpublishScreen
virtual voidonStreamSubscribed
virtual voidonRoomMessageReceived
virtual voidonRoomBinaryMessageReceived
virtual voidonUserMessageReceived
virtual voidonUserBinaryMessageReceived
virtual voidonUserMessageSendResult
virtual voidonRoomMessageSendResult
virtual voidonVideoStreamBanned
virtual voidonAVSyncStateChange
virtual voidonAudioStreamBanned
virtual voidonForwardStreamStateChanged
virtual voidonForwardStreamEvent
virtual voidonNetworkQuality
virtual voidonSetRoomExtraInfoResult
virtual voidonRoomExtraInfoUpdate
virtual voidonUserVisibilityChanged
virtual voidonSubtitleStateChanged
virtual voidonSubtitleMessageReceived
virtual void[deprecated] onRoomWarning
virtual void[deprecated] onRoomError
virtual void[deprecated] onStreamRemove
virtual void[deprecated] onStreamAdd

函数说明

onRoomStateChanged

virtual void bytertc::IRTCRoomEventHandler::onRoomStateChanged(
    const char* room_id,
    const char* uid,
    int state,
    const char* extra_info
)
cpp

房间状态改变回调,加入房间、异常退出房间、发生房间相关的警告或错误时会收到此回调。

传入参数

参数名类型说明
room_idconst char *房间 ID。
uidconst char *用户 ID。
stateint房间状态码。
  • 0: 加入房间成功。
  • !0: 加入房间失败、异常退房、发生房间相关的警告或错误。具体原因参看 ErrorCodeWarningCode
extra_infoconst char *额外信息,如 {"elapsed":1187,"join_type":0}
join_type表示加入房间的类型,0为首次进房,1为重连进房。
elapsed表示加入房间耗时,即本地用户从调用 joinRoom 到加入房间成功所经历的时间间隔,单位为 ms。

onStreamStateChanged

virtual void bytertc::IRTCRoomEventHandler::onStreamStateChanged(
    const char* room_id,
    const char* uid,
    int state,
    const char* extra_info
)
cpp

流状态改变回调,发生流相关的警告或错误时会收到此回调。

传入参数

参数名类型说明
room_idconst char *房间 ID。
uidconst char *用户 ID。
stateint流状态码,参看 ErrorCodeWarningCode
extra_infoconst char *附加信息,目前为空。

onLeaveRoom

virtual void bytertc::IRTCRoomEventHandler::onLeaveRoom(const RtcRoomStats &stats)
cpp

离开房间成功回调。

用户调用 leaveRoom 方法后,SDK 会停止所有的发布订阅流,并在释放所有与通话相关的音视频资源后,通过此回调通知用户离开房间成功。

传入参数

参数名类型说明
statsconst RtcRoomStats &保留参数,目前为空。

注意

  • 用户调用 leaveRoom 方法离开房间后,如果立即调用 destroy 销毁房间实例或 destroyRTCVideo 方法销毁 RTC 引擎,则将无法收到此回调事件。
  • 离开房间后,如果 App 需要使用系统音视频设备,则建议收到此回调后再初始化音视频设备,否则可能由于 SDK 占用音视频设备而导致初始化失败。

onTokenWillExpire

virtual void bytertc::IRTCRoomEventHandler::onTokenWillExpire()
cpp

当 SDK 检测到 Token 的进房权限将在 30 秒内过期时,触发该回调。

收到该回调后,你需调用 updateToken 更新 Token 进房权限。

注意

若未能及时更新 Token 进房权限导致其过期实效:

  • 用户此时尝试进房会收到 onRoomStateChanged 回调,提示错误码为 -1000 Token 过期;
  • 用户已在房间内则会被移出房间,本地用户会收到 onRoomStateChanged 回调,提示错误码为 -1009 Token 过期,同时远端用户会收到 onUserLeave 回调,提示原因为 2 Token 进房权限过期。

onPublishPrivilegeTokenWillExpire

virtual void bytertc::IRTCRoomEventHandler::onPublishPrivilegeTokenWillExpire()
cpp

Token 发布权限过期前 30 秒将触发该回调。

收到该回调后,你需调用 updateToken 更新 Token 发布权限。

注意

若收到该回调后未及时更新 Token,Token 发布权限过期后:

onSubscribePrivilegeTokenWillExpire

virtual void bytertc::IRTCRoomEventHandler::onSubscribePrivilegeTokenWillExpire()
cpp

Token 订阅权限过期前 30 秒将触发该回调。

收到该回调后,你需调用 updateToken 更新 Token 订阅权限有效期。

注意

若收到该回调后未及时更新 Token,Token 订阅权限过期后,尝试新订阅流会失败,已订阅的流会取消订阅,并且会收到 onStreamStateChanged 回调,提示错误码为 -1003 没有订阅权限。

onRoomStats

virtual void bytertc::IRTCRoomEventHandler::onRoomStats(const RtcRoomStats &stats)
cpp

房间内通话统计信息回调。

用户进房开始通话后,每 2s 收到一次本回调。

传入参数

参数名类型说明
statsconst RtcRoomStats &当前 RtcEngine 统计数据,详见 RtcRoomStats

onRemoteStreamStats

virtual void bytertc::IRTCRoomEventHandler::onRemoteStreamStats(const RemoteStreamStats &stats)
cpp

本地订阅的远端音/视频流数据统计以及网络质量回调。

本地用户订阅流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的流在此次统计周期内的质量统计信息,包括:发送音视频比特率、发送帧率、编码帧率,网络质量等。

传入参数

参数名类型说明
statsconst RemoteStreamStats &当前 RtcEngine 统计数据,详见 RemoteStreamStats

onUserJoined

virtual void bytertc::IRTCRoomEventHandler::onUserJoined(
    const UserInfo &user_info,
    int elapsed
)
cpp

远端可见用户加入房间,或房内不可见用户切换为可见的回调。

  1. 远端用户调用 setUserVisibility 方法将自身设为可见后加入房间时,房间内其他用户将收到该事件。

  2. 远端可见用户断网后重新连入房间时,房间内其他用户将收到该事件。

  3. 房间内隐身远端用户调用 setUserVisibility 方法切换至可见时,房间内其他用户将收到该事件。

  4. 新进房用户会收到进房前已在房内的可见用户的进房回调通知。

传入参数

参数名类型说明
user_infoconst UserInfo &用户信息,详见 UserInfo
elapsedint保留字段,无意义。

onUserLeave

virtual void bytertc::IRTCRoomEventHandler::onUserLeave(
    const char* uid,
    UserOfflineReason reason
)
cpp

远端用户离开房间,或切至不可见时,本地用户会收到此事件

传入参数

参数名类型说明
uidconst char *离开房间,或切至不可见的的远端用户 ID。
reasonUserOfflineReason用户离开房间的原因,详见 UserOfflineReason
  • 0: 远端用户调用 leaveRoom 主动退出房间。
  • 1: 远端用户因 Token 过期或网络原因等掉线。 详细信息请参看连接状态提示
  • 2: 远端用户调用 setUserVisibility 切换至不可见状态。
  • 3: 服务端调用 OpenAPI 将远端用户踢出房间。

onUserPublishStream

virtual void bytertc::IRTCRoomEventHandler::onUserPublishStream(
    const char* uid,
    MediaStreamType type
)
cpp

房间内新增远端摄像头/麦克风采集的媒体流的回调。

传入参数

参数名类型说明
uidconst char *远端流发布用户的用户 ID。
typeMediaStreamType远端媒体流的类型,参看 MediaStreamType

注意

当房间内的远端用户调用 publishStream 成功发布由摄像头/麦克风采集的媒体流时,本地用户会收到该回调,此时本地用户可以自行选择是否调用 subscribeStream 订阅此流。

onUserUnpublishStream

virtual void bytertc::IRTCRoomEventHandler::onUserUnpublishStream(
    const char* uid,
    MediaStreamType type,
    StreamRemoveReason reason
)
cpp

房间内远端摄像头/麦克风采集的媒体流移除的回调。

传入参数

参数名类型说明
uidconst char *移除的远端流发布用户的用户 ID。
typeMediaStreamType移除的远端流类型,参看 MediaStreamType
reasonStreamRemoveReason远端流移除的原因,参看 StreamRemoveReason

注意

收到该回调通知后,你可以自行选择是否调用 unsubscribeStream 取消订阅此流。

onUserPublishScreen

virtual void bytertc::IRTCRoomEventHandler::onUserPublishScreen(
    const char* uid,
    MediaStreamType type
)
cpp

房间内新增远端屏幕共享音视频流的回调。

传入参数

参数名类型说明
uidconst char *远端流发布用户的用户 ID。
typeMediaStreamType远端媒体流的类型,参看 MediaStreamType

注意

当房间内的远端用户调用 publishScreen 成功发布来自屏幕共享的音视频流时,本地用户会收到该回调,此时本地用户可以自行选择是否调用 subscribeScreen 订阅此流。(Linux 不支持)

onUserUnpublishScreen

virtual void bytertc::IRTCRoomEventHandler::onUserUnpublishScreen(
    const char* uid,
    MediaStreamType type,
    StreamRemoveReason reason
)
cpp

房间内远端屏幕共享音视频流移除的回调。

传入参数

参数名类型说明
uidconst char *移除的远端流发布用户的用户 ID。
typeMediaStreamType移除的远端流类型,参看 MediaStreamType
reasonStreamRemoveReason远端流移除的原因,参看 StreamRemoveReason

注意

收到该回调通知后,你可以自行选择是否调用 unsubscribeScreen 取消订阅此流。

onStreamSubscribed

virtual void bytertc::IRTCRoomEventHandler::onStreamSubscribed(
    SubscribeState state_code,
    const char* user_id,
    const SubscribeConfig &info
)
cpp

关于订阅媒体流状态改变的回调

传入参数

参数名类型说明
state_codeSubscribeState订阅媒体流状态,参看 SubscribeState
user_idconst char *流发布用户的用户 ID
infoconst SubscribeConfig &流的属性,参看 SubscribeConfig

注意

本地用户收到该回调的时机包括:

  • 调用 subscribeStreamsubscribeScreen 订阅指定远端音视频流后。
  • 不开启音频选路模式时,调用 unsubscribeStreamunsubscribeScreenunsubscribeAllStreams 取消订阅指定远端音视频流后,且此时本端用户仍订阅了该远端用户的其他媒体流,将会触发本回调,其余情况不会收到此回调。比如,本端同时订阅了用户 A 的音频和视频流,取消订阅 A 的视频流时,收到本回调。此后取消订阅 A 的音频流时不会收到该回调。

onRoomMessageReceived

virtual void bytertc::IRTCRoomEventHandler::onRoomMessageReceived(
    const char* uid,
    const char* message
)
cpp

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

传入参数

参数名类型说明
uidconst char *
消息发送者 ID
messageconst char *
收到的消息内容

注意

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

onRoomBinaryMessageReceived

virtual void bytertc::IRTCRoomEventHandler::onRoomBinaryMessageReceived(
    const char* uid,
    int size,
    const uint8_t* message
)
cpp

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

房间内其他用户调用 sendRoomBinaryMessage 发送广播二进制消息时,收到此回调。

传入参数

参数名类型说明
uidconst char *
消息发送者 ID
sizeint
收到的二进制消息长度
messageconst uint8_t *
收到的二进制消息内容

注意

同一房间内其他用户调用 sendRoomBinaryMessage 发送二进制广播消息时会收到该回调。

onUserMessageReceived

virtual void bytertc::IRTCRoomEventHandler::onUserMessageReceived(
    const char* uid,
    const char* message
)
cpp

收到来自房间中其他用户通过 sendUserMessage 发来的点对点文本消息时,会收到此回调。

传入参数

参数名类型说明
uidconst char *
消息发送者 ID 。
messageconst char *
收到的文本消息内容。

注意

onUserBinaryMessageReceived

virtual void bytertc::IRTCRoomEventHandler::onUserBinaryMessageReceived(
    const char* uid,
    int size,
    const uint8_t* message
)
cpp

收到来自房间中其他用户通过 sendUserBinaryMessage 发来的点对点二进制消息时,会收到此回调。

传入参数

参数名类型说明
uidconst char *消息发送者 ID 。
sizeint消息长度
messageconst uint8_t *收到的二进制消息内容。

onUserMessageSendResult

virtual void bytertc::IRTCRoomEventHandler::onUserMessageSendResult(
    int64_t msgid,
    int error
)
cpp

向房间内单个用户发送文本或二进制消息后(P2P),消息发送方会收到该消息发送结果回调。

传入参数

参数名类型说明
msgidint64_t
本条消息的 ID。
errorint
文本或二进制消息发送结果,详见 UserMessageSendResult

注意

onRoomMessageSendResult

virtual void bytertc::IRTCRoomEventHandler::onRoomMessageSendResult(
    int64_t msgid,
    int error
)
cpp

调用 sendRoomMessagesendRoomBinaryMessage 向房间内群发文本或二进制消息后,消息发送方会收到该消息发送结果回调。

传入参数

参数名类型说明
msgidint64_t
本条消息的 ID
errorint
消息发送结果
详见 RoomMessageSendResult

onVideoStreamBanned

virtual void bytertc::IRTCRoomEventHandler::onVideoStreamBanned(
    const char* uid,
    bool banned
)
cpp

通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户视频流的发送时,触发此回调。

传入参数

参数名类型说明
uidconst char *被禁用/解禁的视频流用户 ID
bannedbool视频流发送状态
  • true: 视频流发送被禁用
  • false: 视频流发送被解禁

注意

  • 房间内指定用户被禁止/解禁视频流发送时,房间内所有用户都会收到该回调。
  • 若被封禁用户断网或退房后再进房,则依然是封禁状态,且房间内所有人会再次收到该回调。
  • 指定用户被封禁后,房间内其他用户退房后再进房,会再次收到该回调。
  • 同一房间解散后再次创建,房间内状态清空。

onAVSyncStateChange

virtual void bytertc::IRTCRoomEventHandler::onAVSyncStateChange(AVSyncState state)
cpp

发布端调用 setMultiDeviceAVSync 后音视频同步状态发生改变时,会收到此回调。

传入参数

参数名类型说明
stateAVSyncState音视频同步状态,参看 AVSyncState

onAudioStreamBanned

virtual void bytertc::IRTCRoomEventHandler::onAudioStreamBanned(
    const char* uid,
    bool banned
)
cpp

通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户音频流的发送时,触发此回调。

传入参数

参数名类型说明
uidconst char *被禁用/解禁的音频流用户 ID
bannedbool音频流发送状态
  • true: 音频流发送被禁用
  • false: 音频流发送被解禁

注意

  • 房间内指定用户被禁止/解禁音频流发送时,房间内所有用户都会收到该回调。
  • 若被封禁用户断网或退房后再进房,则依然是封禁状态,且房间内所有人会再次收到该回调。
  • 指定用户被封禁后,房间内其他用户退房后再进房,会再次收到该回调。
  • 在控制台开启音频选路后,只有被封禁/解禁用户会收到该回调。
  • 同一房间解散后再次创建,房间内状态清空。

onForwardStreamStateChanged

virtual void bytertc::IRTCRoomEventHandler::onForwardStreamStateChanged(
    ForwardStreamStateInfo* infos,
    int info_count
)
cpp

跨房间媒体流转发状态和错误回调

传入参数

参数名类型说明
infosForwardStreamStateInfo *跨房间媒体流转发目标房间信息数组,详见 ForwardStreamStateInfo
info_countint数组长度,代表目标房间数

onForwardStreamEvent

virtual void bytertc::IRTCRoomEventHandler::onForwardStreamEvent(
    ForwardStreamEventInfo* infos,
    int info_count
)
cpp

跨房间媒体流转发事件回调

传入参数

参数名类型说明
infosForwardStreamEventInfo *跨房间媒体流转发目标房间事件数组,详见 ForwardStreamEventInfo
info_countint数组长度,代表目标房间数

onNetworkQuality

virtual void bytertc::IRTCRoomEventHandler::onNetworkQuality(
    const NetworkQualityStats &local_quality,
    const NetworkQualityStats* remote_qualities,
    int remote_quality_num
)
cpp

加入房间并发布或订阅流后, 以每 2 秒一次的频率,报告本地用户和已订阅的远端用户的上下行网络质量信息。

传入参数

参数名类型说明
local_qualityconst NetworkQualityStats &本端网络质量,详见 NetworkQualityStats
remote_qualitiesconst NetworkQualityStats *已订阅用户的网络质量,详见 NetworkQualityStats
remote_quality_numintremoteQualities 数组长度

注意

更多通话中的监测接口,详见通话中质量监测

onSetRoomExtraInfoResult

virtual void bytertc::IRTCRoomEventHandler::onSetRoomExtraInfoResult(
    int64_t task_id,
    SetRoomExtraInfoResult error_code
)
cpp

Available since 3.52.

调用 setRoomExtraInfo 设置房间附加信息结果的回调。

传入参数

参数名类型说明
task_idint64_t调用 setRoomExtraInfo 的任务编号。
error_codeSetRoomExtraInfoResult设置房间附加信息的结果,详见 SetRoomExtraInfoResult

onRoomExtraInfoUpdate

virtual void bytertc::IRTCRoomEventHandler::onRoomExtraInfoUpdate(
    const char* key,
    const char* value,
    const char* last_update_user_id,
    int64_t last_update_time_ms
)
cpp

Available since 3.52.

接收同一房间内,其他用户调用 setRoomExtraInfo 设置的房间附加信息的回调。

传入参数

参数名类型说明
keyconst char *房间附加信息的键值
valueconst char *房间附加信息的内容
last_update_user_idconst char *最后更新本条信息的用户 ID。
last_update_time_msint64_t最后更新本条信息的 Unix 时间,单位:毫秒。

注意

新进房的用户会收到进房前房间内已有的全部附加信息通知。

onUserVisibilityChanged

virtual void bytertc::IRTCRoomEventHandler::onUserVisibilityChanged(
    bool current_user_visibility,
    UserVisibilityChangeError error_code
)
cpp

Available since 3.54

用户调用 setUserVisibility 设置用户可见性的回调。

传入参数

参数名类型说明
current_user_visibilitybool当前用户的可见性。
  • true: 可见,用户可以在房间内发布音视频流,房间中的其他用户将收到用户的行为通知,例如进房、开启视频采集和退房。
  • false: 不可见,用户不可以在房间内发布音视频流,房间中的其他用户不会收到用户的行为通知,例如进房、开启视频采集和退房。
error_codeUserVisibilityChangeError设置用户可见性错误码,参看 UserVisibilityChangeError

onSubtitleStateChanged

virtual void bytertc::IRTCRoomEventHandler::onSubtitleStateChanged(
    SubtitleState state,
    SubtitleErrorCode error_code,
    const char* error_message
)
cpp

字幕状态发生改变回调。

当用户调用 startSubtitlestopSubtitle 使字幕状态发生改变或出现错误时,触发该回调。

传入参数

参数名类型说明
stateSubtitleState字幕状态。参看 SubtitleState
error_codeSubtitleErrorCode字幕任务错误码。参看 SubtitleErrorCode
error_messageconst char *与第三方服务有关的错误信息。

onSubtitleMessageReceived

virtual void bytertc::IRTCRoomEventHandler::onSubtitleMessageReceived(
    const SubtitleMessage* subtitles,
    int cnt
)
cpp

字幕相关内容回调。

当用户调用 startSubtitle 后会收到此回调,通知字幕的相关信息。

传入参数

参数名类型说明
subtitlesconst SubtitleMessage *字幕消息内容。参看 SubtitleMessage
cntint字幕消息个数。

onRoomWarning

virtual void bytertc::IRTCRoomEventHandler::onRoomWarning(int warn)
cpp

Deprecated since 3.41 and will be deleted in 3.51, use onRoomStateChanged and onStreamStateChanged instead.

SDK 发生警告回调。

SDK 内部遇到可恢复错误时,在尝试自动恢复的同时,会通过此回调通知用户。此回调事件仅用作通知。

传入参数

参数名类型说明
warnint警告码,参看 WarningCode

onRoomError

virtual void bytertc::IRTCRoomEventHandler::onRoomError(int err)
cpp

Deprecated since 3.41 and will be deleted in 3.51, use onRoomStateChanged and onStreamStateChanged instead.

SDK 发生错误回调。

SDK 内部遇到不可恢复错误时,会通过此回调通知 App,需要 App 根据错误码进行操作或提示用户。

传入参数

参数名类型说明
errint错误码,参看 ErrorCode

onStreamRemove

virtual void bytertc::IRTCRoomEventHandler::onStreamRemove(
    const MediaStreamInfo &stream,
    StreamRemoveReason reason
)
cpp

Deprecated since 3.36 and will be deleted in 3.51, use onUserUnpublishStream and onUserUnpublishScreen instead.

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

传入参数

参数名类型说明
streamconst MediaStreamInfo &流的属性。参看 MediaStreamInfo
reasonStreamRemoveReason远端流移除的原因。参看 StreamRemoveReason

onStreamAdd

virtual void bytertc::IRTCRoomEventHandler::onStreamAdd(const MediaStreamInfo &stream)
cpp

Deprecated since 3.36 and will be deleted in 3.51, use onUserPublishStream and onUserPublishScreen instead.

房间内的用户发布新的音视频流时,房间内的其他用户会收到此回调。包括移除后又重新发布的流。

传入参数

参数名类型说明
streamconst MediaStreamInfo &流属性,参看 MediaStreamInfo

IExternalVideoEncoderEventHandler
class bytertc::IExternalVideoEncoderEventHandler
cpp

自定义编码帧回调类

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual voidonStart
virtual voidonStop
virtual voidonRateUpdate
virtual voidonRequestKeyFrame
virtual voidonActiveVideoLayer

函数说明

onStart

virtual void bytertc::IExternalVideoEncoderEventHandler::onStart(StreamIndex index)=0
cpp

提示自定义编码帧可以开始推送的回调。

收到该回调后,你即可调用 pushExternalEncodedVideoFrame 向 SDK 推送自定义编码视频帧

传入参数

参数名类型说明
indexStreamIndex可以推送的编码流的属性,参看 StreamIndex

onStop

virtual void bytertc::IExternalVideoEncoderEventHandler::onStop(StreamIndex index)=0
cpp

当收到该回调时,你需停止向 SDK 推送自定义编码视频帧

传入参数

参数名类型说明
indexStreamIndex需停止推送的编码流的属性,参看 StreamIndex

onRateUpdate

virtual void bytertc::IExternalVideoEncoderEventHandler::onRateUpdate(
    StreamIndex index,
    int32_t video_index,
    VideoRateInfo info
)=0
cpp

当自定义编码流的帧率或码率发生变化时,触发该回调

传入参数

参数名类型说明
indexStreamIndex发生变化的编码流的属性,参看 StreamIndex
video_indexint32_t对应编码流的下标
infoVideoRateInfo变化后的编码流信息,参看 VideoRateInfo

onRequestKeyFrame

virtual void bytertc::IExternalVideoEncoderEventHandler::onRequestKeyFrame(
    StreamIndex index,
    int32_t video_index
)=0
cpp

提示流发布端需重新生成关键帧的回调

传入参数

参数名类型说明
indexStreamIndex远端编码流的属性,参看 StreamIndex
video_indexint32_t对应编码流的下标

onActiveVideoLayer

virtual void bytertc::IExternalVideoEncoderEventHandler::onActiveVideoLayer(
    StreamIndex index,
    int32_t video_index,
    bool active
)=0
cpp

Available since 3.56

作为自定义编码视频流的发送端,你会在视频流可发送状态发生变化时,收到此回调。

你可以根据此回调的提示,仅对可发送的视频流进行编码,以降低本端视频编码性能消耗。此回调会根据多个因素综合判断触发,包括:本端设备性能和本端网络性能,以及按需订阅场景下,远端用户是否订阅。

传入参数

参数名类型说明
indexStreamIndex远端编码流的属性,参看 StreamIndex
video_indexint32_t对应编码流的下标
activebool该路流可发送状态

注意

要收到此回调,必须调用 setVideoSourceType 设置视频源是自定义编码,且通过 setExternalVideoEncoderEventHandler 设置了回调句柄。

IMediaPlayerAudioFrameObserver
class bytertc::IMediaPlayerAudioFrameObserver
cpp

本地音频文件混音的音频帧观察者。

成员函数

返回名称
virtual voidonFrame

函数说明

onFrame

virtual void bytertc::IMediaPlayerAudioFrameObserver::onFrame(
    int player_id,
    const IAudioFrame &frame
)=0
cpp

当本地音频文件混音时,回调播放的音频帧。

传入参数

参数名类型说明
player_idint播放器 ID
frameconst IAudioFrame &参看 IAudioFrame

IMetadataObserver
class bytertc::IMetadataObserver
cpp

Deprecated since 3.26 and will be deleted in 3.51, use sendSEIMessage instead.

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

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual boolonReadyToSendMetadata
virtual voidonMetadataReceived

函数说明

onReadyToSendMetadata

virtual bool bytertc::IMetadataObserver::onReadyToSendMetadata(VideoMetadataBuffer* metadata)=0
cpp

当 SDK 准备发送一个视频帧时,会回调该事件,以确定是否需要在该视频帧中添加 metadata。

传入参数

参数名类型说明
metadataVideoMetadataBuffer *待发送的数据,把数据拷贝到 data 字段中,并将 size 设置为真实的大小。

返回值

  • true:需要向视频帧中添加 metadata
  • false:不需要向视频帧中添加 metadata

注意

  • metadata 的大小不能超过 1024 字节
  • metadata 中的 timestampUs 是输入字段,代表视频帧的时间戳,做同步使用,不需要修改。
  • 回调中不能有耗时操作,以免影响视频卡顿

onMetadataReceived

virtual void bytertc::IMetadataObserver::onMetadataReceived(
    const char* roomid,
    const char* uid,
    const VideoMetadataBuffer &metadata
)=0
cpp

当 SDK 收到一个视频帧时,并且其中包含 medatada 时,会回调该事件。

传入参数

参数名类型说明
roomidconst char *当前帧所属的房间 ID。
uidconst char *当前帧所属的用户 ID。
metadataconst VideoMetadataBuffer &视频帧中包含的 metadata 信息。参看 VideoMetadataBuffer

注意

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

IMediaPlayerCustomSourceProvider
class bytertc::IMediaPlayerCustomSourceProvider
cpp

内存播放数据源回调

成员函数

返回名称
virtual intonReadData
virtual int64_tonSeek
virtual~IMediaPlayerCustomSourceProvider

函数说明

onReadData

virtual int bytertc::IMediaPlayerCustomSourceProvider::onReadData(
    uint8_t* buffer,
    int buffer_size
)=0
cpp

Available since 3.53

调用 openWithCustomSource 接口播放用户传入的内存音频数据时,会触发此回调,用户需要写入音频数据。

传入参数

参数名类型说明
bufferuint8_t *内存地址。在该地址中写入音频数据,写入音频数据的大小不超过 bufferSize 中填入的数值。支持的音频数据格式有: mp3,aac,m4a,3gp,wav。
buffer_sizeint音频数据大小,单位为字节。如果你想停止播放内存音频数据,可在 bufferSize 中填入小于或等于 0 的数,此时 SDK 会停止调用此接口。

返回值

返回实际读取的音频数据大小。

注意

openWithCustomSource 接口调用失败,请在 buffer 和 bufferSize 两个参数中填入 0。 此时 SDK 会停止调用此接口。

onSeek

virtual int64_t bytertc::IMediaPlayerCustomSourceProvider::onSeek(
    int64_t offset,
    MediaPlayerCustomSourceSeekWhence whence
)=0
cpp

Available since 3.53

根据设置好的内存音频数据的读取位置和读取偏移量对音频数据进行偏移,以便 SDK 读取和分析音频数据。

在调用 openWithCustomSource 接口传入内存音频数据,或者调用 setPosition 设置了音频数据的起始播放位置后,SDK 会对音频数据进行读取和分析,此时会触发该回调,你需要根据参数中设置的起始读取位置和偏移量进行操作。

传入参数

参数名类型说明
offsetint64_t音频数据读取偏移量,单位为字节,取值可正可负。
whenceMediaPlayerCustomSourceSeekWhence音频数据的起始读取位置。参看 MediaPlayerCustomSourceSeekWhence

返回值

定位成功,返回偏移后的位置信息,或返回音频数据的大小。

定位失败,返回 -1。

~IMediaPlayerCustomSourceProvider

virtual bytertc::IMediaPlayerCustomSourceProvider::~IMediaPlayerCustomSourceProvider()
cpp

IAudioFrameObserver
class bytertc::IAudioFrameObserver
cpp

音频数据回调观察者

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

本接口类中的单个回调的数据量为 20 ms 的数据量。回调周期在 20 ms 上下浮动。

成员函数

返回名称
virtual voidonRecordAudioFrame
virtual voidonPlaybackAudioFrame
virtual voidonRemoteUserAudioFrame
virtual voidonMixedAudioFrame
virtual voidonRecordScreenAudioFrame

函数说明

onRecordAudioFrame

virtual void bytertc::IAudioFrameObserver::onRecordAudioFrame(const IAudioFrame &audio_frame)=0
cpp

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

传入参数

参数名类型说明
audio_frameconst IAudioFrame &音频数据, 详见: IAudioFrame

onPlaybackAudioFrame

virtual void bytertc::IAudioFrameObserver::onPlaybackAudioFrame(const IAudioFrame &audio_frame)=0
cpp

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

传入参数

参数名类型说明
audio_frameconst IAudioFrame &音频数据, 详见: IAudioFrame

onRemoteUserAudioFrame

virtual void bytertc::IAudioFrameObserver::onRemoteUserAudioFrame(
    const RemoteStreamKey &stream_info,
    const IAudioFrame &audio_frame
)=0
cpp

返回远端单个用户的音频数据

传入参数

参数名类型说明
stream_infoconst RemoteStreamKey &远端流信息,参看 RemoteStreamKey
audio_frameconst IAudioFrame &音频数据, 参看 IAudioFrame

注意

此回调在播放线程调用。不要在此回调中做任何耗时的事情,否则可能会影响整个音频播放链路。

onMixedAudioFrame

virtual void bytertc::IAudioFrameObserver::onMixedAudioFrame(const IAudioFrame &audio_frame)=0
cpp

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

传入参数

参数名类型说明
audio_frameconst IAudioFrame &音频数据, 详见: IAudioFrame

onRecordScreenAudioFrame

virtual void bytertc::IAudioFrameObserver::onRecordScreenAudioFrame(const IAudioFrame &audio_frame)
cpp

返回本地屏幕录制的音频数据

传入参数

参数名类型说明
audio_frameconst IAudioFrame &音频数据, 详见: IAudioFrame

ITranscoderObserver
class bytertc::ITranscoderObserver
cpp

Deprecated since 3.52, use IMixedStreamObserver instead.

推流 Observer

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual boolisSupportClientPushStream
virtual voidonMixingVideoFrame
virtual voidonMixingAudioFrame
virtual voidonMixingDataFrame

函数说明

isSupportClientPushStream

virtual bool bytertc::ITranscoderObserver::isSupportClientPushStream()
cpp

是否具有推流能力。

  • false:不具备推流能力(默认值)
  • true:具备推流能力

注意

如果需要开启端云一体转推直播功能,你必须确保你的 App 包含 librtmp,具有推流能力。此时,设置该回调为 true。

onMixingVideoFrame

virtual void bytertc::ITranscoderObserver::onMixingVideoFrame(
    const char* task_id,
    IVideoFrame* video_frame
)=0
cpp

合流视频回调,运行在视频回调线程

传入参数

参数名类型说明
task_idconst char *合流任务 ID
video_frameIVideoFrame *视频帧,参看 IVideoFrame

注意

收到该回调的周期与视频的帧间隔一致。

onMixingAudioFrame

virtual void bytertc::ITranscoderObserver::onMixingAudioFrame(
    const char* task_id,
    IAudioFrame* audio_frame
)=0
cpp

合流音频回调,运行在音频回调线程

传入参数

参数名类型说明
task_idconst char *转推直播任务 ID
audio_frameIAudioFrame *音频帧,参看 IAudioFrame

注意

收到该回调的周期为每 10 毫秒一次,并且每次的音频数据量为 10 毫秒数据量。

onMixingDataFrame

virtual void bytertc::ITranscoderObserver::onMixingDataFrame(
    const char* task_id,
    IDataFrame* data_frame
)=0
cpp

视频 SEI 帧回调,运行在视频回调线程

传入参数

参数名类型说明
task_idconst char *转推直播任务 ID
data_frameIDataFrame *SEI 数据

IMediaPlayerEventHandler
class bytertc::IMediaPlayerEventHandler
cpp

IMediaPlayer 对应的回调句柄。你必须调用 setEventHandler 完成设置后,才能收到对应回调。

成员函数

返回名称
virtual~IMediaPlayerEventHandler
virtual voidonMediaPlayerStateChanged
virtual voidonMediaPlayerPlayingProgress

函数说明

~IMediaPlayerEventHandler

virtual bytertc::IMediaPlayerEventHandler::~IMediaPlayerEventHandler()
cpp

onMediaPlayerStateChanged

virtual void bytertc::IMediaPlayerEventHandler::onMediaPlayerStateChanged(
    int player_id,
    PlayerState state,
    PlayerError error
)=0
cpp

播放状态改变时回调。

传入参数

参数名类型说明
player_idintIMediaPlayer 的 ID。通过 getMediaPlayer 设置。
statePlayerState混音状态。参考 PlayerState
errorPlayerError错误码。参考 PlayerError

onMediaPlayerPlayingProgress

virtual void bytertc::IMediaPlayerEventHandler::onMediaPlayerPlayingProgress(
    int player_id,
    int64_t progress
)=0
cpp

播放进度周期性回调。回调周期通过 setProgressInterval 设置。

传入参数

参数名类型说明
player_idintIMediaPlayer 的 ID。通过 getMediaPlayer 设置。
progressint64_t进度。单位 ms。

IRemoteAudioFrameObserver
class bytertc::IRemoteAudioFrameObserver
cpp

Deprecated since 3.37 and will be deleted in 3.51.

音频数据回调观察者

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual voidonRemoteAudioFrame

函数说明

onRemoteAudioFrame

virtual void bytertc::IRemoteAudioFrameObserver::onRemoteAudioFrame(
    const IAudioFrame &audio_frame,
    const RemoteStreamKey &stream_info
)=0
cpp

获得单个流的音频数据,此回调通过调用 registerAudioFrameObserver 触发。

传入参数

参数名类型说明
audio_frameconst IAudioFrame &音频数据, 详见: IAudioFrame
stream_infoconst RemoteStreamKey &该音频流的业务信息, 详见: RemoteStreamKey

IAudioFrameProcessor
class bytertc::IAudioFrameProcessor
cpp

自定义音频处理器。

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual intonProcessRecordAudioFrame
virtual intonProcessPlayBackAudioFrame
virtual intonProcessRemoteUserAudioFrame
virtual intonProcessScreenAudioFrame

函数说明

onProcessRecordAudioFrame

virtual int bytertc::IAudioFrameProcessor::onProcessRecordAudioFrame(IAudioFrame &audio_frame)=0
cpp

回调本地采集的音频帧地址,供自定义音频处理。

传入参数

参数名类型说明
audio_frameIAudioFrame &音频帧地址,参看 IAudioFrame

注意

  • 完成自定义音频处理后,SDK 会对处理后的音频帧进行编码,并传输到远端。
  • 调用 enableAudioProcessor,并在参数中选择本地采集的音频时,每 10 ms 收到此回调。

onProcessPlayBackAudioFrame

virtual int bytertc::IAudioFrameProcessor::onProcessPlayBackAudioFrame(IAudioFrame &audio_frame)=0
cpp

回调远端音频混音的音频帧地址,供自定义音频处理。

传入参数

参数名类型说明
audio_frameIAudioFrame &音频帧地址,参看 IAudioFrame

注意

调用 enableAudioProcessor,并在参数中选择远端音频流的的混音音频时,每 10 ms 收到此回调。

onProcessRemoteUserAudioFrame

virtual int bytertc::IAudioFrameProcessor::onProcessRemoteUserAudioFrame(
    const RemoteStreamKey &stream_info,
    IAudioFrame &audio_frame
)=0
cpp

回调单个远端用户的音频帧地址,供自定义音频处理。

传入参数

参数名类型说明
stream_infoconst RemoteStreamKey &音频流信息,参看 RemoteStreamKey
audio_frameIAudioFrame &音频帧地址,参看 IAudioFrame

注意

调用 enableAudioProcessor,并在参数中选择各个远端音频流时,每 10 ms 收到此回调。

onProcessScreenAudioFrame

virtual int bytertc::IAudioFrameProcessor::onProcessScreenAudioFrame(IAudioFrame &audio_frame)=0
cpp

屏幕共享的音频帧地址回调。你可根据此回调自定义处理音频。

传入参数

参数名类型说明
audio_frameIAudioFrame &音频帧地址,参看 IAudioFrame

注意

调用 enableAudioProcessor,把返回给音频处理器的音频类型设置为屏幕共享音频后,每 10 ms 收到此回调。

IRTCVideoEventHandler
class bytertc::IRTCVideoEventHandler
cpp

音视频引擎事件回调接口

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual voidonWarning
virtual voidonError
virtual voidonDeadLockError
virtual voidonExtensionAccessError
virtual voidonAudioMixingPlayingProgress
virtual voidonLogReport
virtual voidonConnectionStateChanged
virtual voidonNetworkTypeChanged
virtual voidonSimulcastSubscribeFallback
virtual voidonPerformanceAlarms
virtual voidonAudioDeviceStateChanged
virtual voidonVideoDeviceStateChanged
virtual voidonAudioDeviceWarning
virtual voidonVideoDeviceWarning
virtual voidonSysStats
virtual voidonCreateRoomStateChanged
virtual voidonRecordingStateUpdate
virtual voidonRecordingProgressUpdate
virtual voidonAudioRecordingStateUpdate
virtual voidonLoginResult
virtual voidonLogout
virtual voidonServerParamsSetResult
virtual voidonGetPeerOnlineStatus
virtual voidonUserMessageReceivedOutsideRoom
virtual voidonUserBinaryMessageReceivedOutsideRoom
virtual voidonUserMessageSendResultOutsideRoom
virtual voidonServerMessageSendResult
virtual voidonSEIMessageReceived
virtual voidonSEIStreamUpdate
virtual voidonRemoteAudioPropertiesReport
virtual voidonLocalAudioPropertiesReport
virtual voidonAudioPlaybackDeviceTestVolume
virtual voidonAudioDeviceVolumeChanged
virtual voidonLocalAudioStateChanged
virtual voidonUserStartAudioCapture
virtual voidonUserStopAudioCapture
virtual voidonActiveSpeaker
virtual voidonStreamSyncInfoReceived
virtual voidonNetworkDetectionResult
virtual voidonNetworkDetectionStopped
virtual voidonPlayPublicStreamResult
virtual voidonPublicStreamSEIMessageReceived
virtual voidonPublicStreamDataMessageReceived
virtual voidonFirstPublicStreamVideoFrameDecoded
virtual voidonUserStartVideoCapture
virtual voidonUserStopVideoCapture
virtual voidonLocalVideoSizeChanged
virtual voidonRemoteVideoSizeChanged
virtual voidonFirstLocalVideoFrameCaptured
virtual voidonFirstRemoteAudioFrame
virtual voidonRemoteAudioStateChanged
virtual voidonLocalVideoStateChanged
virtual voidonRemoteVideoStateChanged
virtual voidonAudioFrameSendStateChanged
virtual voidonScreenAudioFrameSendStateChanged
virtual voidonVideoFrameSendStateChanged
virtual voidonFirstRemoteVideoFrameRendered
virtual voidonFirstRemoteVideoFrameDecoded
virtual voidonScreenVideoFrameSendStateChanged
virtual voidonAudioFramePlayStateChanged
virtual voidonScreenAudioFramePlayStateChanged
virtual voidonVideoFramePlayStateChanged
virtual voidonScreenVideoFramePlayStateChanged
virtual voidonFirstLocalAudioFrame
virtual voidonPushPublicStreamResult
virtual voidonFirstPublicStreamAudioFrame
virtual voidonCloudProxyConnected
virtual voidonLocalProxyStateChanged
virtual void[deprecated] onAudioMixingStateChanged
virtual void[deprecated] onMediaDeviceStateChanged
virtual void[deprecated] onMediaDeviceWarning
virtual void[deprecated] onHttpProxyState
virtual void[deprecated] onHttpsProxyState
virtual void[deprecated] onSocks5ProxyState
virtual void[deprecated] onUserMuteAudio
virtual void[deprecated] onUserMuteVideo

函数说明

onWarning

virtual void bytertc::IRTCVideoEventHandler::onWarning(int warn)
cpp

发生警告回调。

SDK 运行时出现了警告。SDK 通常会自动恢复,警告信息可以忽略。

你可能需要干预.

传入参数

参数名类型说明
warnint警告标识码,详见: WarningCode

onError

virtual void bytertc::IRTCVideoEventHandler::onError(int err)
cpp

发生错误回调。

SDK 运行时出现了网络或媒体相关的错误,且无法自动恢复时触发此回调。

传入参数

参数名类型说明
errint错误标识码,参看 ErrorCode

onDeadLockError

virtual void bytertc::IRTCVideoEventHandler::onDeadLockError(const DeadLockMsg &msg)
cpp

Available since 3.57

当内部线程发生 block 时,将收到此回调。

传入参数

参数名类型说明
msgconst DeadLockMsg &block 线程的线程名和 block 检测次数。参看 DeadLockMsg{#DeadLockMsg}。

onExtensionAccessError

virtual void bytertc::IRTCVideoEventHandler::onExtensionAccessError(
    const char* extension_name,
    const char* msg
)
cpp

Available since 3.52

当访问插件失败时,收到此回调。

RTC SDK 将一些功能封装成插件。当使用这些功能时,如果插件不存在,功能将无法使用。

传入参数

参数名类型说明
extension_nameconst char *插件名字
msgconst char *失败说明

onAudioMixingPlayingProgress

virtual void bytertc::IRTCVideoEventHandler::onAudioMixingPlayingProgress(
    int mix_id,
    int64_t progress
)
cpp

Deprecated since 3.54 and will be deleted in 3.60, use onMediaPlayerPlayingProgress instead.
混音音频文件播放进度回调

传入参数

参数名类型说明
mix_idint混音 ID
progressint64_t当前混音音频文件播放进度,单位毫秒

注意

调用 setAudioMixingProgressInterval 将时间间隔设为大于 0 的值后,或调用 startAudioMixingAudioMixingConfig 中的时间间隔设为大于 0 的值后,SDK 会按照设置的时间间隔回调该事件。

onLogReport

virtual void bytertc::IRTCVideoEventHandler::onLogReport(
    const char* log_type,
    const char* log_content
)
cpp

上报日志时回调该事件。

传入参数

参数名类型说明
log_typeconst char *
事件类型。目前类型固定为 "live_webrtc_monitor_log"。
log_contentconst char *
端监控日志内容。

onConnectionStateChanged

virtual void bytertc::IRTCVideoEventHandler::onConnectionStateChanged(bytertc::ConnectionState state)
cpp

SDK 与信令服务器连接状态改变回调。连接状态改变时触发。

传入参数

参数名类型说明
statebytertc::ConnectionState当前 SDK 与信令服务器的连接状态,详见 ConnectionState

注意

更多信息参见 连接状态提示

onNetworkTypeChanged

virtual void bytertc::IRTCVideoEventHandler::onNetworkTypeChanged(bytertc::NetworkType type)
cpp

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

传入参数

参数名类型说明
typebytertc::NetworkType
SDK 当前的网络连接类型,详见: NetworkType

onSimulcastSubscribeFallback

virtual void bytertc::IRTCVideoEventHandler::onSimulcastSubscribeFallback(const RemoteStreamSwitch &event)
cpp

音视频流因网络环境变化等原因发生回退,或从回退中恢复时,触发该回调。

传入参数

参数名类型说明
eventconst RemoteStreamSwitch &音视频流发生变化的信息。参看 RemoteStreamSwitch

onPerformanceAlarms

virtual void bytertc::IRTCVideoEventHandler::onPerformanceAlarms(
    bytertc::PerformanceAlarmMode mode,
    const char* room_id,
    bytertc::PerformanceAlarmReason reason,
    const bytertc::SourceWantedData &data
)
cpp

本地未通过 setPublishFallbackOption 开启发布性能回退,检测到设备性能不足时,收到此回调。

本地通过 setPublishFallbackOption 开启发布性能回退,因设备性能/网络原因,造成发布性能回退/恢复时,收到此回调。

传入参数

参数名类型说明
modebytertc::PerformanceAlarmMode指示本地是否开启发布回退功能。参看 PerformanceAlarmMode
  • 当发布端未开启发布性能回退时,mode 值为 kPerformanceAlarmModeNormal。
  • 当发布端开启发布性能回退时,mode 值为 kPerformanceAlarmModeSimulcast。
room_idconst char *
  • 未开启发布性能回退时,room_id 为空
  • 开启发布性能回退时,room_id 是告警影响的房间 ID。
reasonbytertc::PerformanceAlarmReason告警原因,参看 PerformanceAlarmReason
dataconst bytertc::SourceWantedData &性能回退相关数据,详见 SourceWantedData

onAudioDeviceStateChanged

virtual void bytertc::IRTCVideoEventHandler::onAudioDeviceStateChanged(
    const char* device_id,
    bytertc::RTCAudioDeviceType device_type,
    bytertc::MediaDeviceState device_state,
    bytertc::MediaDeviceError device_error
)
cpp

音频设备状态回调。提示音频采集、音频播放等设备设备的状态。

传入参数

参数名类型说明
device_idconst char *设备 ID。
device_typebytertc::RTCAudioDeviceType设备类型,详见 RTCAudioDeviceType
device_statebytertc::MediaDeviceState设备状态,详见 MediaDeviceState
device_errorbytertc::MediaDeviceError设备错误类型,详见 MediaDeviceError

onVideoDeviceStateChanged

virtual void bytertc::IRTCVideoEventHandler::onVideoDeviceStateChanged(
    const char* device_id,
    bytertc::RTCVideoDeviceType device_type,
    bytertc::MediaDeviceState device_state,
    bytertc::MediaDeviceError device_error
)
cpp

视频设备状态回调。提示摄像头视频采集、屏幕视频采集等设备的状态。

传入参数

参数名类型说明
device_idconst char *设备 ID。采集屏幕共享流时,设备 ID 为固定字符串 screen_capture_video
device_typebytertc::RTCVideoDeviceType设备类型,详见 RTCVideoDeviceType
device_statebytertc::MediaDeviceState设备状态,详见 MediaDeviceState
device_errorbytertc::MediaDeviceError设备错误类型,详见 MediaDeviceError

onAudioDeviceWarning

virtual void bytertc::IRTCVideoEventHandler::onAudioDeviceWarning(
    const char* device_id,
    bytertc::RTCAudioDeviceType device_type,
    bytertc::MediaDeviceWarning device_warning
)
cpp

音频设备警告回调。音频设备包括音频采集设备和音频渲染设备。

传入参数

参数名类型说明
device_idconst char *设备 ID
device_typebytertc::RTCAudioDeviceType详见 RTCAudioDeviceType
device_warningbytertc::MediaDeviceWarning详见 MediaDeviceWarning

onVideoDeviceWarning

virtual void bytertc::IRTCVideoEventHandler::onVideoDeviceWarning(
    const char* device_id,
    bytertc::RTCVideoDeviceType device_type,
    bytertc::MediaDeviceWarning device_warning
)
cpp

视频设备警告回调,包括视频采集设备等。

传入参数

参数名类型说明
device_idconst char *设备 ID
device_typebytertc::RTCVideoDeviceType详见 RTCVideoDeviceType
device_warningbytertc::MediaDeviceWarning详见 MediaDeviceWarning

onSysStats

virtual void bytertc::IRTCVideoEventHandler::onSysStats(const bytertc::SysStats &stats)
cpp

周期性(2s)发出回调,报告当前 CPU 与内存的相关信息。

传入参数

参数名类型说明
statsconst bytertc::SysStats &包含当前 CPU 与内存相关信息的结构体。详见 SysStats

onCreateRoomStateChanged

virtual void bytertc::IRTCVideoEventHandler::onCreateRoomStateChanged(
    const char* room_id,
    int error_code
)
cpp

创建房间失败回调。

传入参数

参数名类型说明
room_idconst char *房间 ID。
error_codeint创建房间错误码,具体原因参看 ErrorCode

onRecordingStateUpdate

virtual void bytertc::IRTCVideoEventHandler::onRecordingStateUpdate(
    StreamIndex type,
    RecordingState state,
    RecordingErrorCode error_code,
    RecordingInfo info
)
cpp

获取本地录制状态回调。

该回调由 startFileRecordingstopFileRecording 触发。

传入参数

参数名类型说明
typeStreamIndex录制流的流属性,参看 StreamIndex
stateRecordingState录制状态,参看 RecordingState
error_codeRecordingErrorCode录制错误码,参看 RecordingErrorCode
infoRecordingInfo录制文件的详细信息,参看 RecordingInfo

onRecordingProgressUpdate

virtual void bytertc::IRTCVideoEventHandler::onRecordingProgressUpdate(
    StreamIndex type,
    RecordingProgress process,
    RecordingInfo info
)
cpp

本地录制进度回调。

该回调由 startFileRecording 触发,录制状态正常时,系统每秒钟都会通过该回调提示录制进度。

传入参数

参数名类型说明
typeStreamIndex录制流的流属性,参看 StreamIndex
processRecordingProgress录制进度,参看 RecordingProgress
infoRecordingInfo录制文件的详细信息,参看 RecordingInfo

onAudioRecordingStateUpdate

virtual void bytertc::IRTCVideoEventHandler::onAudioRecordingStateUpdate(
    AudioRecordingState state,
    AudioRecordingErrorCode error_code
)
cpp

调用 startAudioRecordingstopAudioRecording 改变音频文件录制状态时,收到此回调。

传入参数

参数名类型说明
stateAudioRecordingState录制状态,参看 AudioRecordingState
error_codeAudioRecordingErrorCode录制错误码,参看 AudioRecordingErrorCode

onLoginResult

virtual void bytertc::IRTCVideoEventHandler::onLoginResult(
    const char* uid,
    int error_code,
    int elapsed
)
cpp

登录结果回调

传入参数

参数名类型说明
uidconst char *
登录用户 ID
error_codeint
登录结果
详见 LoginErrorCode
elapsedint
从调用 login 接口开始到返回结果所用时长
单位为 ms。

注意

调用 login 后,会收到此回调。

onLogout

virtual void bytertc::IRTCVideoEventHandler::onLogout(LogoutReason reason)
cpp

登出结果回调

传入参数

参数名类型说明
reasonLogoutReason用户登出的原因,参看 LogoutReason

注意

在以下两种情况下会收到此回调:调用 logout 接口主动退出;或其他用户以相同 UserId 进行 login 导致本地用户被动登出。

onServerParamsSetResult

virtual void bytertc::IRTCVideoEventHandler::onServerParamsSetResult(int error)
cpp

设置应用服务器参数的返回结果

传入参数

参数名类型说明
errorint
设置结果

注意

调用 setServerParams 后,会收到此回调。

onGetPeerOnlineStatus

virtual void bytertc::IRTCVideoEventHandler::onGetPeerOnlineStatus(
    const char* peer_user_id,
    int status
)
cpp

查询对端或本端用户登录状态的返回结果

传入参数

参数名类型说明
peer_user_idconst char *
需要查询的用户 ID
statusint
查询的用户登录状态
详见 UserOnlineStatus.

注意

必须先调用 getPeerOnlineStatus,才能收到此回调。

onUserMessageReceivedOutsideRoom

virtual void bytertc::IRTCVideoEventHandler::onUserMessageReceivedOutsideRoom(
    const char* uid,
    const char* message
)
cpp

收到房间外用户调用 sendUserMessageOutsideRoom 发来的文本消息时,会收到此回调

传入参数

参数名类型说明
uidconst char *
消息发送者 ID
messageconst char *
收到的文本消息内容

onUserBinaryMessageReceivedOutsideRoom

virtual void bytertc::IRTCVideoEventHandler::onUserBinaryMessageReceivedOutsideRoom(
    const char* uid,
    int size,
    const uint8_t* message
)
cpp

收到房间外用户调用 sendUserBinaryMessageOutsideRoom 发来的二进制消息时,会收到此回调

传入参数

参数名类型说明
uidconst char *
消息发送者 ID
sizeint
二进制消息长度
messageconst uint8_t *
收到的二进制消息内容

onUserMessageSendResultOutsideRoom

virtual void bytertc::IRTCVideoEventHandler::onUserMessageSendResultOutsideRoom(
    int64_t msgid,
    int error
)
cpp

给房间外指定的用户发送消息的回调

传入参数

参数名类型说明
msgidint64_t
本条消息的 ID
所有的 P2P 和 P2Server 消息共用一个 ID 序列。
errorint
消息发送结果
详见 UserMessageSendResult

注意

当调用 sendUserMessageOutsideRoomsendUserBinaryMessageOutsideRoom 发送消息后,会收到此回调。

onServerMessageSendResult

virtual void bytertc::IRTCVideoEventHandler::onServerMessageSendResult(
    int64_t msgid,
    int error,
    const bytertc::ServerACKMsg &msg
)
cpp

给应用服务器发送消息的回调。

传入参数

参数名类型说明
msgidint64_t本条消息的 ID。
所有的 P2P 和 P2Server 消息共用一个 ID 序列。
errorint消息发送结果,详见 UserMessageSendResult
msgconst bytertc::ServerACKMsg &应用服务器收到 HTTP 请求后,在 ACK 中返回的信息。消息不超过 64 KB。

注意

本回调为异步回调。当调用 sendServerMessagesendServerBinaryMessage 接口发送消息后,会收到此回调。

onSEIMessageReceived

virtual void bytertc::IRTCVideoEventHandler::onSEIMessageReceived(
    RemoteStreamKey stream_key,
    const uint8_t* message,
    int length
)
cpp

收到通过调用 sendSEIMessage 发送带有 SEI 消息的视频帧时,收到此回调。

传入参数

参数名类型说明
stream_keyRemoteStreamKey包含 SEI 发送者的用户名,所在的房间名和媒体流,参看 RemoteStreamKey
messageconst uint8_t *收到的 SEI 消息内容
lengthint收到的 SEI 消息长度

onSEIStreamUpdate

virtual void bytertc::IRTCVideoEventHandler::onSEIStreamUpdate(
    const RemoteStreamKey &key,
    SEIStreamEventType type
)
cpp

黑帧视频流发布状态回调。

在语音通话场景下,本地用户调用 sendSEIMessage 通过黑帧视频流发送 SEI 数据时,流的发送状态会通过该回调通知远端用户。

你可以通过此回调判断携带 SEI 数据的视频帧为黑帧,从而不对该视频帧进行渲染。

传入参数

参数名类型说明
keyconst RemoteStreamKey &远端流信息,参看 RemoteStreamKey
typeSEIStreamEventType黑帧视频流状态,参看 SEIStreamEventType

onRemoteAudioPropertiesReport

virtual void bytertc::IRTCVideoEventHandler::onRemoteAudioPropertiesReport(
    const RemoteAudioPropertiesInfo* audio_properties_infos,
    int audio_properties_info_number,
    int total_remote_volume
)
cpp

远端用户进房后,本地调用 enableAudioPropertiesReport,根据设置的 interval 值,本地会周期性地收到此回调,了解订阅的远端用户的瞬时音频信息。

远端用户的音频包括使用 RTC SDK 内部机制/自定义机制采集的麦克风音频和屏幕音频。

传入参数

参数名类型说明
audio_properties_infosconst RemoteAudioPropertiesInfo *远端音频信息,其中包含音频流属性、房间 ID、用户 ID ,详见 RemoteAudioPropertiesInfo
audio_properties_info_numberint数组长度
total_remote_volumeint订阅的所有远端流混音后的总音量,范围是 [0,255]。
  • [0,25] 接近无声;
  • [25,75] 为低音量;
  • [76,204] 为中音量;
  • [205,255] 为高音量。

onLocalAudioPropertiesReport

virtual void bytertc::IRTCVideoEventHandler::onLocalAudioPropertiesReport(
    const LocalAudioPropertiesInfo* audio_properties_infos,
    int audio_properties_info_number
)
cpp

调用 enableAudioPropertiesReport 后,根据设置的 interval 值,你会周期性地收到此回调,了解本地音频的相关信息。

本地音频包括使用 RTC SDK 内部机制采集的麦克风音频,屏幕音频和本地混音音频信息。

传入参数

参数名类型说明
audio_properties_infosconst LocalAudioPropertiesInfo *本地音频信息,详见 LocalAudioPropertiesInfo
audio_properties_info_numberint数组长度

onAudioPlaybackDeviceTestVolume

virtual void bytertc::IRTCVideoEventHandler::onAudioPlaybackDeviceTestVolume(int volume)
cpp

回调音频设备测试时的播放音量

传入参数

参数名类型说明
volumeint音频设备测试播放音量。取值范围:[0,255]

注意

调用 startAudioPlaybackDeviceTest 或 Windows SDK 中的 startAudioDeviceRecordTest,开始播放音频文件或录音时,将开启该回调。本回调为周期性回调,回调周期由上述接口的 interval 参数指定。

onAudioDeviceVolumeChanged

virtual void bytertc::IRTCVideoEventHandler::onAudioDeviceVolumeChanged(
    bytertc::RTCAudioDeviceType device_type,
    int volume,
    bool muted
)
cpp

音频设备音量改变回调。当通过系统设置,改变音频设备音量或静音状态时,触发本回调。本回调无需手动开启。

传入参数

参数名类型说明
device_typebytertc::RTCAudioDeviceType设备类型,包括麦克风和扬声器,参阅 RTCAudioDeviceType
volumeint音量值,[0, 255]。当 volume 变为 0 时,muted 会变为 True。注意:在 Windows 端,当麦克风 volume 变为 0 时,muted 值不变。
mutedbool是否禁音状态。扬声器被设置为禁音时,muted 为 True,但 volume 保持不变。

onLocalAudioStateChanged

virtual void bytertc::IRTCVideoEventHandler::onLocalAudioStateChanged(
    LocalAudioStreamState state,
    LocalAudioStreamError error
)
cpp

本地音频流的状态发生改变时,收到此回调。

传入参数

参数名类型说明
stateLocalAudioStreamState本地音频设备的状态,详见: LocalAudioStreamState
errorLocalAudioStreamError本地音频状态改变时的错误码,详见: LocalAudioStreamError

onUserStartAudioCapture

virtual void bytertc::IRTCVideoEventHandler::onUserStartAudioCapture(
    const char* room_id,
    const char* user_id
)
cpp

房间内的用户调用 startAudioCapture 开启音频采集时,房间内其他用户会收到此回调。

传入参数

参数名类型说明
room_idconst char *开启音频采集的远端用户所在的房间 ID
user_idconst char *开启音频采集的远端用户 ID

onUserStopAudioCapture

virtual void bytertc::IRTCVideoEventHandler::onUserStopAudioCapture(
    const char* room_id,
    const char* user_id
)
cpp

房间内的用户调用 stopAudioCapture 关闭音频采集时,房间内其他用户会收到此回调。

传入参数

参数名类型说明
room_idconst char *关闭音频采集的远端用户所在的房间 ID
user_idconst char *关闭音频采集的远端用户 ID

onActiveSpeaker

virtual void bytertc::IRTCVideoEventHandler::onActiveSpeaker(
    const char* room_id,
    const char* uid
)
cpp

调用 enableAudioPropertiesReport 后,根据设置的 config.interval,你会周期性地收到此回调,获取房间内的最活跃用户信息。

传入参数

参数名类型说明
room_idconst char *房间 ID
uidconst char *最活跃用户(ActiveSpeaker)的用户 ID

onStreamSyncInfoReceived

virtual void bytertc::IRTCVideoEventHandler::onStreamSyncInfoReceived(
    RemoteStreamKey stream_key,
    SyncInfoStreamType stream_type,
    const uint8_t* data,
    int32_t length
)
cpp

音频流同步信息回调。可以通过此回调,在远端用户调用 sendStreamSyncInfo 发送音频流同步消息后,收到远端发送的音频流同步信息。

传入参数

参数名类型说明
stream_keyRemoteStreamKey远端流信息,详见 RemoteStreamKey
stream_typeSyncInfoStreamType媒体流类型,详见 SyncInfoStreamType
dataconst uint8_t *消息内容。
lengthint32_t消息长度。

onNetworkDetectionResult

virtual void bytertc::IRTCVideoEventHandler::onNetworkDetectionResult(
    NetworkDetectionLinkType type,
    NetworkQuality quality,
    int rtt,
    double lost_rate,
    int bitrate,
    int jitter
)
cpp

通话前网络探测结果。

成功调用 startNetworkDetection 接口开始探测后,将在 3 秒内收到首次网络探测回调。上行和下行网络,将分别通过不同回调通知,每个回调的周期为 2 秒。

传入参数

参数名类型说明
typeNetworkDetectionLinkType探测网络类型为上行/下行
qualityNetworkQuality探测网络的质量,参看 NetworkQuality
rttint探测网络的 RTT,单位:ms
lost_ratedouble探测网络的丢包率
bitrateint探测网络的带宽,单位:kbps
jitterint探测网络的抖动,单位:ms

onNetworkDetectionStopped

virtual void bytertc::IRTCVideoEventHandler::onNetworkDetectionStopped(NetworkDetectionStopReason reason)
cpp

通话前网络探测结束

以下情况将停止探测并收到本一次本回调:

  1. 当调用 stopNetworkDetection 接口停止探测后,会收到一次该回调;

  2. 当收到远端/本端音频首帧后,停止探测;

  3. 当探测超过 3 分钟后,停止探测;

  4. 当探测链路断开一定时间之后,停止探测。

传入参数

参数名类型说明
reasonNetworkDetectionStopReason
停止探测的原因类型,参考 NetworkDetectionStopReason

onPlayPublicStreamResult

virtual void bytertc::IRTCVideoEventHandler::onPlayPublicStreamResult(
    const char* public_stream_id,
    PublicStreamErrorCode error_code
)
cpp

订阅公共流的结果回调

通过 startPlayPublicStream 订阅公共流后,可以通过本回调获取订阅结果。

传入参数

参数名类型说明
public_stream_idconst char *公共流的 ID
error_codePublicStreamErrorCode公共流订阅结果状态码。详见 PublicStreamErrorCode

onPublicStreamSEIMessageReceived

virtual void bytertc::IRTCVideoEventHandler::onPublicStreamSEIMessageReceived(
    const char* public_stream_id,
    const uint8_t* message,
    int message_length,
    DataMessageSourceType source_type
)
cpp

回调公共流中包含的 SEI 信息。

调用 startPlayPublicStream 接口启动拉公共流功能后,通过此回调收到公共流中的 SEI 消息。

传入参数

参数名类型说明
public_stream_idconst char *公共流 ID。
messageconst uint8_t *收到的 SEI 消息内容。
通过调用客户端 sendSEIMessage 插入的 SEI 信息。
当公共流中的多路视频流均包含有 SEI 信息:SEI 不互相冲突时,将通过多次回调分别发送;SEI 在同一帧有冲突时,则只有一条流中的 SEI 信息被透传并融合到公共流中。
message_lengthintSEI 信息的长度。
source_typeDataMessageSourceTypeSEI 消息类型,自 3.52.1 版本后固定为 0,自定义消息。参看 DataMessageSourceType

注意

通过 Open API 插入的自定义信息,应通过回调 onPublicStreamDataMessageReceived 获取。

onPublicStreamDataMessageReceived

virtual void bytertc::IRTCVideoEventHandler::onPublicStreamDataMessageReceived(
    const char* public_stream_id,
    const uint8_t* message,
    int message_length,
    DataMessageSourceType source_type
)
cpp

Available since 3.52

回调公共流中包含的数据信息。

通过 startPlayPublicStream 订阅公共流后,通过监听本回调获取公共流中的数据消息,包括调用 Open API 发送的 SEI 消息和音量回调。

传入参数

参数名类型说明
public_stream_idconst char *公共流 ID
messageconst uint8_t *收到的数据消息内容,如下:
  • 调用公共流 OpenAPI 发送的自定义消息。
  • 媒体流音量变化,需要通过公共流 OpenAPI 开启回调。JSON 格式说明如下: {
    "Type":"VolumeIndication", //具体业务类型
    "VolumeInfos"[// 业务类型对应信息
    {
    "RoomId":"1000001", // 房间 ID
    "UserId":"1000001", // 用户 ID
    "StreamType":0, // 0:摄像头流;1:屏幕流
    "LinearVolume":1 // 线性音量大小
    }
    ]
    }
message_lengthint消息的长度
source_typeDataMessageSourceType数据消息来源,参看 DataMessageSourceType

注意

通过调用客户端 API 插入的 SEI 信息,应通过回调 onPublicStreamSEIMessageReceived 获取。

onFirstPublicStreamVideoFrameDecoded

virtual void bytertc::IRTCVideoEventHandler::onFirstPublicStreamVideoFrameDecoded(
    const char* public_stream_id,
    const VideoFrameInfo &info
)
cpp

公共流的首帧视频解码成功

关于订阅公共流,详见 startPlayPublicStream

传入参数

参数名类型说明
public_stream_idconst char *公共流 ID
infoconst VideoFrameInfo &视频帧信息。详见 VideoFrameInfo

onUserStartVideoCapture

virtual void bytertc::IRTCVideoEventHandler::onUserStartVideoCapture(
    const char* room_id,
    const char* user_id
)
cpp

房间内的可见用户调用 startVideoCapture 开启内部视频采集时,房间内其他用户会收到此回调。

传入参数

参数名类型说明
room_idconst char *开启视频采集的远端用户所在的房间 ID
user_idconst char *开启视频采集的远端用户 ID

onUserStopVideoCapture

virtual void bytertc::IRTCVideoEventHandler::onUserStopVideoCapture(
    const char* room_id,
    const char* user_id
)
cpp

房间内的可见用户调用 stopVideoCapture 关闭内部视频采集时,房间内其他用户会收到此回调。

若发布视频数据前未开启采集,房间内所有可见用户会收到此回调。

传入参数

参数名类型说明
room_idconst char *ID of the room where the remote video stream stops being published.
user_idconst char *关闭视频采集的远端用户 ID

onLocalVideoSizeChanged

virtual void bytertc::IRTCVideoEventHandler::onLocalVideoSizeChanged(
    StreamIndex index,
    const VideoFrameInfo &info
)
cpp

本地视频大小或旋转信息发生改变时,收到此回调。

传入参数

参数名类型说明
indexStreamIndex流属性。参看 StreamIndex
infoconst VideoFrameInfo &视频帧信息。参看 VideoFrameInfo

onRemoteVideoSizeChanged

virtual void bytertc::IRTCVideoEventHandler::onRemoteVideoSizeChanged(
    RemoteStreamKey key,
    const VideoFrameInfo &info
)
cpp

远端视频大小或旋转信息发生改变时,房间内订阅此视频流的用户会收到此回调。

传入参数

参数名类型说明
keyRemoteStreamKey远端流信息。参看 RemoteStreamKey
infoconst VideoFrameInfo &视频帧信息。参看 VideoFrameInfo

onFirstLocalVideoFrameCaptured

virtual void bytertc::IRTCVideoEventHandler::onFirstLocalVideoFrameCaptured(
    StreamIndex index,
    VideoFrameInfo info
)
cpp

RTC SDK 在本地完成第一帧视频帧或屏幕视频帧采集时,收到此回调。

传入参数

参数名类型说明
indexStreamIndex流属性。参看 StreamIndex
infoVideoFrameInfo视频信息。参看 VideoFrameInfo

注意

对于采集到的本地视频帧,你可以调用 setLocalVideoCanvassetLocalVideoSink 在本地渲染。

onFirstRemoteAudioFrame

virtual void bytertc::IRTCVideoEventHandler::onFirstRemoteAudioFrame(const RemoteStreamKey &key)
cpp

接收到来自远端某音频流的第一帧时,收到该回调。

传入参数

参数名类型说明
keyconst RemoteStreamKey &远端音频流信息, 详见 RemoteStreamKey

注意

用户刚收到房间内每一路音频流时,都会收到该回调。

onRemoteAudioStateChanged

virtual void bytertc::IRTCVideoEventHandler::onRemoteAudioStateChanged(
    const RemoteStreamKey &key,
    RemoteAudioState state,
    RemoteAudioStateChangeReason reason
)
cpp

用户订阅来自远端的音频流状态发生改变时,会收到此回调,了解当前的远端音频流状态。

传入参数

参数名类型说明
keyconst RemoteStreamKey &远端流信息, 参看 RemoteStreamKey
stateRemoteAudioState远端音频流状态,参看 RemoteAudioState
reasonRemoteAudioStateChangeReason远端音频流状态改变的原因,参看 RemoteAudioStateChangeReason

onLocalVideoStateChanged

virtual void bytertc::IRTCVideoEventHandler::onLocalVideoStateChanged(
    StreamIndex index,
    LocalVideoStreamState state,
    LocalVideoStreamError error
)
cpp

本地视频流的状态发生改变时,收到该事件。

传入参数

参数名类型说明
indexStreamIndex音/视频属性,参看 StreamIndex
stateLocalVideoStreamState本地视频流状态,参看 LocalVideoStreamState
errorLocalVideoStreamError本地视频状态改变时的错误码,参看 LocalVideoStreamError

onRemoteVideoStateChanged

virtual void bytertc::IRTCVideoEventHandler::onRemoteVideoStateChanged(
    RemoteStreamKey key,
    RemoteVideoState state,
    RemoteVideoStateChangeReason reason
)
cpp

远端视频流的状态发生改变时,房间内订阅此流的用户会收到该事件。

传入参数

参数名类型说明
keyRemoteStreamKey远端视频流的信息,房间、用户 ID、流属性等。参看 RemoteStreamKey
stateRemoteVideoState远端视频流状态,参看 RemoteVideoState
reasonRemoteVideoStateChangeReason远端视频流状态改变的原因,参看 RemoteVideoStateChangeReason

注意

本回调仅适用于主流,不适用于屏幕流。

onAudioFrameSendStateChanged

virtual void bytertc::IRTCVideoEventHandler::onAudioFrameSendStateChanged(
    const char* room_id,
    const RtcUser &user,
    FirstFrameSendState state
)
cpp

本地音频首帧发送状态发生改变时,收到此回调。

传入参数

参数名类型说明
room_idconst char *音频发布用户所在的房间 ID
userconst RtcUser &本地用户信息,详见 RtcUser
stateFirstFrameSendState首帧发送状态,详见 FirstFrameSendState

onScreenAudioFrameSendStateChanged

virtual void bytertc::IRTCVideoEventHandler::onScreenAudioFrameSendStateChanged(
    const char* room_id,
    const RtcUser &user,
    FirstFrameSendState state
)
cpp

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

传入参数

参数名类型说明
room_idconst char *音频发布用户所在的房间 ID
userconst RtcUser &本地用户信息,详见 RtcUser
stateFirstFrameSendState首帧发送状态,详见 FirstFrameSendState

onVideoFrameSendStateChanged

virtual void bytertc::IRTCVideoEventHandler::onVideoFrameSendStateChanged(
    const char* room_id,
    const RtcUser &user,
    FirstFrameSendState state
)
cpp

本地视频首帧发送状态发生改变时,收到此回调。

传入参数

参数名类型说明
room_idconst char *视频发布用户所在的房间 ID
userconst RtcUser &本地用户信息,详见 RtcUser
stateFirstFrameSendState首帧发送状态,详见 FirstFrameSendState

onFirstRemoteVideoFrameRendered

virtual void bytertc::IRTCVideoEventHandler::onFirstRemoteVideoFrameRendered(
    const RemoteStreamKey key,
    const VideoFrameInfo &info
)
cpp

SDK 内部渲染成功远端视频流首帧后,收到此回调。

传入参数

参数名类型说明
keyconst RemoteStreamKey远端流信息。参看 RemoteStreamKey
infoconst VideoFrameInfo &视频帧信息。参看 VideoFrameInfo

onFirstRemoteVideoFrameDecoded

virtual void bytertc::IRTCVideoEventHandler::onFirstRemoteVideoFrameDecoded(
    const RemoteStreamKey key,
    const VideoFrameInfo &info
)
cpp

SDK 接收并解码远端视频流首帧后,收到此回调。

传入参数

参数名类型说明
keyconst RemoteStreamKey远端流信息。参看 RemoteStreamKey
infoconst VideoFrameInfo &视频帧信息。参看 VideoFrameInfo

注意

  • 对于主流,进入房间后,仅在发布端第一次发布的时候,订阅端会收到该回调,此后不受重新发布的影响,只要不重新加入房间,就不会再收到该回调。
  • 对于屏幕流,用户每次重新发布屏幕视频流在订阅端都会重新触发一次该回调。

onScreenVideoFrameSendStateChanged

virtual void bytertc::IRTCVideoEventHandler::onScreenVideoFrameSendStateChanged(
    const char* room_id,
    const RtcUser &user,
    FirstFrameSendState state
)
cpp

屏幕共享流的视频首帧发送状态发生改变时,收到此回调。

传入参数

参数名类型说明
room_idconst char *流的发布房间的 ID
userconst RtcUser &本地用户信息,详见 RtcUser
stateFirstFrameSendState首帧发送状态,详见 FirstFrameSendState

onAudioFramePlayStateChanged

virtual void bytertc::IRTCVideoEventHandler::onAudioFramePlayStateChanged(
    const char* room_id,
    const RtcUser &user,
    FirstFramePlayState state
)
cpp

音频首帧播放状态发生改变时,收到此回调。

传入参数

参数名类型说明
room_idconst char *首帧播放状态发生改变的流所在的房间 ID
userconst RtcUser &远端用户信息,详见 RtcUser
stateFirstFramePlayState首帧播放状态,详见 FirstFramePlayState

onScreenAudioFramePlayStateChanged

virtual void bytertc::IRTCVideoEventHandler::onScreenAudioFramePlayStateChanged(
    const char* room_id,
    const RtcUser &user,
    FirstFramePlayState state
)
cpp

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

传入参数

参数名类型说明
room_idconst char *首帧播放状态发生改变的流所在的房间 ID
userconst RtcUser &远端用户信息,详见 RtcUser
stateFirstFramePlayState首帧播放状态,详见 FirstFramePlayState

onVideoFramePlayStateChanged

virtual void bytertc::IRTCVideoEventHandler::onVideoFramePlayStateChanged(
    const char* room_id,
    const RtcUser &user,
    FirstFramePlayState state
)
cpp

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

传入参数

参数名类型说明
room_idconst char *首帧播放状态发生改变的流所在的房间 ID
userconst RtcUser &远端用户信息,详见 RtcUser
stateFirstFramePlayState首帧播放状态,详见 FirstFramePlayState

onScreenVideoFramePlayStateChanged

virtual void bytertc::IRTCVideoEventHandler::onScreenVideoFramePlayStateChanged(
    const char* room_id,
    const RtcUser &user,
    FirstFramePlayState state
)
cpp

屏幕共享流视频首帧播放状态发生改变时,收到此回调。

传入参数

参数名类型说明
room_idconst char *首帧播放状态发生改变的流所在的房间 ID
userconst RtcUser &远端用户信息,详见 RtcUser
stateFirstFramePlayState首帧播放状态,详见 FirstFramePlayState

onFirstLocalAudioFrame

virtual void bytertc::IRTCVideoEventHandler::onFirstLocalAudioFrame(StreamIndex index)
cpp

发布音频流时,采集到第一帧音频帧,收到该回调。

传入参数

参数名类型说明
indexStreamIndex音频流属性, 参看 StreamIndex

注意

如果发布音频流时,未开启本地音频采集,SDK 会推送静音帧,也会收到此回调。

onPushPublicStreamResult

virtual void bytertc::IRTCVideoEventHandler::onPushPublicStreamResult(
    const char* room_id,
    const char* public_streamid,
    PublicStreamErrorCode error_code
)
cpp

公共流发布结果回调。

调用 startPushPublicStream 接口发布公共流后,启动结果通过此回调方法通知用户。

传入参数

参数名类型说明
room_idconst char *公共流的发布房间的 ID
public_streamidconst char *公共流 ID
error_codePublicStreamErrorCode公共流发布结果状态码。详见 PublicStreamErrorCode

onFirstPublicStreamAudioFrame

virtual void bytertc::IRTCVideoEventHandler::onFirstPublicStreamAudioFrame(const char* public_stream_id)
cpp

公共流的音频首帧解码成功

关于订阅公共流,详见 startPlayPublicStream

传入参数

参数名类型说明
public_stream_idconst char *公共流 ID

onCloudProxyConnected

virtual void bytertc::IRTCVideoEventHandler::onCloudProxyConnected(int interval)
cpp

调用 startCloudProxy 开启云代理,SDK 首次成功连接云代理服务器时,回调此事件。

传入参数

参数名类型说明
intervalint从开启云代理到连接成功经过的时间,单位为 ms

onLocalProxyStateChanged

virtual void bytertc::IRTCVideoEventHandler::onLocalProxyStateChanged(
    LocalProxyType local_proxy_type,
    LocalProxyState local_proxy_state,
    LocalProxyError local_proxy_error
)
cpp

本地代理状态发生改变回调。调用 setLocalProxy 设置本地代理后,SDK 会触发此回调,返回代理连接的状态。

传入参数

参数名类型说明
local_proxy_typeLocalProxyType本地代理类型。参看 LocalProxyType
local_proxy_stateLocalProxyState本地代理状态。参看 LocalProxyState
local_proxy_errorLocalProxyError本地代理错误。参看 LocalProxyError

onAudioMixingStateChanged

virtual void bytertc::IRTCVideoEventHandler::onAudioMixingStateChanged(
    int mix_id,
    bytertc::AudioMixingState state,
    bytertc::AudioMixingError error
)
cpp

Deprecated since 353. Use IMediaPlayerEventHandler and IAudioEffectPlayerEventHandler instead.

音频混音文件播放状态改变时回调

传入参数

参数名类型说明
mix_idint混音 ID
使用 IAudioMixingManager 相关接口时传入的唯一 ID。
statebytertc::AudioMixingState
混音状态
其混音状态可参考: AudioMixingState
errorbytertc::AudioMixingError
错误码
详见 AudioMixingError

注意

此回调会被触发的时机汇总如下:

    1. 音乐文件类型:
  • 当调用 startAudioMixing 方法成功后,会触发 state 值为 kAudioMixingStatePlaying 回调;否则触发 state 值为 kAudioMixingStateFailed 的回调。
  • 当使用相同的 ID 重复调用 startAudioMixing 后,后一次会覆盖前一次,且本回调会以 kAudioMixingStateStopped 通知前一次混音已停止。
  • 当调用 pauseAudioMixing 方法暂停播放成功后,会触发 state 值为 kAudioMixingStatePaused 回调;否则触发 state 值为 kAudioMixingStateFailed 的回调。
  • 当调用 resumeAudioMixing 方法恢复播放成功后,会触发 state 值为 kAudioMixingStatePlaying 回调;否则触发 state 值为 kAudioMixingStateFailed 的回调。
  • 当调用 stopAudioMixing 方法暂停止播放成功后,会触发 state 值为 kAudioMixingStateStopped 回调;否则触发 state 值为 kAudioMixingStateFailed 的回调。
  • 播放结束会触发 state 值为 kAudioMixingStateFinished 回调。
    1. PCM 流类型:
  • 当调用 enableAudioMixingFrame 方法成功后,会触发 state 值为 kAudioMixingStatePCMEnabled 回调;否则触发 state 值为 kAudioMixingStateFailed 的回调。(Linux 不支持)
  • 当调用 disableAudioMixingFrame 方法成功后,会触发 state 值为 kAudioMixingStatePCMDisabled 回调;否则触发 state 值为 kAudioMixingStateFailed 的回调。

onMediaDeviceStateChanged

virtual void bytertc::IRTCVideoEventHandler::onMediaDeviceStateChanged(
    const char* device_id,
    bytertc::MediaDeviceType device_type,
    bytertc::MediaDeviceState device_state,
    bytertc::MediaDeviceError device_error
)
cpp

Deprecated since 3.37 and will be deleted in 3.51, use onAudioDeviceStateChanged and onVideoDeviceStateChanged instead.

媒体设备状态回调。提示音频采集、音频播放、摄像头视频采集、屏幕视频采集四种媒体设备的状态。

传入参数

参数名类型说明
device_idconst char *设备 ID
采集屏幕视频流时,设备 ID 为固定字符串 screen_capture_video
device_typebytertc::MediaDeviceType设备类型,详见 MediaDeviceType
device_statebytertc::MediaDeviceState设备状态,详见 MediaDeviceState
device_errorbytertc::MediaDeviceError设备错误类型,详见 MediaDeviceError

onMediaDeviceWarning

virtual void bytertc::IRTCVideoEventHandler::onMediaDeviceWarning(
    const char* device_id,
    bytertc::MediaDeviceType device_type,
    bytertc::MediaDeviceWarning device_warning
)
cpp

Deprecated since 3.37 and will be deleted in 3.51, use onAudioDeviceWarning and onVideoDeviceWarning instead.

媒体设备警告回调。媒体设备包括:音频采集设备、音频渲染设备、和视频采集设备。

传入参数

参数名类型说明
device_idconst char *设备 ID
device_typebytertc::MediaDeviceType详见 MediaDeviceType
device_warningbytertc::MediaDeviceWarning详见 MediaDeviceWarning

onHttpProxyState

virtual void bytertc::IRTCVideoEventHandler::onHttpProxyState(int state)
cpp

Deprecated since 3.52, will be deleted at 3.57, use onLocalProxyStateChanged instead

HTTP 代理连接状态改变时,收到该回调。

传入参数

参数名类型说明
stateint当前 HTTP 代理连接状态,详见 HttpProxyState

onHttpsProxyState

virtual void bytertc::IRTCVideoEventHandler::onHttpsProxyState(int state)
cpp

Deprecated since 3.52, will be deleted at 3.57, use onLocalProxyStateChanged instead

HTTPS 代理连接状态改变时,收到该回调。

传入参数

参数名类型说明
stateint当前 HTTPS 代理连接状态,详见 HttpProxyState

onSocks5ProxyState

virtual void bytertc::IRTCVideoEventHandler::onSocks5ProxyState(
    int state,
    const char* cmd,
    const char* proxy_address,
    const char* local_address,
    const char* remote_address
)
cpp

Deprecated since 3.52, will be deleted at 3.57, use onLocalProxyStateChanged instead

SOCKS5 代理状态改变时,收到该回调。

传入参数

参数名类型说明
stateintSOCKS5 代理连接状态
cmdconst char *代理连接的每一步操作命令
proxy_addressconst char *代理地址信息
local_addressconst char *当前连接使用的本地地址
remote_addressconst char *远端的连接地址

onUserMuteAudio

virtual void bytertc::IRTCVideoEventHandler::onUserMuteAudio(
    const char* room_id,
    const char* user_id,
    MuteState mute_state
)
cpp

Deprecated since 3.36 and will be deleted in 3.51, use onUserPublishStream, onUserPublishScreen, onUserUnpublishStream and onUserUnpublishScreen instead.

房间内用户暂停/恢复发送音频流时,房间内其他用户会收到此回调。

传入参数

参数名类型说明
room_idconst char *房间 ID。
user_idconst char *改变本地音频发送状态的用户 ID
mute_stateMuteState发送状态,参看 MuteState

onUserMuteVideo

virtual void bytertc::IRTCVideoEventHandler::onUserMuteVideo(
    const char* room_id,
    const char* uid,
    MuteState mute
)
cpp

Deprecated since 3.36 and will be deleted in 3.51, use onUserPublishStream, onUserPublishScreen, onUserUnpublishStream and onUserUnpublishScreen instead.

房间内用户暂停/恢复发送视频流时,房间内其他用户会收到此回调。

传入参数

参数名类型说明
room_idconst char *房间 ID
uidconst char *暂停/恢复发送视频流的用户 ID。
muteMuteState视频流的发送状态。参看 MuteState

ILocalEncodedVideoFrameObserver
class bytertc::ILocalEncodedVideoFrameObserver
cpp

本地视频帧监测器

注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数

返回名称
virtual voidonLocalEncodedVideoFrame

函数说明

onLocalEncodedVideoFrame

virtual void bytertc::ILocalEncodedVideoFrameObserver::onLocalEncodedVideoFrame(
    StreamIndex type,
    const IEncodedVideoFrame &video_stream
)=0
cpp

调用 registerLocalEncodedVideoFrameObserver 后,SDK 每次使用内部采集,采集到一帧视频帧,或收到一帧外部视频帧时,都会回调该事件。

传入参数

参数名类型说明
typeStreamIndex本地视频帧类型,参看 StreamIndex
video_streamconst IEncodedVideoFrame &本地视频帧信息,参看 IEncodedVideoFrame