You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
Linux 3.60.107
回调
复制全文
下载 pdf
回调

IRemoteEncodedVideoFrameObserver
class bytertc::IRemoteEncodedVideoFrameObserver

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

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

成员函数

返回名称
virtual voidonRemoteEncodedVideoFrame

函数说明

onRemoteEncodedVideoFrame

virtual void onRemoteEncodedVideoFrame(
    const char* stream_id,
    const StreamInfo& stream_info,
    const IEncodedVideoFrame& video_stream
) = 0;

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

传入参数

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

IAudioEffectPlayerEventHandler
class bytertc::IAudioEffectPlayerEventHandler

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

成员函数

返回名称
virtual~IAudioEffectPlayerEventHandler
virtual voidonAudioEffectPlayerStateChanged

函数说明

~IAudioEffectPlayerEventHandler

virtual ~IAudioEffectPlayerEventHandler() {}

onAudioEffectPlayerStateChanged

virtual void onAudioEffectPlayerStateChanged(
    int effect_id,
    PlayerState state,
    PlayerError error
) = 0;

播放状态改变时回调。

传入参数

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

IEncryptHandler
class bytertc::IEncryptHandler

加密/解密处理函数

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

成员函数

返回名称
virtual unsigned intonEncryptData
virtual unsigned intonDecryptData

函数说明

onEncryptData

virtual unsigned int onEncryptData(
            const unsigned char* data, unsigned int length, unsigned char* buf, unsigned int buf_len) = 0;

自定义加密。

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

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

传入参数

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

返回值

加密后的数据

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

注意

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

onDecryptData

virtual unsigned int onDecryptData(
            const unsigned char* data, unsigned int length, unsigned char* buf, unsigned int buf_len) = 0;

自定义解密。

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

传入参数

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

返回值

加密后的数据

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

注意

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

RTS房间事件回调接口

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

成员函数

返回名称
virtual voidonVideoPublishStateChanged
virtual voidonAudioPublishStateChanged
virtual voidonVideoSubscribeStateChanged
virtual voidonAudioSubscribeStateChanged
virtual voidonTokenWillExpire
virtual voidonPublishPrivilegeTokenWillExpire
virtual voidonSubscribePrivilegeTokenWillExpire
virtual voidonRoomStats
virtual voidonRemoteStreamStats
virtual voidonUserJoined
virtual voidonUserPublishStreamVideo
virtual voidonUserPublishStreamAudio
virtual voidonVideoStreamBanned
virtual voidonAVSyncStateChange
virtual voidonAudioStreamBanned
virtual voidonForwardStreamStateChanged
virtual voidonForwardStreamEvent
virtual voidonNetworkQuality
virtual voidonSetRoomExtraInfoResult
virtual voidonRoomExtraInfoUpdate
virtual voidonRoomStreamExtraInfoUpdate
virtual voidonUserVisibilityChanged
virtual voidonSubtitleStateChanged
virtual voidonSubtitleMessageReceived
virtual voidonAVSyncEvent

函数说明

onVideoPublishStateChanged

virtual void onVideoPublishStateChanged(
            const char* stream_id, const StreamInfo& stream_info, PublishState state, PublishStateChangeReason reason) {
        (void)stream_id;
        (void)stream_info;
        (void)state;
        (void)reason;
    }

Available since 3.60. 自版本 3.60 起,该回调取代 onStreamStateChanged 回调,用于报告视频发布状态改变。如果您已升级 SDK 至版本 3.60 或以上,仍在使用 onStreamStateChanged 回调,请迁移至该回调。

视频发布状态改变回调。

传入参数

参数名类型说明
stream_idconst char*流 ID。
stream_infoconst StreamInfo&流信息。
statePublishState发布状态码,参看 PublishState。
reasonPublishStateChangeReason本地视频流发布状态改变的具体原因,参看 PublishStateChangeReason。

注意

除了本地视频流发布状态改变时触发,本端用户进房时也会收到本回调。

onAudioPublishStateChanged

virtual void onAudioPublishStateChanged(
            const char* stream_id, const StreamInfo& stream_info, PublishState state, PublishStateChangeReason reason) {
        (void)stream_id;
        (void)stream_info;
        (void)state;
        (void)reason;
    }

Available since 3.60.

音频发布状态改变回调。

传入参数

参数名类型说明
stream_idconst char*流 ID。
stream_infoconst StreamInfo&流信息。
statePublishState发布状态码,参看 PublishState。
reasonPublishStateChangeReason本地音频流发布状态改变的具体原因,参看 PublishStateChangeReason。

注意

除了状态改变时触发,本端用户进房时也会收到本回调。

onVideoSubscribeStateChanged

virtual void onVideoSubscribeStateChanged(
            const char* stream_id, const StreamInfo& stream_info, SubscribeState state, SubscribeStateChangeReason reason) {
        (void)stream_id;
        (void)stream_info;
        (void)state;
        (void)reason;
    }

Available since 3.60. 自版本 3.60 起,该回调替换了 onStreamStateChanged 和 onStreamSubscribed 方法,用于报告视频流订阅状态的改变。如果您已升级到 SDK 版本 3.60 或以上,仍在使用这两个方法,请迁移到该回调。

视频订阅状态发生改变回调。

传入参数

参数名类型说明
stream_idconst char*流 ID。
stream_infoconst StreamInfo&流信息。
stateSubscribeState订阅状态码,参看 SubscribeState。
reasonSubscribeStateChangeReason视频流订阅状态改变的具体原因,参看 SubscribeStateChangeReason。

注意

当调用 subscribeStreamVideo 后会收到该通知。

onAudioSubscribeStateChanged

virtual void onAudioSubscribeStateChanged(
            const char* stream_id, const StreamInfo& stream_info, SubscribeState state, SubscribeStateChangeReason reason) {
        (void)stream_id;
        (void)stream_info;
        (void)state;
        (void)reason;
    }

Available since 3.60.

音频订阅状态发生改变回调。

传入参数

参数名类型说明
stream_idconst char*流 ID。
stream_infoconst StreamInfo&流信息。
stateSubscribeState订阅状态码,参看 SubscribeState。
reasonSubscribeStateChangeReason音频订阅状态改变的具体原因,参看 SubscribeStateChangeReason。

注意

当调用 subscribeStreamAudio 后会收到该通知。

onTokenWillExpire

virtual void onTokenWillExpire() {

当 SDK 检测到 Token 的进房权限将在 30 秒内过期时,触发该回调。
收到该回调后,你需调用 updateToken 更新 Token 进房权限。

注意

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

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

onPublishPrivilegeTokenWillExpire

virtual void onPublishPrivilegeTokenWillExpire() {

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

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

注意

Token 发布权限过期后:

onSubscribePrivilegeTokenWillExpire

virtual void onSubscribePrivilegeTokenWillExpire() {

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

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

注意

若收到该回调后未及时更新 Token,Token 订阅权限过期后,尝试新订阅流会失败,已订阅的流会取消订阅,并且会收到 onVideoSubscribeStateChanged、onAudioSubscribeStateChanged 回调,提示kSubscribeStateChangeReasonNoSubscribePermission,没有订阅权限。

onRoomStats

virtual void onRoomStats(const RtcRoomStats& stats) {
        (void)stats;
    }

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

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

传入参数

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

onRemoteStreamStats

virtual void onRemoteStreamStats(const char* stream_id, const bytertc::StreamInfo& stream_info, const RemoteStreamStats& stats) {
        (void)stream_id;
        (void)stream_info;
        (void)stats;
    }

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

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

传入参数

参数名类型说明
stream_idconst char*流 ID。
stream_infoconst bytertc::StreamInfo&流信息。
statsconst RemoteStreamStats&当前 RtcEngine 统计数据,详见 RemoteStreamStats

onUserJoined

virtual void onUserJoined(const UserInfo& user_info) {
        (void)user_info;
    }

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

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

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

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

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

传入参数

参数名类型说明
user_infoconst UserInfo&用户信息,详见 UserInfo

onUserPublishStreamVideo

virtual void onUserPublishStreamVideo(const char* stream_id, const StreamInfo& stream_info, bool is_publish){
        (void)stream_id;
        (void)stream_info;
        (void)is_publish;
    }

Available since 3.60. 自版本 3.60 起,该回调替换了 onUserPublishStream 、onUserUnpublishStream 、onUserPublishScreen 和 onUserUnpublishScreen 方法。如果您已升级到 SDK 版本 3.60 或以上,且仍在使用这些方法,请迁移到该回调。

房间内远端用户发布或取消发布视频流的回调。

传入参数

参数名类型说明
stream_idconst char*流 ID。
stream_infoconst StreamInfo&流信息。
is_publishbool流是否发布。
  • true:已发布。
  • false:已取消发布。

注意

当房间内的远端用户调用 publishStreamVideo 成功发布采集的视频流时,本地用户会收到该回调,此时本地用户可以自行选择是否调用 subscribeStreamVideo 订阅此流。

onUserPublishStreamAudio

virtual void onUserPublishStreamAudio(const char* stream_id, const StreamInfo& stream_info, bool is_publish){
        (void)stream_id;
        (void)stream_info;
        (void)is_publish;
    }

Available since 3.60. 自 3.60 起,该回调替代了 onUserPublishStream、onUserUnpublishStream、onUserPublishScreen 和 onUserUnpublishScreen 方法来实现下述功能。如果你已升级至 3.60 及以上版本 SDK,且还在使用这些方法,请迁移至该回调。

房间内远端用户发布或取消发布音频流的回调。

传入参数

参数名类型说明
stream_idconst char*流 ID。
stream_infoconst StreamInfo&流信息。
is_publishbool流是否发布。
  • true:已发布。
  • false:已取消发布。

注意

当房间内的远端用户调用 publishStreamAudio 成功发布音频流时,本地用户会收到该回调,此时本地用户可以自行选择是否调用 subscribeStreamAudio 订阅此流。

onVideoStreamBanned

virtual void onVideoStreamBanned(const char* uid, bool banned) {
        (void)uid;
        (void)banned;
    }

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

传入参数

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

注意

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

onAVSyncStateChange

virtual void onAVSyncStateChange(AVSyncState state) {
        (void)state;
    }

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

传入参数

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

onAudioStreamBanned

virtual void onAudioStreamBanned(const char* uid, bool banned) {
        (void)uid;
        (void)banned;
    }

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

传入参数

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

注意

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

onForwardStreamStateChanged

virtual void onForwardStreamStateChanged(
    ForwardStreamStateInfo* infos,
    int info_count
) {
    }

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

传入参数

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

onForwardStreamEvent

virtual void onForwardStreamEvent(
    ForwardStreamEventInfo* infos,
    int info_count
) {
    }

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

传入参数

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

onNetworkQuality

virtual void onNetworkQuality(
    const NetworkQualityStats& local_quality,
    const NetworkQualityStats* remote_qualities,
    int remote_quality_num
) {
    }

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

传入参数

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

注意

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

onSetRoomExtraInfoResult

virtual void onSetRoomExtraInfoResult(int64_t task_id, SetRoomExtraInfoResult result) {
        (void)task_id;
        (void)result;
    }

Available since 3.52.

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

传入参数

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

onRoomExtraInfoUpdate

virtual void onRoomExtraInfoUpdate(const char*key, const char* value, const char* last_update_user_id, int64_t last_update_time_ms) {
        (void)key;
        (void)value;
        (void)last_update_user_id;
        (void)last_update_time_ms;
    }

Available since 3.52.

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

传入参数

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

注意

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

onRoomStreamExtraInfoUpdate

virtual void onRoomStreamExtraInfoUpdate(const char* stream_id, const StreamInfo& stream_info, const char* extra_info) {
        (void)stream_id;
        (void)stream_info;
        (void)extra_info;
    }

Available since 3.60.

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

传入参数

参数名类型说明
stream_idconst char*流 ID
stream_infoconst StreamInfo&流信息,详见 StreamInfo
extra_infoconst char*流附加信息的内容

注意

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

onUserVisibilityChanged

virtual void onUserVisibilityChanged(bool current_user_visibility, UserVisibilityChangeError error_code) {
        (void)current_user_visibility;
        (void)error_code;
    }

Available since 3.54

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

传入参数

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

onSubtitleStateChanged

virtual void onSubtitleStateChanged(
    SubtitleState state,
    SubtitleErrorCode error_code,
    const char* error_message
) {
    }

字幕状态发生改变回调。

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

传入参数

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

onSubtitleMessageReceived

virtual void onSubtitleMessageReceived(
    const SubtitleMessage* subtitles,
    int cnt
) {
    }

字幕相关内容回调。

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

传入参数

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

onAVSyncEvent

virtual void onAVSyncEvent(
    const char* room_id,
    const char* uid,
    AVSyncEvent event
) {
    }

Available since 3.60.

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

传入参数

参数名类型说明
room_idconst char*房间 ID。
uidconst char*用户 ID。
eventAVSyncEvent音视频同步状态错误,参看 AVSyncEvent。

IExternalVideoEncoderEventHandler
class bytertc::IExternalVideoEncoderEventHandler

自定义编码帧回调类

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

成员函数

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

函数说明

onStart

virtual void onStart(
    const char* stream_id,
    const StreamInfo& stream_info
) = 0;

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

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

传入参数

参数名类型说明
stream_idconst char*编码流 ID
stream_infoconst StreamInfo&编码流信息,参看 StreamInfo

onStop

virtual void onStop(
    const char* stream_id,
    const StreamInfo& stream_info
) = 0;

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

传入参数

参数名类型说明
stream_idconst char*编码流 ID
stream_infoconst StreamInfo&编码流信息,参看 StreamInfo

onRateUpdate

virtual void onRateUpdate(
    const char* stream_id,
    const StreamInfo& stream_info,
    int32_t video_index,
    VideoRateInfo info
) = 0;

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

传入参数

参数名类型说明
stream_idconst char*远端编码流 ID
stream_infoconst StreamInfo&远端编码流信息,参看 StreamInfo
video_indexint32_t对应编码流的下标
infoVideoRateInfo变化后的编码流信息,参看 VideoRateInfo

onRequestKeyFrame

virtual void onRequestKeyFrame(
    const char* stream_id,
    const StreamInfo& stream_info,
    int32_t video_index
) = 0;

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

传入参数

参数名类型说明
stream_idconst char*远端编码流 ID
stream_infoconst StreamInfo&远端编码流信息,参看 StreamInfo
video_indexint32_t对应编码流的下标

onActiveVideoLayer

virtual void onActiveVideoLayer(
    const char* stream_id,
    const StreamInfo& stream_info,
    int32_t video_index,
    bool active
) = 0;

Available since 3.56

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

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

传入参数

参数名类型说明
stream_idconst char*远端编码流 ID
stream_infoconst StreamInfo&远端编码流信息,参看 StreamInfo
video_indexint32_t对应编码流的下标
activebool该路流可发送状态

注意

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

IMediaPlayerAudioFrameObserver
class bytertc::IMediaPlayerAudioFrameObserver

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

成员函数

返回名称
virtual voidonFrame

函数说明

onFrame

virtual void onFrame(
    int player_id,
    const IAudioFrame& frame
) = 0;

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

传入参数

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

IFaceDetectionObserver
class bytertc::IFaceDetectionObserver

人脸检测结果回调观察者

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

成员函数

返回名称
virtual voidonFaceDetectResult

函数说明

onFaceDetectResult

virtual void onFaceDetectResult(const FaceDetectResult& result) = 0;

特效 SDK 进行人脸检测结果的回调。

调用 enableFaceDetection 注册了 IFaceDetectionObserver,并使用 RTC SDK 中包含的特效 SDK 进行视频特效处理时,你会收到此回调。

传入参数

参数名类型说明
resultconst FaceDetectResult&人脸检测结果, 参看 FaceDetectResult。

IMediaPlayerCustomSourceProvider
class bytertc::IMediaPlayerCustomSourceProvider

内存播放数据源回调

成员函数

返回名称
virtual intonReadData
virtual int64_tonSeek
virtual~IMediaPlayerCustomSourceProvider

函数说明

onReadData

virtual int onReadData(
    uint8_t*buffer,
    int buffer_size
) = 0;

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 onSeek(
    int64_t offset,
    MediaPlayerCustomSourceSeekWhence whence
) = 0;

Available since 3.53

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

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

传入参数

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

返回值

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

定位失败,返回 -1。

~IMediaPlayerCustomSourceProvider

virtual ~IMediaPlayerCustomSourceProvider() {}

IAudioFrameObserver
class bytertc::IAudioFrameObserver

音频数据回调观察者

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

本接口类中的回调周期均为 20 ms。

成员函数

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

函数说明

onRecordAudioFrame

virtual void onRecordAudioFrame(const IAudioFrame& audio_frame) = 0;

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

传入参数

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

onPlaybackAudioFrame

virtual void onPlaybackAudioFrame(const IAudioFrame& audio_frame) = 0;

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

传入参数

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

onRemoteUserAudioFrame

virtual void onRemoteUserAudioFrame(
    const char* stream_id,
    const StreamInfo& stream_info,
    const IAudioFrame& audio_frame
) = 0;

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

传入参数

参数名类型说明
stream_idconst char*远端流 ID。
stream_infoconst StreamInfo&远端流信息,参看 StreamInfo。
audio_frameconst IAudioFrame&音频数据, 参看 IAudioFrame。

注意

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

onMixedAudioFrame

virtual void onMixedAudioFrame(const IAudioFrame& audio_frame) = 0;

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

传入参数

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

onRecordScreenAudioFrame

virtual void onRecordScreenAudioFrame(const IAudioFrame& audio_frame) {
    }

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

传入参数

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

onCaptureMixedAudioFrame

virtual void onCaptureMixedAudioFrame(const IAudioFrame& audio_frame) = 0;

返回本地麦克风录制的音频数据,本地 MediaPlayer / EffectPlayer 播放音频文件混音后的音频数据

传入参数

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

IRTSRoomEventHandler
class bytertc::IRTSRoomEventHandler

实时信令事件回调接口

成员函数

返回名称
virtual voidonRoomStateChanged
virtual voidonLeaveRoom
virtual voidonUserJoined
virtual voidonUserLeave
virtual voidonRoomMessageReceived
virtual voidonRoomBinaryMessageReceived
virtual voidonRoomMessageSendResult
virtual voidonUserMessageReceived
virtual voidonUserBinaryMessageReceived
virtual voidonUserMessageSendResult
virtual voidonRoomMessageReceived
virtual voidonRoomBinaryMessageReceived
virtual voidonUserMessageReceived
virtual voidonUserBinaryMessageReceived

函数说明

onRoomStateChanged

virtual void onRoomStateChanged(const char* room_id, const char* uid,
            int state, const char* extra_info) {
        (void)room_id;
        (void)state;
        (void)extra_info;
    }

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

传入参数

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

onLeaveRoom

virtual void onLeaveRoom(const RtcRoomStats& stats) {
        (void)stats;
    }

离开房间回调。

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

传入参数

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

注意

  • 用户调用 leaveRoom 方法离开房间后,如果立即调用 destroy 销毁房间实例方法销毁 RTS 引擎,则将无法收到此回调事件。

  • 离开房间后,如果 App 需要使用系统音频设备,则建议收到此回调后再初始化音频设备,否则可能由于 SDK 占用音频设备而导致初始化失败。

onUserJoined

virtual void onUserJoined(const UserInfo& user_info) {
        (void)user_info;
    }

远端用户加入房间的回调。

传入参数

参数名类型说明
user_infoconst UserInfo&用户信息,详见 UserInfo

onUserLeave

virtual void onUserLeave(const char* uid, UserOfflineReason reason) {
        (void)uid;
        (void)reason;
    }

远端用户离开房间时,本地用户会收到此事件

传入参数

参数名类型说明
uidconst char*离开房间的远端用户 ID。
reasonUserOfflineReason用户离开房间的原因。参看 UserOfflineReason。

onRoomMessageReceived

virtual void onRoomMessageReceived(const char* uid, const char* message) {
        (void)uid;
        (void)message;
    }

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

传入参数

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

注意

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

onRoomBinaryMessageReceived

virtual void onRoomBinaryMessageReceived(const char* uid, int size, const uint8_t* message) {
        (void)uid;
        (void)size;
        (void)message;
    }

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

传入参数

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

注意

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

onRoomMessageSendResult

virtual void onRoomMessageSendResult(int64_t msgid, int error) {
        (void)msgid;
        (void)error;
    }

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

传入参数

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

onUserMessageReceived

virtual void onUserMessageReceived(const char* uid, const char* message) {
        (void)uid;
        (void)message;
    }

该接口将于 3.64 被 onUserMessageReceived 代替。
收到来自房间中其他用户通过 sendUserMessage 发来的点对点文本消息时,会收到此回调。

传入参数

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

注意

你必须先调用 sendUserMessage 方法,才能收到该回调。

onUserBinaryMessageReceived

virtual void onUserBinaryMessageReceived(const char* uid, int size, const uint8_t* message) {
        (void)uid;
        (void)size;
        (void)message;
    }

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

该接口将于 3.64 被 onUserBinaryMessageReceived 代替。

传入参数

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

onUserMessageSendResult

virtual void onUserMessageSendResult(int64_t msgid, int error) {
        (void)msgid;
        (void)error;
    }

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

传入参数

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

注意

你必须先调用 sendUserMessage 或 sendUserBinaryMessage 接口,才能收到此回调。

onRoomMessageReceived

virtual void onRoomMessageReceived(int64_t msgid, const char* uid, const char* message) {
        (void)msgid;
        (void)uid;
        (void)message;
    }

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

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

传入参数

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

onRoomBinaryMessageReceived

virtual void onRoomBinaryMessageReceived(int64_t msgid, const char* uid, const uint8_t* message, int size) {
        (void)msgid;
        (void)uid;
        (void)message;
        (void)size;
    }

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

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

传入参数

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

注意

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

onUserMessageReceived

virtual void onUserMessageReceived(int64_t msgid, const char* uid, const char* message) {
        (void)msgid;
        (void)uid;
        (void)message;
    }

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

传入参数

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

注意

你必须先调用 sendUserMessage 方法,才能收到该回调。

onUserBinaryMessageReceived

virtual void onUserBinaryMessageReceived(int64_t msgid, const char* uid, const uint8_t* message, int size) {
        (void)msgid;
        (void)uid;
        (void)message;
        (void)size;
    }

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

传入参数

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

IMediaPlayerEventHandler
class bytertc::IMediaPlayerEventHandler

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

成员函数

返回名称
virtual~IMediaPlayerEventHandler
virtual voidonMediaPlayerStateChanged
virtual voidonMediaPlayerPlayingProgress
virtual voidonMediaPlayerEvent

函数说明

~IMediaPlayerEventHandler

virtual ~IMediaPlayerEventHandler() {}

onMediaPlayerStateChanged

virtual void onMediaPlayerStateChanged(
    int player_id,
    PlayerState state,
    PlayerError error
) = 0;

播放状态改变时回调。

传入参数

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

onMediaPlayerPlayingProgress

virtual void onMediaPlayerPlayingProgress(
    int player_id,
    int64_t progress
) = 0;

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

传入参数

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

onMediaPlayerEvent

virtual void onMediaPlayerEvent(
    int player_id,
    PlayerEvent event,
    const char* message
) = 0;

Available since 3.59

播放事件回调。调用 selectAudioTrack 和 setPosition 后,会触发此回调。

传入参数

参数名类型说明
player_idintIMediaPlayer 的 ID。通过 getMediaPlayer 设置。
eventPlayerEvent播放器事件。参看 PlayerEvent。
messageconst char*事件描述信息,可能为空。

IRTCEngineEventHandler
class bytertc::IRTCEngineEventHandler

音视频引擎事件回调接口

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

成员函数

返回名称
virtual voidonWarning
virtual voidonError
virtual voidonExtensionAccessError
virtual voidonLogReport
virtual voidonConnectionStateChanged
virtual voidonNetworkTypeChanged
virtual voidonSimulcastSubscribeFallback
virtual voidonPerformanceAlarms
virtual voidonAudioDeviceStateChanged
virtual voidonVideoDeviceStateChanged
virtual voidonAudioDeviceWarning
virtual voidonVideoDeviceWarning
virtual voidonSysStats
virtual voidonRecordingStateUpdate
virtual voidonRecordingProgressUpdate
virtual voidonAudioRecordingStateUpdate
virtual voidonLoginResult
virtual voidonLogout
virtual voidonServerParamsSetResult
virtual voidonGetPeerOnlineStatus
virtual voidonUserMessageReceivedOutsideRoom
virtual voidonUserBinaryMessageReceivedOutsideRoom
virtual voidonUserMessageSendResultOutsideRoom
virtual voidonUserMessageReceivedOutsideRoom
virtual voidonUserBinaryMessageReceivedOutsideRoom
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 voidonUserStartVideoCapture
virtual voidonUserStopVideoCapture
virtual voidonLocalVideoSizeChanged
virtual voidonRemoteVideoSizeChanged
virtual voidonFirstLocalVideoFrameCaptured
virtual voidonFirstRemoteAudioFrame
virtual voidonRemoteAudioStateChanged
virtual voidonLocalVideoStateChanged
virtual voidonRemoteVideoStateChanged
virtual voidonAudioFrameSendStateChanged
virtual voidonVideoFrameSendStateChanged
virtual voidonFirstRemoteVideoFrameRendered
virtual voidonFirstRemoteVideoFrameDecoded
virtual voidonAudioFramePlayStateChanged
virtual voidonVideoFramePlayStateChanged
virtual voidonFirstLocalAudioFrame
virtual voidonCloudProxyConnected
virtual voidonLicenseQuotaExceeded
virtual voidonLocalProxyStateChanged
virtual void[deprecated] onAudioMixingPlayingProgress

函数说明

onWarning

virtual void onWarning(int warn) {
        (void)warn;
    }

发生警告回调。

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

你可能需要干预。

传入参数

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

onError

virtual void onError(int err) {
        (void)err;
    }

发生错误回调。

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

传入参数

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

onExtensionAccessError

virtual void onExtensionAccessError(
    const char* extension_name,
    const char* msg
) {

Available since 3.52

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

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

传入参数

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

onLogReport

virtual void onLogReport(const char* log_type, const char* log_content) {
        (void)log_type;
        (void)log_content;
    }

上报日志时回调该事件。

传入参数

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

onConnectionStateChanged

virtual void onConnectionStateChanged(bytertc::ConnectionState state) {
    }

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

传入参数

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

注意

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

onNetworkTypeChanged

virtual void onNetworkTypeChanged(bytertc::NetworkType type) {
    }

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

传入参数

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

onSimulcastSubscribeFallback

virtual void onSimulcastSubscribeFallback(const char* stream_id, const StreamInfo& stream_info, const bytertc::RemoteStreamSwitch& event) {
         (void)stream_id;
         (void)stream_info;
         (void)event;
     }

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

传入参数

参数名类型说明
stream_idconst char*流 ID
stream_infoconst StreamInfo&流信息, 参看 StreamInfo。
eventconst bytertc::RemoteStreamSwitch&音视频流发生变化的信息。参看 RemoteStreamSwitch。

onPerformanceAlarms

virtual void onPerformanceAlarms(const char* stream_id, const StreamInfo& stream_info, bytertc::PerformanceAlarmMode mode,
            bytertc::PerformanceAlarmReason reason, const bytertc::SourceWantedData& data) {
        (void)stream_id;
        (void)stream_info;
        (void)mode;
        (void)reason;
        (void)data;
    }

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

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

传入参数

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

onAudioDeviceStateChanged

virtual void onAudioDeviceStateChanged(const char* device_id, bytertc::RTCAudioDeviceType device_type,
            bytertc::MediaDeviceState device_state, bytertc::MediaDeviceError device_error) {
        (void)device_id;
        (void)device_type;
        (void)device_state;
        (void)device_error;
    }

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

传入参数

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

onVideoDeviceStateChanged

virtual void onVideoDeviceStateChanged(const char* device_id, bytertc::RTCVideoDeviceType device_type,
            bytertc::MediaDeviceState device_state, bytertc::MediaDeviceError device_error) {
        (void)device_id;
        (void)device_type;
        (void)device_state;
        (void)device_error;
    }

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

传入参数

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

onAudioDeviceWarning

virtual void onAudioDeviceWarning(const char* device_id, bytertc::RTCAudioDeviceType device_type,
            bytertc::MediaDeviceWarning device_warning) {
        (void)device_id;
        (void)device_type;
        (void)device_warning;
    }

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

传入参数

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

onVideoDeviceWarning

virtual void onVideoDeviceWarning(const char* device_id, bytertc::RTCVideoDeviceType device_type,
            bytertc::MediaDeviceWarning device_warning) {
        (void)device_id;
        (void)device_type;
        (void)device_warning;
    }

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

传入参数

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

onSysStats

virtual void onSysStats(const bytertc::SysStats& stats) {
    }

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

传入参数

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

onRecordingStateUpdate

virtual void onRecordingStateUpdate(
        IVideoSource* video_source, RecordingState state, RecordingErrorCode error_code, RecordingInfo info) {
    }

获取本地录制状态回调。

该回调由 startFileRecording 或 stopFileRecording 触发。

传入参数

参数名类型说明
video_sourceIVideoSource*预留参数
stateRecordingState录制状态,参看 RecordingState
error_codeRecordingErrorCode录制错误码,参看 RecordingErrorCode
infoRecordingInfo录制文件的详细信息,参看 RecordingInfo

onRecordingProgressUpdate

virtual void onRecordingProgressUpdate(
    IVideoSource* video_source,
    RecordingProgress process,
    RecordingInfo info
) {
    }

本地录制进度回调。

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

传入参数

参数名类型说明
video_sourceIVideoSource*预留参数。
processRecordingProgress录制进度,参看 RecordingProgress
infoRecordingInfo录制文件的详细信息,参看 RecordingInfo

onAudioRecordingStateUpdate

virtual void onAudioRecordingStateUpdate(
    AudioRecordingState state,
    AudioRecordingErrorCode error_code
) {
    }

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

传入参数

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

onLoginResult

virtual void onLoginResult(const char* uid, int error_code, int elapsed) {
        (void)uid;
        (void)error_code;
        (void)elapsed;
    }

登录结果回调

传入参数

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

注意

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

onLogout

virtual void onLogout(LogoutReason reason) {
    }

登出结果回调

传入参数

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

注意

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

onServerParamsSetResult

virtual void onServerParamsSetResult(int error) {
        (void)error;
    }

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

传入参数

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

注意

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

onGetPeerOnlineStatus

virtual void onGetPeerOnlineStatus(const char* peer_user_id, int status) {
        (void)peer_user_id;
        (void)status;
    }

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

传入参数

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

注意

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

onUserMessageReceivedOutsideRoom

virtual void onUserMessageReceivedOutsideRoom(const char* uid, const char* message) {
        (void)uid;
        (void)message;
    }

该接口将于 3.64 版本废弃,请使用 onUserMessageReceivedOutsideRoom 代替。
收到房间外用户调用 sendUserMessageOutsideRoom 发来的文本消息时,会收到此回调。

传入参数

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

onUserBinaryMessageReceivedOutsideRoom

virtual void onUserBinaryMessageReceivedOutsideRoom(const char* uid, int size, const uint8_t* message) {
        (void)uid;
        (void)size;
        (void)message;
    }

该接口将于 3.64 被 onUserBinaryMessageReceivedOutsideRoom 代替。
收到房间外用户调用 sendUserBinaryMessageOutsideRoom 发来的二进制消息时,会收到此回调

传入参数

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

onUserMessageSendResultOutsideRoom

virtual void onUserMessageSendResultOutsideRoom(int64_t msgid, int error) {
        (void)msgid;
        (void)error;
    }

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

当调用 sendUserMessageOutsideRoom 或 sendUserBinaryMessageOutsideRoom 发送消息后,会收到此回调。

传入参数

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

onUserMessageReceivedOutsideRoom

virtual void onUserMessageReceivedOutsideRoom(int64_t msgid, const char* uid, const char* message) {
        (void)msgid;
        (void)uid;
        (void)message;
    }

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

传入参数

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

onUserBinaryMessageReceivedOutsideRoom

virtual void onUserBinaryMessageReceivedOutsideRoom(int64_t msgid, const char* uid, const uint8_t* message, int size) {
        (void)msgid;
        (void)uid;
        (void)message;
        (void)size;
    }

当收到来自房间外用户通过 sendUserBinaryMessageOutsideRoom 发送的二进制消息时,触发此回调。

传入参数

参数名类型说明
msgidint64_t本条消息的 ID。
uidconst char*消息发送者的用户 ID。
messageconst uint8_t*收到的二进制消息内容。
sizeint二进制消息的长度,单位为字节。

onServerMessageSendResult

virtual void onServerMessageSendResult(int64_t msgid, int error, const bytertc::ServerACKMsg& msg) {
        (void)msgid;
        (void)error;
        (void)msg;
    }

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

传入参数

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

注意

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

onSEIMessageReceived

virtual void onSEIMessageReceived(const char* stream_id, const StreamInfo& stream_info, const uint8_t* message, int length){
        (void)stream_id;
        (void)stream_info;
        (void)message;
        (void)length;
    }

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

传入参数

参数名类型说明
stream_idconst char*收到 SEI 消息的视频流 ID
stream_infoconst StreamInfo&包含 SEI 发送者的用户名,所在的房间名和媒体流, 参看 StreamInfo
messageconst uint8_t*收到的 SEI 消息内容
lengthint收到的 SEI 消息长度

onSEIStreamUpdate

virtual void onSEIStreamUpdate(const char* stream_id, const StreamInfo& stream_info, SEIStreamEventType type) {
        (void)stream_id;
        (void)stream_info;
        (void)type;
    }

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

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

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

传入参数

参数名类型说明
stream_idconst char*收到 SEI 消息的视频流 ID
stream_infoconst StreamInfo&包含 SEI 发送者的用户名,所在的房间名和媒体流, 参看 StreamInfo
typeSEIStreamEventType黑帧视频流状态,参看 SEIStreamEventType

onRemoteAudioPropertiesReport

virtual void onRemoteAudioPropertiesReport(const RemoteAudioPropertiesInfo* audio_properties_infos, int audio_properties_info_number, int total_remote_volume) {
        (void)audio_properties_infos;
        (void)audio_properties_info_number;
        (void)total_remote_volume;
    }

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

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

传入参数

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

onLocalAudioPropertiesReport

virtual void onLocalAudioPropertiesReport(const LocalAudioPropertiesInfo* audio_properties_infos, int audio_properties_info_number) {
        (void)audio_properties_infos;
        (void)audio_properties_info_number;
    }

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

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

传入参数

参数名类型说明
audio_properties_infosconst LocalAudioPropertiesInfo*本地音频信息,详见 LocalAudioPropertiesInfo。本地音量可通过 setAudioCaptureDeviceVolume 设置。
audio_properties_info_numberint数组长度

onAudioPlaybackDeviceTestVolume

virtual void onAudioPlaybackDeviceTestVolume(int volume) {
        (void)volume;
    }

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

传入参数

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

注意

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

onAudioDeviceVolumeChanged

virtual void onAudioDeviceVolumeChanged(bytertc::RTCAudioDeviceType device_type, int volume, bool muted) {
        (void)device_type;
        (void)volume;
        (void)muted;
    }

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

传入参数

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

onLocalAudioStateChanged

virtual void onLocalAudioStateChanged(IAudioSource* audio_source, LocalAudioStreamState state, LocalAudioStreamError error) {
        (void)audio_source;
        (void)state;
        (void)error;
    }

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

传入参数

参数名类型说明
audio_sourceIAudioSource*本地音频流对象,详见:IAudioSource
stateLocalAudioStreamState本地音频流的状态,详见:LocalAudioStreamState
errorLocalAudioStreamError本地音频状态改变时的错误码,详见:LocalAudioStreamError

onUserStartAudioCapture

virtual void onUserStartAudioCapture(const char* stream_id, const StreamInfo& stream_info) {
        (void)stream_id;
        (void)stream_info;
    }

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

传入参数

参数名类型说明
stream_idconst char*开启音频采集的远端用户发布的流 ID
stream_infoconst StreamInfo&开启音频采集的远端流信息,详见 StreamInfo

onUserStopAudioCapture

virtual void onUserStopAudioCapture(const char* stream_id, const StreamInfo& stream_info) {
        (void)stream_id;
        (void)stream_info;
    }

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

传入参数

参数名类型说明
stream_idconst char*关闭音频采集的远端用户发布的流 ID
stream_infoconst StreamInfo&关闭音频采集的远端流信息,详见 StreamInfo

onActiveSpeaker

virtual void onActiveSpeaker(const char* room_id, const char* uid) {
        (void)room_id;
        (void)uid;
    }

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

传入参数

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

onStreamSyncInfoReceived

virtual void onStreamSyncInfoReceived(const char* stream_id, const StreamInfo& stream_info, SyncInfoStreamType stream_type,
                                         const uint8_t* data, int32_t length) {
        (void)stream_id;
        (void)stream_info;        
        (void)stream_type;
        (void)data;
        (void)length;
    }

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

传入参数

参数名类型说明
stream_idconst char*远端流 ID
stream_infoconst StreamInfo&远端流信息,详见 StreamInfo。
stream_typeSyncInfoStreamType媒体流类型,详见 SyncInfoStreamType 。
dataconst uint8_t*消息内容。
lengthint32_t消息长度。

onNetworkDetectionResult

virtual void onNetworkDetectionResult(NetworkDetectionLinkType type, NetworkQuality quality, int rtt, double lost_rate,
                                      int bitrate, int jitter){
        (void)type;
        (void)quality;
        (void)rtt;
        (void)lost_rate;
        (void)bitrate;
        (void)jitter;
    }

通话前网络探测结果。

成功调用 startNetworkDetection 接口开始探测后,会在 3s 内首次收到该回调,之后每 2s 收到一次该回调。

传入参数

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

onNetworkDetectionStopped

virtual void onNetworkDetectionStopped(NetworkDetectionStopReason reason){
        (void)reason;
    }

通话前网络探测结束

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

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

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

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

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

传入参数

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

onUserStartVideoCapture

virtual void onUserStartVideoCapture(const char* stream_id, const StreamInfo& stream_info) {
        (void)stream_id;
        (void)stream_info;
    }

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

传入参数

参数名类型说明
stream_idconst char*视频流 ID
stream_infoconst StreamInfo&视频流信息,详见 StreamInfo。

onUserStopVideoCapture

virtual void onUserStopVideoCapture(const char* stream_id, const StreamInfo& stream_info) {
        (void)stream_id;
        (void)stream_info;
    }

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

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

传入参数

参数名类型说明
stream_idconst char*视频流 ID
stream_infoconst StreamInfo&视频流信息,详见 StreamInfo。

onLocalVideoSizeChanged

virtual void onLocalVideoSizeChanged(IVideoSource* video_source, const VideoFrameInfo& info) {
        (void)video_source;
        (void)info;
    }

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

传入参数

参数名类型说明
video_sourceIVideoSource*预留参数。
infoconst VideoFrameInfo&视频帧信息。参看 VideoFrameInfo。

onRemoteVideoSizeChanged

virtual void onRemoteVideoSizeChanged(const char* stream_id, const StreamInfo& stream_info, const VideoFrameInfo& info) {
        (void)stream_id;
        (void)stream_info;
        (void)info;
    }

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

传入参数

参数名类型说明
stream_idconst char*远端视频流 ID。
stream_infoconst StreamInfo&远端视频流信息。参看 StreamInfo。
infoconst VideoFrameInfo&视频帧信息。参看 VideoFrameInfo。

onFirstLocalVideoFrameCaptured

virtual void onFirstLocalVideoFrameCaptured(IVideoSource* video_source, const VideoFrameInfo& info) {
        (void)video_source;
        (void)info;
    }

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

传入参数

参数名类型说明
video_sourceIVideoSource*视频源对象。参看 IVideoSource。
infoconst VideoFrameInfo&视频信息。参看 VideoFrameInfo。

注意

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

onFirstRemoteAudioFrame

virtual void onFirstRemoteAudioFrame(const char* stream_id, const StreamInfo& stream_info) {
        (void)stream_id;
        (void)stream_info;
    }

订阅端接收并解码远端音频流首帧时,收到此回调。包含以下情况:

  1. 发布端发布音频,包含首次发布和取消后再次发布。取消发布还包括发布端主动退房后或掉线。

  2. 发布端关闭音频采集后,再次打开采集。使用外部源时,停止推流后再次推流。

  3. 发布端发布音频后,订阅端取消订阅音频后,又再次订阅音频。

传入参数

参数名类型说明
stream_idconst char*远端音频流 ID。
stream_infoconst StreamInfo&远端音频流信息,参看 StreamInfo。

注意

  • 用户刚收到房间内每一路音频流时,都会收到该回调。
  • 摄像头流、屏幕流,内部采集、外部源、自动订阅和手动订阅的音频流,都符合上述策略。

onRemoteAudioStateChanged

virtual void onRemoteAudioStateChanged(
            const char* stream_id, const StreamInfo& stream_info, RemoteAudioState state, RemoteAudioStateChangeReason reason) {
        (void)stream_id;
        (void)stream_info;
        (void)state;
        (void)reason;
    }

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

传入参数

参数名类型说明
stream_idconst char*远端音频流 ID。
stream_infoconst StreamInfo&远端音频流信息,参看 StreamInfo。
stateRemoteAudioState远端音频流状态,参看 RemoteAudioState
reasonRemoteAudioStateChangeReason远端音频流状态改变的原因,参看 RemoteAudioStateChangeReason

onLocalVideoStateChanged

virtual void onLocalVideoStateChanged(IVideoSource* video_source, LocalVideoStreamState state, LocalVideoStreamError error) {
        (void)video_source;
        (void)state;
        (void)error;
    }

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

传入参数

参数名类型说明
video_sourceIVideoSource*本地视频流对象。参看 IVideoSource。
stateLocalVideoStreamState本地视频流状态,参看 LocalVideoStreamState
errorLocalVideoStreamError本地视频状态改变时的错误码,参看 LocalVideoStreamError

onRemoteVideoStateChanged

virtual void onRemoteVideoStateChanged(
            const char* stream_id, const StreamInfo& stream_info, RemoteVideoState state, RemoteVideoStateChangeReason reason) {
        (void)stream_id;
        (void)stream_info;
        (void)state;
        (void)reason;
    }

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

传入参数

参数名类型说明
stream_idconst char*远端视频流 ID。
stream_infoconst StreamInfo&远端视频流信息,包括房间 ID、用户 ID、流属性,等。参看 StreamInfo。
stateRemoteVideoState远端视频流状态,参看 RemoteVideoState。
reasonRemoteVideoStateChangeReason远端视频流状态改变的原因,参看 RemoteVideoStateChangeReason。

注意

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

onAudioFrameSendStateChanged

virtual void onAudioFrameSendStateChanged(const char* stream_id, const StreamInfo& stream_info, const RtcUser& user, FirstFrameSendState state) {
        (void)stream_id;
        (void)stream_info;
        (void)user;
        (void)state;
    }

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

传入参数

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

onVideoFrameSendStateChanged

virtual void onVideoFrameSendStateChanged(const char* stream_id, const StreamInfo& stream_info, const RtcUser& user, FirstFrameSendState state) {
        (void)stream_id;
        (void)stream_info;
        (void)user;
        (void)state;
    }

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

传入参数

参数名类型说明
stream_idconst char*流 ID。
stream_infoconst StreamInfo&视频流信息,详见 StreamInfo
userconst RtcUser&本地用户信息,详见 RtcUser
stateFirstFrameSendState首帧发送状态,详见 FirstFrameSendState

onFirstRemoteVideoFrameRendered

virtual void onFirstRemoteVideoFrameRendered(const char* stream_id, const StreamInfo& stream_info, const VideoFrameInfo& info) {
        (void)stream_id;
        (void)stream_info;
        (void)info;
    }

SDK 内部渲染成功远端视频流首帧后,收到此回调。包含以下情况:

  1. 发布端首次发布视频

  2. 在 1 条件下,发布端取消发布视频后,再次发布视频

  3. 在 1 条件下,发布端关闭视频采集后,再次打开采集(或使用外部源时,停止推流后再次推流)

  4. 在 1 条件下,订阅端取消订阅视频后,再次订阅视频(调用接口包括 subscribeAllStreamsVideo,pauseAllSubscribedStreamVideo/resumeAllSubscribedStreamVideo)

传入参数

参数名类型说明
stream_idconst char*远端视频流 ID。
stream_infoconst StreamInfo&远端视频流信息。参看 StreamInfo。
infoconst VideoFrameInfo&视频帧信息。参看 VideoFrameInfo。

注意

仅在采用内部渲染时,符合上述策略。

onFirstRemoteVideoFrameDecoded

virtual void onFirstRemoteVideoFrameDecoded(const char* stream_id, const StreamInfo& stream_info, const VideoFrameInfo& info) {
        (void)stream_id;
        (void)stream_info;
        (void)info;
    }

订阅端接收并解码远端视频流首帧时,收到此回调。包含以下情况:

  1. 发布端发布视频,包含首次发布和取消后再次发布。取消发布还包括发布端主动退房后或掉线。

  2. 发布端关闭视频采集后,再次打开采集。使用外部源时,停止推流后再次推流。

  3. 发布端发布视频后,订阅端取消订阅视频后,又再次订阅视频。

传入参数

参数名类型说明
stream_idconst char*远端视频流 ID。
stream_infoconst StreamInfo&远端视频流信息。参看 StreamInfo。
infoconst VideoFrameInfo&视频帧信息。参看 VideoFrameInfo。

注意

  • 用户刚收到房间内订阅的每一路视频流时,都会收到该回调。
  • 摄像头流、屏幕流,内部采集、外部源,自动订阅和手动订阅的视频流,都符合上述策略。

onAudioFramePlayStateChanged

virtual void onAudioFramePlayStateChanged(const char* stream_id, const StreamInfo& stream_info, const RtcUser& user, FirstFramePlayState state) {
        (void)stream_id;
        (void)stream_info;
        (void)user;
        (void)state;
    }

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

传入参数

参数名类型说明
stream_idconst char*音频首帧播放状态发生改变的流 ID
stream_infoconst StreamInfo&音频首帧播放状态发生改变的流信息,详见 StreamInfo
userconst RtcUser&远端用户信息,详见 RtcUser
stateFirstFramePlayState首帧播放状态,详见 FirstFramePlayState

onVideoFramePlayStateChanged

virtual void onVideoFramePlayStateChanged(const char* stream_id, const StreamInfo& stream_info, const RtcUser& user, FirstFramePlayState state) {
        (void)stream_id;
        (void)stream_info;
        (void)user;
        (void)state;
    }

远端视频流的首帧播放状态改变时,收到此回调。

传入参数

参数名类型说明
stream_idconst char*视频首帧播放状态发生改变的流 ID
stream_infoconst StreamInfo&视频首帧播放状态发生改变的流信息,详见 StreamInfo
userconst RtcUser&远端用户信息,详见 RtcUser
stateFirstFramePlayState首帧播放状态,详见 FirstFramePlayState

onFirstLocalAudioFrame

virtual void onFirstLocalAudioFrame(IAudioSource* audio_source) {
        (void)audio_source;
    }

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

传入参数

参数名类型说明
audio_sourceIAudioSource*音频源,详见 IAudioSource。

注意

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

onCloudProxyConnected

virtual void onCloudProxyConnected(int interval) {
        (void)interval;
    }

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

传入参数

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

onLicenseQuotaExceeded

virtual void onLicenseQuotaExceeded(const char* message) {
        (void)message;
    }

AIGC(AI 音视频互动方案)使用 License 计费的场景下,当 License 配额用尽时,会收到该回调。收到该回调时,AIGC 服务会中止,请及时续费,并且建议离开房间、销毁 SDK。

传入参数

参数名类型说明
messageconst char*回调消息

onLocalProxyStateChanged

virtual void onLocalProxyStateChanged(LocalProxyType local_proxy_type, LocalProxyState local_proxy_state, LocalProxyError local_proxy_error) {
        (void)local_proxy_type;
        (void)local_proxy_state;
        (void)local_proxy_error;
    }

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

传入参数

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

onAudioMixingPlayingProgress

virtual void onAudioMixingPlayingProgress(
    int mix_id,
    int64_t progress
) {
    }

Deprecated since 3.54, use onMediaPlayerPlayingProgress instead.

混音音频文件播放进度回调

传入参数

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

注意

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

IWTNStreamEventHandler
class bytertc::IWTNStreamEventHandler

WTN 事件回调接口。

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

成员函数

返回名称
virtual~IWTNStreamEventHandler
virtual voidonWTNRemoteVideoStats
virtual voidonWTNRemoteAudioStats
virtual voidonWTNVideoSubscribeStateChanged
virtual voidonWTNAudioSubscribeStateChanged
virtual voidonWTNFirstRemoteAudioFrame
virtual voidonWTNFirstRemoteVideoFrameDecoded
virtual voidonWTNSEIMessageReceived
virtual voidonWTNDataMessageReceived

函数说明

~IWTNStreamEventHandler

virtual ~IWTNStreamEventHandler() {
    }

onWTNRemoteVideoStats

virtual void onWTNRemoteVideoStats(const char* stream_id, RemoteVideoStats stats) {
        (void)stream_id;
        (void)stats;
    }

Available since 3.60.

通话中本地设备接收订阅的远端 WTN 视频流的流 ID 以及远端 WTN 视频流统计信息。

传入参数

参数名类型说明
stream_idconst char*WTN 流 ID
statsRemoteVideoStats远端 WTN 视频流的统计信息,详见 RemoteVideoStats。

onWTNRemoteAudioStats

virtual void onWTNRemoteAudioStats(const char* stream_id, RemoteAudioStats stats) {
        (void)stream_id;
        (void)stats;
    }

Available since 3.60.

通话中本地设备接收订阅的远端 WTN 音频流的流 ID 以及远端 WTN 音频流统计信息。

传入参数

参数名类型说明
stream_idconst char*WTN 流 ID
statsRemoteAudioStats远端 WTN 音频流的统计信息,详见 RemoteAudioStats

onWTNVideoSubscribeStateChanged

virtual void onWTNVideoSubscribeStateChanged(const char* stream_id, WTNSubscribeState state_code, WTNSubscribeStateChangeReason reason) {
        (void)stream_id;
        (void)state_code;
        (void)reason;
    }

Available since 3.60. 自 3.60 起,该回调替代了 onPlayPublicStreamResult 方法中的 WTN 视频流订阅状态变化通知功能。如果你已升级至 3.60 及以上版本,并且仍在使用该方法,请迁移到此回调。

WTN 视频流订阅状态变化回调

通过 subscribeWTNVideoStream 订阅 WTN 视频流后,可以通过本回调获取订阅结果。

传入参数

参数名类型说明
stream_idconst char*WTN 视频流的 ID
state_codeWTNSubscribeState视频流状态码,参看 WTNSubscribeState。
reasonWTNSubscribeStateChangeReason订阅状态发生变化的原因,参看 WTNSubscribeStateChangeReason。

onWTNAudioSubscribeStateChanged

virtual void onWTNAudioSubscribeStateChanged(const char* stream_id, WTNSubscribeState state_code, WTNSubscribeStateChangeReason reason) {
        (void)stream_id;
        (void)state_code;
        (void)reason;
    }

Available since 3.60. 自 3.60 起,该回调替代了 onPlayPublicStreamResult 中的 WTN 音频流订阅状态变化通知功能。如果你已升级至 3.60 及以上版本,并且仍在使用该方法,请迁移到此回调。

WTN 音频流订阅状态变化回调

通过 subscribeWTNAudioStream 订阅 WTN 音频流后,可以通过本回调获取订阅结果。

传入参数

参数名类型说明
stream_idconst char*WTN 音频流的 ID
state_codeWTNSubscribeState音频流状态码,参看 WTNSubscribeState。
reasonWTNSubscribeStateChangeReason订阅状态发生变化的原因,参看 WTNSubscribeStateChangeReason。

onWTNFirstRemoteAudioFrame

virtual void onWTNFirstRemoteAudioFrame(const char* stream_id) {
        (void)stream_id;
    }

Available since 3.60. 自 3.60 起,该回调替代了 onFirstPublicStreamAudioFrame。如果你已升级至 3.60 及以上版本,并且仍在使用该方法,请迁移到此回调。

WTN 流的首帧音频解码成功

关于订阅 WTN 音频流,详见 subscribeWTNAudioStream。

传入参数

参数名类型说明
stream_idconst char*WTN 流 ID

onWTNFirstRemoteVideoFrameDecoded

virtual void onWTNFirstRemoteVideoFrameDecoded(const char* stream_id, const VideoFrameInfo& info) {
        (void)stream_id;
        (void)info;
    }

Available since 3.60. 自 3.60 起,该回调替代了 onFirstPublicStreamVideoFrameDecoded。如果你已升级至 3.60 及以上版本,并且仍在使用该方法,请迁移到此回调。

WTN 流的首帧视频解码成功

关于 订阅 WTN 流,详见 subscribeWTNVideoStream。

传入参数

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

onWTNSEIMessageReceived

virtual void onWTNSEIMessageReceived(const char* stream_id, int channel_id, const uint8_t* message, int length) {
        (void)stream_id;
        (void)channel_id;
        (void)message;
        (void)length;
    }

Available since 3.60. 自 3.60 起,该回调替换了 onPublicStreamSEIMessageReceived 来实现下述功能。如果你已升级至 3.60 及以上版本,并且仍在使用该方法,请迁移到此回调。

回调 WTN 流中包含的 SEI 信息。

调用 subscribeWTNAudioStream/subscribeWTNVideoStream接口拉 WTN 音频流/视频流后,通过此回调收到 WTN 流中的 SEI 消息。

传入参数

参数名类型说明
stream_idconst char*WTN 流 ID。
channel_idintSEI 的消息传输通道,取值范围 [0 - 255]。通过此参数,你可以为不同接收方设置不同的 ChannelID,这样不同接收方可以根据回调中的 ChannelID 选择应关注的 SEI 信息。
messageconst uint8_t*收到的 SEI 消息内容。
通过调用客户端 sendSEIMessage 插入的 SEI 信息。
当 WTN 流中的多路视频流均包含有 SEI 信息:SEI 不互相冲突时,将通过多次回调分别发送;SEI 在同一帧有冲突时,则只有一条流中的 SEI 信息被透传并融合到 WTN 流中。
lengthintSEI 信息的长度。

注意

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

onWTNDataMessageReceived

virtual void onWTNDataMessageReceived(const char* stream_id,
        const uint8_t* message,
        int message_length,
        DataMessageSourceType source_type) {
        (void)stream_id;
        (void)message;
        (void)message_length;
        (void)source_type;
    }

Available since 3.60.

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

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

传入参数

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

注意

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

IAudioFrameProcessor
class bytertc::IAudioFrameProcessor

自定义音频处理器。

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

成员函数

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

函数说明

onProcessRecordAudioFrame

virtual int onProcessRecordAudioFrame(IAudioFrame& audio_frame) = 0;

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

传入参数

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

注意

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

onProcessPlayBackAudioFrame

virtual int onProcessPlayBackAudioFrame(IAudioFrame& audio_frame) = 0;

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

传入参数

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

注意

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

onProcessRemoteUserAudioFrame

virtual int onProcessRemoteUserAudioFrame(
    const char* stream_id,
    const StreamInfo& stream_info,
    IAudioFrame& audio_frame
) = 0;

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

传入参数

参数名类型说明
stream_idconst char*远端流 ID。
stream_infoconst StreamInfo&远端流信息, 参看 StreamInfo。
audio_frameIAudioFrame&音频帧地址,参看 IAudioFrame

注意

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

onProcessScreenAudioFrame

virtual int onProcessScreenAudioFrame(IAudioFrame& audio_frame) = 0;

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

传入参数

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

注意

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

ILocalEncodedVideoFrameObserver
class bytertc::ILocalEncodedVideoFrameObserver

本地视频帧监测器

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

成员函数

返回名称
virtual voidonLocalEncodedVideoFrame

函数说明

onLocalEncodedVideoFrame

virtual void onLocalEncodedVideoFrame(
    IVideoSource*video_source,
    const IEncodedVideoFrame& video_stream
) = 0;

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

传入参数

参数名类型说明
video_sourceIVideoSource*预留参数。
video_streamconst IEncodedVideoFrame&本地视频帧信息,参看 IEncodedVideoFrame
最近更新时间:2026.08.05 15:06:59
这个页面对您有帮助吗?
有用
有用
无用
无用