class bytertc::IRemoteEncodedVideoFrameObserver
远端编码后视频数据监测器
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
| 返回 | 名称 |
|---|---|
| virtual void | onRemoteEncodedVideoFrame |
virtual void onRemoteEncodedVideoFrame( const char* stream_id, const StreamInfo& stream_info, const IEncodedVideoFrame& video_stream ) = 0;
调用 registerRemoteEncodedVideoFrameObserver 后,SDK 监测到远端编码后视频数据时,触发该回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 收到的远端流 ID |
| stream_info | const StreamInfo& | 收到的远端流信息,参看 StreamInfo |
| video_stream | const IEncodedVideoFrame& | 收到的远端视频帧信息,参看 IEncodedVideoFrame |
class bytertc::IAudioEffectPlayerEventHandler
IAudioEffectPlayer 对应的回调句柄。你必须调用 setEventHandler 完成设置后,才能收到对应回调。
| 返回 | 名称 |
|---|---|
| virtual | ~IAudioEffectPlayerEventHandler |
| virtual void | onAudioEffectPlayerStateChanged |
virtual ~IAudioEffectPlayerEventHandler() {}
virtual void onAudioEffectPlayerStateChanged( int effect_id, PlayerState state, PlayerError error ) = 0;
播放状态改变时回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | IAudioEffectPlayer 的 ID。通过 getAudioEffectPlayer 设置。 |
| state | PlayerState | 混音状态。参考 PlayerState。 |
| error | PlayerError | 错误码。参考 PlayerError。 |
class bytertc::IEncryptHandler
加密/解密处理函数
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
| 返回 | 名称 |
|---|---|
| virtual unsigned int | onEncryptData |
| virtual unsigned int | onDecryptData |
virtual unsigned int onEncryptData( const unsigned char* data, unsigned int length, unsigned char* buf, unsigned int buf_len) = 0;
自定义加密。
使用设定的自定义加密方式,对编码后传输前的音视频帧数据进行加密。
暂不支持对原始音视频帧进行加密。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | const unsigned char* | 原始音视频帧数据 |
| length | unsigned int | 原始音视频帧数据的长度 |
| buf | unsigned char* | 可供写入的加密后数据缓冲区 |
| buf_len | unsigned int | 可供写入的加密后数据缓冲区大小 |
返回值
加密后的数据
注意
setCustomizeEncryptHandler。virtual unsigned int onDecryptData( const unsigned char* data, unsigned int length, unsigned char* buf, unsigned int buf_len) = 0;
自定义解密。
对自定义加密后的音视频帧数据进行解密。关于自定义加密,参看 onEncryptData。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | const unsigned char* | 原始音视频帧数据 |
| length | unsigned int | 原始音视频帧数据的长度 |
| buf | unsigned char* | 可供写入的加密后数据缓冲区 |
| buf_len | unsigned int | 可供写入的加密后数据缓冲区大小 |
返回值
加密后的数据
注意
setCustomizeEncryptHandler。class bytertc::IRTCRoomEventHandler
RTS房间事件回调接口
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
| 返回 | 名称 |
|---|---|
| virtual void | onVideoPublishStateChanged |
| virtual void | onAudioPublishStateChanged |
| virtual void | onVideoSubscribeStateChanged |
| virtual void | onAudioSubscribeStateChanged |
| virtual void | onTokenWillExpire |
| virtual void | onPublishPrivilegeTokenWillExpire |
| virtual void | onSubscribePrivilegeTokenWillExpire |
| virtual void | onRoomStats |
| virtual void | onRemoteStreamStats |
| virtual void | onUserJoined |
| virtual void | onUserPublishStreamVideo |
| virtual void | onUserPublishStreamAudio |
| virtual void | onVideoStreamBanned |
| virtual void | onAVSyncStateChange |
| virtual void | onAudioStreamBanned |
| virtual void | onForwardStreamStateChanged |
| virtual void | onForwardStreamEvent |
| virtual void | onNetworkQuality |
| virtual void | onSetRoomExtraInfoResult |
| virtual void | onRoomExtraInfoUpdate |
| virtual void | onRoomStreamExtraInfoUpdate |
| virtual void | onUserVisibilityChanged |
| virtual void | onSubtitleStateChanged |
| virtual void | onSubtitleMessageReceived |
| virtual void | onAVSyncEvent |
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_id | const char* | 流 ID。 |
| stream_info | const StreamInfo& | 流信息。 |
| state | PublishState | 发布状态码,参看 PublishState。 |
| reason | PublishStateChangeReason | 本地视频流发布状态改变的具体原因,参看 PublishStateChangeReason。 |
注意
除了本地视频流发布状态改变时触发,本端用户进房时也会收到本回调。
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_id | const char* | 流 ID。 |
| stream_info | const StreamInfo& | 流信息。 |
| state | PublishState | 发布状态码,参看 PublishState。 |
| reason | PublishStateChangeReason | 本地音频流发布状态改变的具体原因,参看 PublishStateChangeReason。 |
注意
除了状态改变时触发,本端用户进房时也会收到本回调。
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_id | const char* | 流 ID。 |
| stream_info | const StreamInfo& | 流信息。 |
| state | SubscribeState | 订阅状态码,参看 SubscribeState。 |
| reason | SubscribeStateChangeReason | 视频流订阅状态改变的具体原因,参看 SubscribeStateChangeReason。 |
注意
当调用 subscribeStreamVideo 后会收到该通知。
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_id | const char* | 流 ID。 |
| stream_info | const StreamInfo& | 流信息。 |
| state | SubscribeState | 订阅状态码,参看 SubscribeState。 |
| reason | SubscribeStateChangeReason | 音频订阅状态改变的具体原因,参看 SubscribeStateChangeReason。 |
注意
当调用 subscribeStreamAudio 后会收到该通知。
virtual void onTokenWillExpire() {
当 SDK 检测到 Token 的进房权限将在 30 秒内过期时,触发该回调。
收到该回调后,你需调用 updateToken 更新 Token 进房权限。
注意
若未能及时更新 Token 进房权限导致其过期而失效:
-1000 Token 过期;-1009 Token 过期,同时远端用户会收到 onUserLeave 回调,提示原因为 2 Token 进房权限过期。virtual void onPublishPrivilegeTokenWillExpire() {
Token 发布权限过期前 30 秒将触发该回调。
收到该回调后,你需调用 updateToken 更新 Token 发布权限。
注意
Token 发布权限过期后:
kPublishStateChangeReasonNoPublishPermission,没有发布权限。virtual void onSubscribePrivilegeTokenWillExpire() {
Token 订阅权限过期前 30 秒将触发该回调。
收到该回调后,你需调用 updateToken 更新 Token 订阅权限有效期。
注意
若收到该回调后未及时更新 Token,Token 订阅权限过期后,尝试新订阅流会失败,已订阅的流会取消订阅,并且会收到 onVideoSubscribeStateChanged、onAudioSubscribeStateChanged 回调,提示kSubscribeStateChangeReasonNoSubscribePermission,没有订阅权限。
virtual void onRoomStats(const RtcRoomStats& stats) { (void)stats; }
房间内通话统计信息回调。
用户进房开始通话后,每 2s 收到一次本回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stats | const RtcRoomStats& | 当前 RtcEngine 统计数据,详见 RtcRoomStats |
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_id | const char* | 流 ID。 |
| stream_info | const bytertc::StreamInfo& | 流信息。 |
| stats | const RemoteStreamStats& | 当前 RtcEngine 统计数据,详见 RemoteStreamStats |
virtual void onUserJoined(const UserInfo& user_info) { (void)user_info; }
远端可见用户加入房间,或房内不可见用户切换为可见的回调。
远端用户调用 setUserVisibility 方法将自身设为可见后加入房间时,房间内其他用户将收到该事件。
远端可见用户断网后重新连入房间时,房间内其他用户将收到该事件。
房间内隐身远端用户调用 setUserVisibility 方法切换至可见时,房间内其他用户将收到该事件。
新进房用户会收到进房前已在房内的可见用户的进房回调通知。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| user_info | const UserInfo& | 用户信息,详见 UserInfo |
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_id | const char* | 流 ID。 |
| stream_info | const StreamInfo& | 流信息。 |
| is_publish | bool | 流是否发布。
|
注意
当房间内的远端用户调用 publishStreamVideo 成功发布采集的视频流时,本地用户会收到该回调,此时本地用户可以自行选择是否调用 subscribeStreamVideo 订阅此流。
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_id | const char* | 流 ID。 |
| stream_info | const StreamInfo& | 流信息。 |
| is_publish | bool | 流是否发布。
|
注意
当房间内的远端用户调用 publishStreamAudio 成功发布音频流时,本地用户会收到该回调,此时本地用户可以自行选择是否调用 subscribeStreamAudio 订阅此流。
virtual void onVideoStreamBanned(const char* uid, bool banned) { (void)uid; (void)banned; }
通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户视频流的发送时,触发此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 被禁用/解禁的视频流用户 ID |
| banned | bool | 视频流发送状态
|
注意
virtual void onAVSyncStateChange(AVSyncState state) { (void)state; }
发布端调用 setMultiDeviceAVSync 后音视频同步状态发生改变时,会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| state | AVSyncState | 音视频同步状态,参看 AVSyncState。 |
virtual void onAudioStreamBanned(const char* uid, bool banned) { (void)uid; (void)banned; }
通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户音频流的发送时,触发此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 被禁用/解禁的音频流用户 ID |
| banned | bool | 音频流发送状态
|
注意
virtual void onForwardStreamStateChanged( ForwardStreamStateInfo* infos, int info_count ) { }
跨房间媒体流转发状态和错误回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| infos | ForwardStreamStateInfo* | 跨房间媒体流转发目标房间信息数组,详见 ForwardStreamStateInfo |
| info_count | int | 数组长度,代表目标房间数 |
virtual void onForwardStreamEvent( ForwardStreamEventInfo* infos, int info_count ) { }
跨房间媒体流转发事件回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| infos | ForwardStreamEventInfo* | 跨房间媒体流转发目标房间事件数组,详见 ForwardStreamEventInfo |
| info_count | int | 数组长度,代表目标房间数 |
virtual void onNetworkQuality( const NetworkQualityStats& local_quality, const NetworkQualityStats* remote_qualities, int remote_quality_num ) { }
加入房间并发布或订阅流后, 以每 2 秒一次的频率,报告本地用户和已订阅的远端用户的上下行网络质量信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| local_quality | const NetworkQualityStats& | 本端网络质量,详见 NetworkQualityStats。 |
| remote_qualities | const NetworkQualityStats* | 已订阅用户的网络质量,详见 NetworkQualityStats。 |
| remote_quality_num | int | remoteQualities 数组长度 |
注意
更多通话中的监测接口,详见通话中质量监测。
virtual void onSetRoomExtraInfoResult(int64_t task_id, SetRoomExtraInfoResult result) { (void)task_id; (void)result; }
Available since 3.52.
调用 setRoomExtraInfo 设置房间附加信息结果的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| task_id | int64_t | 调用 setRoomExtraInfo 的任务编号。 |
| result | SetRoomExtraInfoResult | 设置房间附加信息的结果,详见 SetRoomExtraInfoResult |
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 设置的房间附加信息的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| key | const char* | 房间附加信息的键值 |
| value | const char* | 房间附加信息的内容 |
| last_update_user_id | const char* | 最后更新本条信息的用户 ID。 |
| last_update_time_ms | int64_t | 最后更新本条信息的 Unix 时间,单位:毫秒。 |
注意
新进房的用户会收到进房前房间内已有的全部附加信息通知。
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_id | const char* | 流 ID |
| stream_info | const StreamInfo& | 流信息,详见 StreamInfo |
| extra_info | const char* | 流附加信息的内容 |
注意
新进房的用户会收到进房前房间内已有的全部附加信息通知。
virtual void onUserVisibilityChanged(bool current_user_visibility, UserVisibilityChangeError error_code) { (void)current_user_visibility; (void)error_code; }
Available since 3.54
用户调用 setUserVisibility 设置用户可见性的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| current_user_visibility | bool | 当前用户的可见性。
|
| error_code | UserVisibilityChangeError | 设置用户可见性错误码,参看 UserVisibilityChangeError。 |
virtual void onSubtitleStateChanged( SubtitleState state, SubtitleErrorCode error_code, const char* error_message ) { }
字幕状态发生改变回调。
当用户调用 startSubtitle 和 stopSubtitle 使字幕状态发生改变或出现错误时,触发该回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| state | SubtitleState | 字幕状态。参看 SubtitleState。 |
| error_code | SubtitleErrorCode | 字幕任务错误码。参看 SubtitleErrorCode。 |
| error_message | const char* | 与第三方服务有关的错误信息。 |
virtual void onSubtitleMessageReceived( const SubtitleMessage* subtitles, int cnt ) { }
字幕相关内容回调。
当用户调用 startSubtitle 后会收到此回调,通知字幕的相关信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| subtitles | const SubtitleMessage* | 字幕消息内容。参看 SubtitleMessage。 |
| cnt | int | 字幕消息个数。 |
virtual void onAVSyncEvent( const char* room_id, const char* uid, AVSyncEvent event ) { }
Available since 3.60.
发布端调用 setMultiDeviceAVSync 后音视频同步状态发生错误时,会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| room_id | const char* | 房间 ID。 |
| uid | const char* | 用户 ID。 |
| event | AVSyncEvent | 音视频同步状态错误,参看 AVSyncEvent。 |
class bytertc::IExternalVideoEncoderEventHandler
自定义编码帧回调类
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
| 返回 | 名称 |
|---|---|
| virtual void | onStart |
| virtual void | onStop |
| virtual void | onRateUpdate |
| virtual void | onRequestKeyFrame |
| virtual void | onActiveVideoLayer |
virtual void onStart( const char* stream_id, const StreamInfo& stream_info ) = 0;
提示自定义编码帧可以开始推送的回调。
收到该回调后,你即可调用 pushExternalEncodedVideoFrame 向 SDK 推送自定义编码视频帧
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 编码流 ID |
| stream_info | const StreamInfo& | 编码流信息,参看 StreamInfo |
virtual void onStop( const char* stream_id, const StreamInfo& stream_info ) = 0;
当收到该回调时,你需停止向 SDK 推送自定义编码视频帧
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 编码流 ID |
| stream_info | const StreamInfo& | 编码流信息,参看 StreamInfo |
virtual void onRateUpdate( const char* stream_id, const StreamInfo& stream_info, int32_t video_index, VideoRateInfo info ) = 0;
当自定义编码流的帧率或码率发生变化时,触发该回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 远端编码流 ID |
| stream_info | const StreamInfo& | 远端编码流信息,参看 StreamInfo |
| video_index | int32_t | 对应编码流的下标 |
| info | VideoRateInfo | 变化后的编码流信息,参看 VideoRateInfo |
virtual void onRequestKeyFrame( const char* stream_id, const StreamInfo& stream_info, int32_t video_index ) = 0;
提示流发布端需重新生成关键帧的回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 远端编码流 ID |
| stream_info | const StreamInfo& | 远端编码流信息,参看 StreamInfo |
| video_index | int32_t | 对应编码流的下标 |
virtual void onActiveVideoLayer( const char* stream_id, const StreamInfo& stream_info, int32_t video_index, bool active ) = 0;
Available since 3.56
作为自定义编码视频流的发送端,你会在视频流可发送状态发生变化时,收到此回调。
你可以根据此回调的提示,仅对可发送的视频流进行编码,以降低本端视频编码性能消耗。此回调会根据多个因素综合判断触发,包括:本端设备性能和本端网络性能,以及按需订阅场景下,远端用户是否订阅。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 远端编码流 ID |
| stream_info | const StreamInfo& | 远端编码流信息,参看 StreamInfo |
| video_index | int32_t | 对应编码流的下标 |
| active | bool | 该路流可发送状态 |
注意
要收到此回调,必须调用 setVideoSourceType 设置视频源是自定义编码,且通过 setExternalVideoEncoderEventHandler 设置了回调句柄。
class bytertc::IMediaPlayerAudioFrameObserver
本地音频文件混音的音频帧观察者。
| 返回 | 名称 |
|---|---|
| virtual void | onFrame |
virtual void onFrame( int player_id, const IAudioFrame& frame ) = 0;
当本地音频文件混音时,回调播放的音频帧。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| player_id | int | 播放器 ID |
| frame | const IAudioFrame& | 参看 IAudioFrame。 |
class bytertc::IFaceDetectionObserver
人脸检测结果回调观察者
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
| 返回 | 名称 |
|---|---|
| virtual void | onFaceDetectResult |
virtual void onFaceDetectResult(const FaceDetectResult& result) = 0;
特效 SDK 进行人脸检测结果的回调。
调用 enableFaceDetection 注册了 IFaceDetectionObserver,并使用 RTC SDK 中包含的特效 SDK 进行视频特效处理时,你会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| result | const FaceDetectResult& | 人脸检测结果, 参看 FaceDetectResult。 |
class bytertc::IMediaPlayerCustomSourceProvider
内存播放数据源回调
| 返回 | 名称 |
|---|---|
| virtual int | onReadData |
| virtual int64_t | onSeek |
| virtual | ~IMediaPlayerCustomSourceProvider |
virtual int onReadData( uint8_t*buffer, int buffer_size ) = 0;
Available since 3.53
调用 openWithCustomSource 接口播放用户传入的内存音频数据时,会触发此回调,用户需要写入音频数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| buffer | uint8_t* | 内存地址。在该地址中写入音频数据,写入音频数据的大小不超过 bufferSize 中填入的数值。支持的音频数据格式有:mp3,aac,m4a,3gp,wav。 |
| buffer_size | int | 音频数据大小,单位为字节。如果你想停止播放内存音频数据,可在 bufferSize 中填入小于或等于 0 的数,此时 SDK 会停止调用此接口。 |
返回值
返回实际读取的音频数据大小。
注意
若 openWithCustomSource 接口调用失败,请在 buffer 和 bufferSize 两个参数中填入 0。 此时 SDK 会停止调用此接口。
virtual int64_t onSeek( int64_t offset, MediaPlayerCustomSourceSeekWhence whence ) = 0;
Available since 3.53
根据设置好的内存音频数据的读取位置和读取偏移量对音频数据进行偏移,以便 SDK 读取和分析音频数据。
在调用 openWithCustomSource 接口传入内存音频数据,或者调用 setPosition 设置了音频数据的起始播放位置后,SDK 会对音频数据进行读取和分析,此时会触发该回调,你需要根据参数中设置的起始读取位置和偏移量进行操作。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| offset | int64_t | 音频数据读取偏移量,单位为字节,取值可正可负。 |
| whence | MediaPlayerCustomSourceSeekWhence | 音频数据的起始读取位置。参看 MediaPlayerCustomSourceSeekWhence |
返回值
定位成功,返回偏移后的位置信息,或返回音频数据的大小。
定位失败,返回 -1。
virtual ~IMediaPlayerCustomSourceProvider() {}
class bytertc::IAudioFrameObserver
音频数据回调观察者
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
本接口类中的回调周期均为 20 ms。
| 返回 | 名称 |
|---|---|
| virtual void | onRecordAudioFrame |
| virtual void | onPlaybackAudioFrame |
| virtual void | onRemoteUserAudioFrame |
| virtual void | onMixedAudioFrame |
| virtual void | onRecordScreenAudioFrame |
| virtual void | onCaptureMixedAudioFrame |
virtual void onRecordAudioFrame(const IAudioFrame& audio_frame) = 0;
返回麦克风录制的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_frame | const IAudioFrame& | 音频数据, 详见:IAudioFrame |
virtual void onPlaybackAudioFrame(const IAudioFrame& audio_frame) = 0;
返回订阅的所有远端用户混音后的音频数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_frame | const IAudioFrame& | 音频数据, 详见:IAudioFrame |
virtual void onRemoteUserAudioFrame( const char* stream_id, const StreamInfo& stream_info, const IAudioFrame& audio_frame ) = 0;
返回远端单个用户的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 远端流 ID。 |
| stream_info | const StreamInfo& | 远端流信息,参看 StreamInfo。 |
| audio_frame | const IAudioFrame& | 音频数据, 参看 IAudioFrame。 |
注意
此回调在播放线程调用。不要在此回调中做任何耗时的事情,否则可能会影响整个音频播放链路。
virtual void onMixedAudioFrame(const IAudioFrame& audio_frame) = 0;
返回本地麦克风录制和订阅的所有远端用户混音后的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_frame | const IAudioFrame& | 音频数据, 详见:IAudioFrame |
virtual void onRecordScreenAudioFrame(const IAudioFrame& audio_frame) { }
返回本地屏幕录制的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_frame | const IAudioFrame& | 音频数据, 详见:IAudioFrame |
virtual void onCaptureMixedAudioFrame(const IAudioFrame& audio_frame) = 0;
返回本地麦克风录制的音频数据,本地 MediaPlayer / EffectPlayer 播放音频文件混音后的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_frame | const IAudioFrame& | 音频数据, 详见:IAudioFrame |
class bytertc::IRTSRoomEventHandler
实时信令事件回调接口
| 返回 | 名称 |
|---|---|
| virtual void | onRoomStateChanged |
| virtual void | onLeaveRoom |
| virtual void | onUserJoined |
| virtual void | onUserLeave |
| virtual void | onRoomMessageReceived |
| virtual void | onRoomBinaryMessageReceived |
| virtual void | onRoomMessageSendResult |
| virtual void | onUserMessageReceived |
| virtual void | onUserBinaryMessageReceived |
| virtual void | onUserMessageSendResult |
| virtual void | onRoomMessageReceived |
| virtual void | onRoomBinaryMessageReceived |
| virtual void | onUserMessageReceived |
| virtual void | onUserBinaryMessageReceived |
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_id | const char* | 房间 ID。 |
| uid | const char* | 用户 ID。 |
| state | int | 房间状态码。
|
| extra_info | const char* | 额外信息,如 {"elapsed":1187,"join_type":0}。join_type表示加入房间的类型,0为首次进房,1为重连进房。elapsed表示加入房间耗时,即本地用户从调用 joinRoom 到加入房间成功所经历的时间间隔,单位为 ms。 |
virtual void onLeaveRoom(const RtcRoomStats& stats) { (void)stats; }
离开房间回调。
用户调用 leaveRoom 方法后,SDK 会停止所有的发布订阅流,并在释放所有与通话相关的音频资源后,通过此回调通知用户离开房间成功。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stats | const RtcRoomStats& | 保留参数,目前为空。 |
注意
用户调用 leaveRoom 方法离开房间后,如果立即调用 destroy 销毁房间实例方法销毁 RTS 引擎,则将无法收到此回调事件。
离开房间后,如果 App 需要使用系统音频设备,则建议收到此回调后再初始化音频设备,否则可能由于 SDK 占用音频设备而导致初始化失败。
virtual void onUserJoined(const UserInfo& user_info) { (void)user_info; }
远端用户加入房间的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| user_info | const UserInfo& | 用户信息,详见 UserInfo |
virtual void onUserLeave(const char* uid, UserOfflineReason reason) { (void)uid; (void)reason; }
远端用户离开房间时,本地用户会收到此事件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 离开房间的远端用户 ID。 |
| reason | UserOfflineReason | 用户离开房间的原因。参看 UserOfflineReason。 |
virtual void onRoomMessageReceived(const char* uid, const char* message) { (void)uid; (void)message; }
接收到房间内广播消息的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 消息发送者 ID。 |
| message | const char* | 收到的消息内容。 |
注意
同一房间内其他用户调用 sendRoomMessage 发送广播消息时会收到该回调。
virtual void onRoomBinaryMessageReceived(const char* uid, int size, const uint8_t* message) { (void)uid; (void)size; (void)message; }
接收到房间内二进制广播消息的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 消息发送者 ID。 |
| size | int | 收到的二进制消息长度 |
| message | const uint8_t* | 收到的二进制消息内容。 |
注意
同一房间内其他用户调用 sendRoomBinaryMessage 发送二进制广播消息时会收到该回调。
virtual void onRoomMessageSendResult(int64_t msgid, int error) { (void)msgid; (void)error; }
当调用 sendRoomMessage 函数发送消息后,回调此条消息的发送结果(反馈)。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 消息的 ID。 |
| error | int | 消息发送结果。详见 RoomMessageSendResult。 |
virtual void onUserMessageReceived(const char* uid, const char* message) { (void)uid; (void)message; }
该接口将于 3.64 被 onUserMessageReceived 代替。
收到来自房间中其他用户通过 sendUserMessage 发来的点对点文本消息时,会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 消息发送者 ID 。 |
| message | const char* | 收到的文本消息内容。 |
注意
你必须先调用 sendUserMessage 方法,才能收到该回调。
virtual void onUserBinaryMessageReceived(const char* uid, int size, const uint8_t* message) { (void)uid; (void)size; (void)message; }
收到来自房间中其他用户通过 sendUserBinaryMessage 发来的点对点二进制消息时,会收到此回调。
该接口将于 3.64 被 onUserBinaryMessageReceived 代替。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 消息发送者 ID。 |
| size | int | 收到的消息长度。 |
| message | const uint8_t* | 收到的二进制消息内容。 |
virtual void onUserMessageSendResult(int64_t msgid, int error) { (void)msgid; (void)error; }
向房间内单个用户发送文本或二进制消息后(P2P),消息发送方会收到该消息发送结果回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 消息的 ID。 |
| error | int | 文本或二进制消息发送结果,详见 UserMessageSendResult |
注意
你必须先调用 sendUserMessage 或 sendUserBinaryMessage 接口,才能收到此回调。
virtual void onRoomMessageReceived(int64_t msgid, const char* uid, const char* message) { (void)msgid; (void)uid; (void)message; }
接收到房间内广播消息的回调。
同一房间内其他用户调用 sendUserMessage 发送广播消息时会收到该回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 消息编号。 |
| uid | const char* | 消息发送者的 ID。 |
| message | const char* | 收到的消息内容。 |
virtual void onRoomBinaryMessageReceived(int64_t msgid, const char* uid, const uint8_t* message, int size) { (void)msgid; (void)uid; (void)message; (void)size; }
收到房间内广播二进制消息的回调。
房间内其他用户调用 sendRoomBinaryMessage 发送广播二进制消息时,收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 消息编号。 |
| uid | const char* | 消息发送者 ID。 |
| message | const uint8_t* | 收到的二进制消息内容。 |
| size | int | 收到的二进制消息长度。 |
注意
同一房间内其他用户调用 sendRoomBinaryMessage 发送二进制广播消息时会收到该回调。
virtual void onUserMessageReceived(int64_t msgid, const char* uid, const char* message) { (void)msgid; (void)uid; (void)message; }
收到来自房间中其他用户通过 sendUserMessage 发来的点对点文本消息时,会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 消息编号。 |
| uid | const char* | 消息发送者 ID。 |
| message | const char* | 收到的文本消息内容。 |
注意
你必须先调用 sendUserMessage 方法,才能收到该回调。
virtual void onUserBinaryMessageReceived(int64_t msgid, const char* uid, const uint8_t* message, int size) { (void)msgid; (void)uid; (void)message; (void)size; }
收到来自房间中其他用户通过 sendUserBinaryMessage 发来的点对点二进制消息时,会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 消息编号。 |
| uid | const char* | 消息发送者 ID 。 |
| message | const uint8_t* | 收到的二进制消息内容。 |
| size | int | 消息长度。 |
class bytertc::IMediaPlayerEventHandler
IMediaPlayer 对应的回调句柄。你必须调用 setEventHandler 完成设置后,才能收到对应回调。
| 返回 | 名称 |
|---|---|
| virtual | ~IMediaPlayerEventHandler |
| virtual void | onMediaPlayerStateChanged |
| virtual void | onMediaPlayerPlayingProgress |
| virtual void | onMediaPlayerEvent |
virtual ~IMediaPlayerEventHandler() {}
virtual void onMediaPlayerStateChanged( int player_id, PlayerState state, PlayerError error ) = 0;
播放状态改变时回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| player_id | int | IMediaPlayer 的 ID。通过 getMediaPlayer 设置。 |
| state | PlayerState | 混音状态。参考 PlayerState。 |
| error | PlayerError | 错误码。参考 PlayerError。 |
virtual void onMediaPlayerPlayingProgress( int player_id, int64_t progress ) = 0;
播放进度周期性回调。回调周期通过 setProgressInterval 设置。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| player_id | int | IMediaPlayer 的 ID。通过 getMediaPlayer 设置。 |
| progress | int64_t | 进度。单位 ms。 |
virtual void onMediaPlayerEvent( int player_id, PlayerEvent event, const char* message ) = 0;
Available since 3.59
播放事件回调。调用 selectAudioTrack 和 setPosition 后,会触发此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| player_id | int | IMediaPlayer 的 ID。通过 getMediaPlayer 设置。 |
| event | PlayerEvent | 播放器事件。参看 PlayerEvent。 |
| message | const char* | 事件描述信息,可能为空。 |
class bytertc::IRTCEngineEventHandler
音视频引擎事件回调接口
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
virtual void onWarning(int warn) { (void)warn; }
发生警告回调。
SDK 运行时出现了警告。SDK 通常会自动恢复,警告信息可以忽略。
你可能需要干预。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| warn | int | 警告标识码,详见:WarningCode |
virtual void onError(int err) { (void)err; }
发生错误回调。
SDK 运行时出现了网络或媒体相关的错误,且无法自动恢复时触发此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| err | int | 错误标识码,参看 ErrorCode |
virtual void onExtensionAccessError( const char* extension_name, const char* msg ) {
Available since 3.52
当访问插件失败时,收到此回调。
RTC SDK 将一些功能封装成插件。当使用这些功能时,如果插件不存在,功能将无法使用。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| extension_name | const char* | 插件名字 |
| msg | const char* | 失败说明 |
virtual void onLogReport(const char* log_type, const char* log_content) { (void)log_type; (void)log_content; }
上报日志时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| log_type | const char* | 事件类型。目前类型固定为 "live_webrtc_monitor_log"。 |
| log_content | const char* | 端监控日志内容。 |
virtual void onConnectionStateChanged(bytertc::ConnectionState state) { }
SDK 与信令服务器连接状态改变回调。连接状态改变时触发。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| state | bytertc::ConnectionState | 当前 SDK 与信令服务器的连接状态,详见 ConnectionState。 |
注意
更多信息参见 连接状态提示。
virtual void onNetworkTypeChanged(bytertc::NetworkType type) { }
SDK 当前网络连接类型改变回调。当 SDK 的当前网络连接类型发生改变时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | bytertc::NetworkType | SDK 当前的网络连接类型,详见:NetworkType 。 |
virtual void onSimulcastSubscribeFallback(const char* stream_id, const StreamInfo& stream_info, const bytertc::RemoteStreamSwitch& event) { (void)stream_id; (void)stream_info; (void)event; }
音视频流因网络环境变化等原因发生回退,或从回退中恢复时,触发该回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 流 ID |
| stream_info | const StreamInfo& | 流信息, 参看 StreamInfo。 |
| event | const bytertc::RemoteStreamSwitch& | 音视频流发生变化的信息。参看 RemoteStreamSwitch。 |
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_id | const char* | 流 ID |
| stream_info | const StreamInfo& | 流信息,参看 StreamInfo |
| mode | bytertc::PerformanceAlarmMode | 指示本地是否开启发布性能回退功能。参看 PerformanceAlarmMode
|
| reason | bytertc::PerformanceAlarmReason | 告警原因,参看 PerformanceAlarmReason |
| data | const bytertc::SourceWantedData& | 性能回退相关数据,详见 SourceWantedData。 |
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_id | const char* | 设备 ID。 |
| device_type | bytertc::RTCAudioDeviceType | 设备类型,详见 RTCAudioDeviceType |
| device_state | bytertc::MediaDeviceState | 设备状态,详见 MediaDeviceState |
| device_error | bytertc::MediaDeviceError | 设备错误类型,详见 MediaDeviceError |
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_id | const char* | 设备 ID。采集屏幕共享流时,设备 ID 为固定字符串 screen_capture_video |
| device_type | bytertc::RTCVideoDeviceType | 设备类型,详见 RTCVideoDeviceType |
| device_state | bytertc::MediaDeviceState | 设备状态,详见 MediaDeviceState |
| device_error | bytertc::MediaDeviceError | 设备错误类型,详见 MediaDeviceError |
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_id | const char* | 设备 ID |
| device_type | bytertc::RTCAudioDeviceType | 详见 RTCAudioDeviceType |
| device_warning | bytertc::MediaDeviceWarning | 详见 MediaDeviceWarning |
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_id | const char* | 设备 ID |
| device_type | bytertc::RTCVideoDeviceType | 详见 RTCVideoDeviceType |
| device_warning | bytertc::MediaDeviceWarning | 详见 MediaDeviceWarning |
virtual void onSysStats(const bytertc::SysStats& stats) { }
周期性(2s)发出回调,报告当前 CPU 与内存的相关信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stats | const bytertc::SysStats& | 包含当前 CPU 与内存相关信息的结构体。详见 SysStats。 |
virtual void onRecordingStateUpdate( IVideoSource* video_source, RecordingState state, RecordingErrorCode error_code, RecordingInfo info) { }
获取本地录制状态回调。
该回调由 startFileRecording 或 stopFileRecording 触发。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| video_source | IVideoSource* | 预留参数 |
| state | RecordingState | 录制状态,参看 RecordingState |
| error_code | RecordingErrorCode | 录制错误码,参看 RecordingErrorCode |
| info | RecordingInfo | 录制文件的详细信息,参看 RecordingInfo |
virtual void onRecordingProgressUpdate( IVideoSource* video_source, RecordingProgress process, RecordingInfo info ) { }
本地录制进度回调。
该回调由 startFileRecording 触发,录制状态正常时,系统每秒钟都会通过该回调提示录制进度。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| video_source | IVideoSource* | 预留参数。 |
| process | RecordingProgress | 录制进度,参看 RecordingProgress |
| info | RecordingInfo | 录制文件的详细信息,参看 RecordingInfo |
virtual void onAudioRecordingStateUpdate( AudioRecordingState state, AudioRecordingErrorCode error_code ) { }
调用 startAudioRecording 或 stopAudioRecording 改变音频文件录制状态时,收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| state | AudioRecordingState | 录制状态,参看 AudioRecordingState |
| error_code | AudioRecordingErrorCode | 录制错误码,参看 AudioRecordingErrorCode |
virtual void onLoginResult(const char* uid, int error_code, int elapsed) { (void)uid; (void)error_code; (void)elapsed; }
登录结果回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 登录用户 ID |
| error_code | int | 登录结果 详见 LoginErrorCode。 |
| elapsed | int | 从调用 login 接口开始到返回结果所用时长 单位为 ms。 |
注意
调用 login 后,会收到此回调。
virtual void onLogout(LogoutReason reason) { }
登出结果回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| reason | LogoutReason | 用户登出的原因,参看 LogoutReason |
注意
在以下两种情况下会收到此回调:调用 logout 接口主动退出;或其他用户以相同 UserId 进行 login 导致本地用户被动登出。
virtual void onServerParamsSetResult(int error) { (void)error; }
设置应用服务器参数的返回结果
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| error | int | 设置结果
|
注意
调用 setServerParams 后,会收到此回调。
virtual void onGetPeerOnlineStatus(const char* peer_user_id, int status) { (void)peer_user_id; (void)status; }
查询对端或本端用户登录状态的返回结果
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| peer_user_id | const char* | 需要查询的用户 ID |
| status | int | 查询的用户登录状态 详见 UserOnlineStatus. |
注意
必须先调用 getPeerOnlineStatus,才能收到此回调。
virtual void onUserMessageReceivedOutsideRoom(const char* uid, const char* message) { (void)uid; (void)message; }
该接口将于 3.64 版本废弃,请使用 onUserMessageReceivedOutsideRoom 代替。
收到房间外用户调用 sendUserMessageOutsideRoom 发来的文本消息时,会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 消息发送者 ID。 |
| message | const char* | 收到的文本消息内容。 |
virtual void onUserBinaryMessageReceivedOutsideRoom(const char* uid, int size, const uint8_t* message) { (void)uid; (void)size; (void)message; }
该接口将于 3.64 被 onUserBinaryMessageReceivedOutsideRoom 代替。
收到房间外用户调用 sendUserBinaryMessageOutsideRoom 发来的二进制消息时,会收到此回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char* | 消息发送者 ID。 |
| size | int | 收到的二进制消息长度。 |
| message | const uint8_t* | 收到的二进制消息内容。 |
virtual void onUserMessageSendResultOutsideRoom(int64_t msgid, int error) { (void)msgid; (void)error; }
给房间外指定的用户发送消息的结果回调。
当调用 sendUserMessageOutsideRoom 或 sendUserBinaryMessageOutsideRoom 发送消息后,会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 本条消息的 ID。 所有的 P2P 和 P2Server 消息共用一个 ID 序列。 |
| error | int | 消息发送结果。详见 UserMessageSendResult。 |
virtual void onUserMessageReceivedOutsideRoom(int64_t msgid, const char* uid, const char* message) { (void)msgid; (void)uid; (void)message; }
收到房间外用户调用 sendUserMessageOutsideRoom 发来的文本消息时,会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 收到的文本消息编号。 |
| uid | const char* | 消息发送者 ID。 |
| message | const char* | 收到的文本消息的内容。 |
virtual void onUserBinaryMessageReceivedOutsideRoom(int64_t msgid, const char* uid, const uint8_t* message, int size) { (void)msgid; (void)uid; (void)message; (void)size; }
当收到来自房间外用户通过 sendUserBinaryMessageOutsideRoom 发送的二进制消息时,触发此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 本条消息的 ID。 |
| uid | const char* | 消息发送者的用户 ID。 |
| message | const uint8_t* | 收到的二进制消息内容。 |
| size | int | 二进制消息的长度,单位为字节。 |
virtual void onServerMessageSendResult(int64_t msgid, int error, const bytertc::ServerACKMsg& msg) { (void)msgid; (void)error; (void)msg; }
给应用服务器发送消息的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msgid | int64_t | 本条消息的 ID。 所有的 P2P 和 P2Server 消息共用一个 ID 序列。 |
| error | int | 消息发送结果,详见 UserMessageSendResult。 |
| msg | const bytertc::ServerACKMsg& | 应用服务器收到 HTTP 请求后,在 ACK 中返回的信息。消息不超过 64 KB。 |
注意
本回调为异步回调。当调用 sendServerMessage 或 sendServerBinaryMessage 接口发送消息后,会收到此回调。
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_id | const char* | 收到 SEI 消息的视频流 ID |
| stream_info | const StreamInfo& | 包含 SEI 发送者的用户名,所在的房间名和媒体流, 参看 StreamInfo |
| message | const uint8_t* | 收到的 SEI 消息内容 |
| length | int | 收到的 SEI 消息长度 |
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_id | const char* | 收到 SEI 消息的视频流 ID |
| stream_info | const StreamInfo& | 包含 SEI 发送者的用户名,所在的房间名和媒体流, 参看 StreamInfo |
| type | SEIStreamEventType | 黑帧视频流状态,参看 SEIStreamEventType |
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_infos | const RemoteAudioPropertiesInfo* | 远端音频信息,其中包含音频流属性、房间 ID、用户 ID ,详见 RemoteAudioPropertiesInfo。 |
| audio_properties_info_number | int | 数组长度 |
| total_remote_volume | int | 所有订阅的远端流混音后的音量,范围是 [0,255]。
|
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_infos | const LocalAudioPropertiesInfo* | 本地音频信息,详见 LocalAudioPropertiesInfo。本地音量可通过 setAudioCaptureDeviceVolume 设置。 |
| audio_properties_info_number | int | 数组长度 |
virtual void onAudioPlaybackDeviceTestVolume(int volume) { (void)volume; }
回调音频设备测试时的播放音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 音频设备测试播放音量。取值范围:[0,255] |
注意
调用 startAudioPlaybackDeviceTest,开始播放音频文件时,将开启该回调。本回调为周期性回调,回调周期由上述接口的 interval 参数指定。
virtual void onAudioDeviceVolumeChanged(bytertc::RTCAudioDeviceType device_type, int volume, bool muted) { (void)device_type; (void)volume; (void)muted; }
音频设备音量改变回调。当通过系统设置,改变音频设备音量或静音状态时,触发本回调。本回调无需手动开启。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_type | bytertc::RTCAudioDeviceType | 设备类型,包括麦克风和扬声器,参阅 RTCAudioDeviceType。 |
| volume | int | 音量值,[0, 255]。当 volume 变为 0 时,muted 会变为 True。 |
| muted | bool | 是否禁音状态。扬声器被设置为禁音时,muted 为 True,但 volume 保持不变。 |
virtual void onLocalAudioStateChanged(IAudioSource* audio_source, LocalAudioStreamState state, LocalAudioStreamError error) { (void)audio_source; (void)state; (void)error; }
本地音频流的状态发生改变时,收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_source | IAudioSource* | 本地音频流对象,详见:IAudioSource |
| state | LocalAudioStreamState | 本地音频流的状态,详见:LocalAudioStreamState |
| error | LocalAudioStreamError | 本地音频状态改变时的错误码,详见:LocalAudioStreamError |
virtual void onUserStartAudioCapture(const char* stream_id, const StreamInfo& stream_info) { (void)stream_id; (void)stream_info; }
房间内的用户调用 startAudioCapture 开启音频采集时,房间内其他用户会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 开启音频采集的远端用户发布的流 ID |
| stream_info | const StreamInfo& | 开启音频采集的远端流信息,详见 StreamInfo |
virtual void onUserStopAudioCapture(const char* stream_id, const StreamInfo& stream_info) { (void)stream_id; (void)stream_info; }
房间内的用户调用 stopAudioCapture 关闭音频采集时,房间内其他用户会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 关闭音频采集的远端用户发布的流 ID |
| stream_info | const StreamInfo& | 关闭音频采集的远端流信息,详见 StreamInfo |
virtual void onActiveSpeaker(const char* room_id, const char* uid) { (void)room_id; (void)uid; }
调用 enableAudioPropertiesReport 后,根据设置的 config.interval,你会周期性地收到此回调,获取房间内的最活跃用户信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| room_id | const char* | 房间 ID |
| uid | const char* | 最活跃用户(ActiveSpeaker)的用户 ID |
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_id | const char* | 远端流 ID |
| stream_info | const StreamInfo& | 远端流信息,详见 StreamInfo。 |
| stream_type | SyncInfoStreamType | 媒体流类型,详见 SyncInfoStreamType 。 |
| data | const uint8_t* | 消息内容。 |
| length | int32_t | 消息长度。 |
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 收到一次该回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | NetworkDetectionLinkType | 探测网络类型为上行/下行 |
| quality | NetworkQuality | 探测网络的质量,参看 NetworkQuality。 |
| rtt | int | 探测网络的 RTT,单位:ms |
| lost_rate | double | 探测网络的丢包率 |
| bitrate | int | 探测网络的带宽,单位:kbps |
| jitter | int | 探测网络的抖动,单位:ms |
virtual void onNetworkDetectionStopped(NetworkDetectionStopReason reason){ (void)reason; }
通话前网络探测结束
以下情况将停止探测并收到一次本回调:
当调用 stopNetworkDetection 接口停止探测后,会收到一次该回调;
当收到远端/本端音频首帧后,停止探测;
当探测超过 3 分钟后,停止探测;
当探测链路断开一定时间之后,停止探测。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| reason | NetworkDetectionStopReason | 停止探测的原因类型,参考 NetworkDetectionStopReason |
virtual void onUserStartVideoCapture(const char* stream_id, const StreamInfo& stream_info) { (void)stream_id; (void)stream_info; }
房间内的可见用户调用 startVideoCapture 开启内部视频采集时,房间内其他用户会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 视频流 ID |
| stream_info | const StreamInfo& | 视频流信息,详见 StreamInfo。 |
virtual void onUserStopVideoCapture(const char* stream_id, const StreamInfo& stream_info) { (void)stream_id; (void)stream_info; }
房间内的可见用户调用 stopVideoCapture 关闭内部视频采集时,房间内其他用户会收到此回调。
若发布视频数据前未开启采集,房间内所有可见用户会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 视频流 ID |
| stream_info | const StreamInfo& | 视频流信息,详见 StreamInfo。 |
virtual void onLocalVideoSizeChanged(IVideoSource* video_source, const VideoFrameInfo& info) { (void)video_source; (void)info; }
本地视频大小或旋转信息发生改变时,收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| video_source | IVideoSource* | 预留参数。 |
| info | const VideoFrameInfo& | 视频帧信息。参看 VideoFrameInfo。 |
virtual void onRemoteVideoSizeChanged(const char* stream_id, const StreamInfo& stream_info, const VideoFrameInfo& info) { (void)stream_id; (void)stream_info; (void)info; }
远端视频大小或旋转信息发生改变时,房间内订阅此视频流的用户会收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 远端视频流 ID。 |
| stream_info | const StreamInfo& | 远端视频流信息。参看 StreamInfo。 |
| info | const VideoFrameInfo& | 视频帧信息。参看 VideoFrameInfo。 |
virtual void onFirstLocalVideoFrameCaptured(IVideoSource* video_source, const VideoFrameInfo& info) { (void)video_source; (void)info; }
RTC SDK 在本地完成第一帧视频帧或屏幕视频帧采集时,收到此回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| video_source | IVideoSource* | 视频源对象。参看 IVideoSource。 |
| info | const VideoFrameInfo& | 视频信息。参看 VideoFrameInfo。 |
注意
对于采集到的本地视频帧,你可以调用 setLocalVideoCanvas 或 setLocalVideoSink 在本地渲染。
virtual void onFirstRemoteAudioFrame(const char* stream_id, const StreamInfo& stream_info) { (void)stream_id; (void)stream_info; }
订阅端接收并解码远端音频流首帧时,收到此回调。包含以下情况:
发布端发布音频,包含首次发布和取消后再次发布。取消发布还包括发布端主动退房后或掉线。
发布端关闭音频采集后,再次打开采集。使用外部源时,停止推流后再次推流。
发布端发布音频后,订阅端取消订阅音频后,又再次订阅音频。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 远端音频流 ID。 |
| stream_info | const StreamInfo& | 远端音频流信息,参看 StreamInfo。 |
注意
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_id | const char* | 远端音频流 ID。 |
| stream_info | const StreamInfo& | 远端音频流信息,参看 StreamInfo。 |
| state | RemoteAudioState | 远端音频流状态,参看 RemoteAudioState |
| reason | RemoteAudioStateChangeReason | 远端音频流状态改变的原因,参看 RemoteAudioStateChangeReason |
virtual void onLocalVideoStateChanged(IVideoSource* video_source, LocalVideoStreamState state, LocalVideoStreamError error) { (void)video_source; (void)state; (void)error; }
本地视频流的状态发生改变时,收到该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| video_source | IVideoSource* | 本地视频流对象。参看 IVideoSource。 |
| state | LocalVideoStreamState | 本地视频流状态,参看 LocalVideoStreamState |
| error | LocalVideoStreamError | 本地视频状态改变时的错误码,参看 LocalVideoStreamError |
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_id | const char* | 远端视频流 ID。 |
| stream_info | const StreamInfo& | 远端视频流信息,包括房间 ID、用户 ID、流属性,等。参看 StreamInfo。 |
| state | RemoteVideoState | 远端视频流状态,参看 RemoteVideoState。 |
| reason | RemoteVideoStateChangeReason | 远端视频流状态改变的原因,参看 RemoteVideoStateChangeReason。 |
注意
本回调仅适用于主流,不适用于屏幕流。
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_id | const char* | 音频发布用户所在的房间 ID |
| stream_info | const StreamInfo& | 音频流信息,详见 StreamInfo |
| user | const RtcUser& | 本地用户信息,详见 RtcUser |
| state | FirstFrameSendState | 首帧发送状态,详见 FirstFrameSendState |
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_id | const char* | 流 ID。 |
| stream_info | const StreamInfo& | 视频流信息,详见 StreamInfo |
| user | const RtcUser& | 本地用户信息,详见 RtcUser |
| state | FirstFrameSendState | 首帧发送状态,详见 FirstFrameSendState |
virtual void onFirstRemoteVideoFrameRendered(const char* stream_id, const StreamInfo& stream_info, const VideoFrameInfo& info) { (void)stream_id; (void)stream_info; (void)info; }
SDK 内部渲染成功远端视频流首帧后,收到此回调。包含以下情况:
发布端首次发布视频
在 1 条件下,发布端取消发布视频后,再次发布视频
在 1 条件下,发布端关闭视频采集后,再次打开采集(或使用外部源时,停止推流后再次推流)
在 1 条件下,订阅端取消订阅视频后,再次订阅视频(调用接口包括 subscribeAllStreamsVideo,pauseAllSubscribedStreamVideo/resumeAllSubscribedStreamVideo)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 远端视频流 ID。 |
| stream_info | const StreamInfo& | 远端视频流信息。参看 StreamInfo。 |
| info | const VideoFrameInfo& | 视频帧信息。参看 VideoFrameInfo。 |
注意
仅在采用内部渲染时,符合上述策略。
virtual void onFirstRemoteVideoFrameDecoded(const char* stream_id, const StreamInfo& stream_info, const VideoFrameInfo& info) { (void)stream_id; (void)stream_info; (void)info; }
订阅端接收并解码远端视频流首帧时,收到此回调。包含以下情况:
发布端发布视频,包含首次发布和取消后再次发布。取消发布还包括发布端主动退房后或掉线。
发布端关闭视频采集后,再次打开采集。使用外部源时,停止推流后再次推流。
发布端发布视频后,订阅端取消订阅视频后,又再次订阅视频。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 远端视频流 ID。 |
| stream_info | const StreamInfo& | 远端视频流信息。参看 StreamInfo。 |
| info | const VideoFrameInfo& | 视频帧信息。参看 VideoFrameInfo。 |
注意
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_id | const char* | 音频首帧播放状态发生改变的流 ID |
| stream_info | const StreamInfo& | 音频首帧播放状态发生改变的流信息,详见 StreamInfo |
| user | const RtcUser& | 远端用户信息,详见 RtcUser |
| state | FirstFramePlayState | 首帧播放状态,详见 FirstFramePlayState |
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_id | const char* | 视频首帧播放状态发生改变的流 ID |
| stream_info | const StreamInfo& | 视频首帧播放状态发生改变的流信息,详见 StreamInfo |
| user | const RtcUser& | 远端用户信息,详见 RtcUser |
| state | FirstFramePlayState | 首帧播放状态,详见 FirstFramePlayState |
virtual void onFirstLocalAudioFrame(IAudioSource* audio_source) { (void)audio_source; }
发布音频流时,采集到第一帧音频帧,收到该回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_source | IAudioSource* | 音频源,详见 IAudioSource。 |
注意
如果发布音频流时,未开启本地音频采集,SDK 会推送静音帧,也会收到此回调。
virtual void onCloudProxyConnected(int interval) { (void)interval; }
调用 startCloudProxy 开启云代理,SDK 首次成功连接云代理服务器时,回调此事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| interval | int | 从开启云代理到连接成功经过的时间,单位为 ms |
virtual void onLicenseQuotaExceeded(const char* message) { (void)message; }
AIGC(AI 音视频互动方案)使用 License 计费的场景下,当 License 配额用尽时,会收到该回调。收到该回调时,AIGC 服务会中止,请及时续费,并且建议离开房间、销毁 SDK。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| message | const char* | 回调消息 |
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_type | LocalProxyType | 本地代理类型。参看 LocalProxyType。 |
| local_proxy_state | LocalProxyState | 本地代理状态。参看 LocalProxyState。 |
| local_proxy_error | LocalProxyError | 本地代理错误。参看 LocalProxyError。 |
virtual void onAudioMixingPlayingProgress( int mix_id, int64_t progress ) { }
Deprecated since 3.54, use onMediaPlayerPlayingProgress instead.
混音音频文件播放进度回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
| progress | int64_t | 当前混音音频文件播放进度,单位毫秒 |
注意
调用 setAudioMixingProgressInterval 将时间间隔设为大于 0 的值后,或调用 startAudioMixing 将 AudioMixingConfig 中的时间间隔设为大于 0 的值后,SDK 会按照设置的时间间隔回调该事件。
class bytertc::IWTNStreamEventHandler
WTN 事件回调接口。
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
| 返回 | 名称 |
|---|---|
| virtual | ~IWTNStreamEventHandler |
| virtual void | onWTNRemoteVideoStats |
| virtual void | onWTNRemoteAudioStats |
| virtual void | onWTNVideoSubscribeStateChanged |
| virtual void | onWTNAudioSubscribeStateChanged |
| virtual void | onWTNFirstRemoteAudioFrame |
| virtual void | onWTNFirstRemoteVideoFrameDecoded |
| virtual void | onWTNSEIMessageReceived |
| virtual void | onWTNDataMessageReceived |
virtual ~IWTNStreamEventHandler() { }
virtual void onWTNRemoteVideoStats(const char* stream_id, RemoteVideoStats stats) { (void)stream_id; (void)stats; }
Available since 3.60.
通话中本地设备接收订阅的远端 WTN 视频流的流 ID 以及远端 WTN 视频流统计信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | WTN 流 ID |
| stats | RemoteVideoStats | 远端 WTN 视频流的统计信息,详见 RemoteVideoStats。 |
virtual void onWTNRemoteAudioStats(const char* stream_id, RemoteAudioStats stats) { (void)stream_id; (void)stats; }
Available since 3.60.
通话中本地设备接收订阅的远端 WTN 音频流的流 ID 以及远端 WTN 音频流统计信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | WTN 流 ID |
| stats | RemoteAudioStats | 远端 WTN 音频流的统计信息,详见 RemoteAudioStats |
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_id | const char* | WTN 视频流的 ID |
| state_code | WTNSubscribeState | 视频流状态码,参看 WTNSubscribeState。 |
| reason | WTNSubscribeStateChangeReason | 订阅状态发生变化的原因,参看 WTNSubscribeStateChangeReason。 |
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_id | const char* | WTN 音频流的 ID |
| state_code | WTNSubscribeState | 音频流状态码,参看 WTNSubscribeState。 |
| reason | WTNSubscribeStateChangeReason | 订阅状态发生变化的原因,参看 WTNSubscribeStateChangeReason。 |
virtual void onWTNFirstRemoteAudioFrame(const char* stream_id) { (void)stream_id; }
Available since 3.60. 自 3.60 起,该回调替代了
onFirstPublicStreamAudioFrame。如果你已升级至 3.60 及以上版本,并且仍在使用该方法,请迁移到此回调。
WTN 流的首帧音频解码成功
关于订阅 WTN 音频流,详见 subscribeWTNAudioStream。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | WTN 流 ID |
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_id | const char* | WTN 流 ID |
| info | const VideoFrameInfo& | 视频帧信息。详见 VideoFrameInfo。 |
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_id | const char* | WTN 流 ID。 |
| channel_id | int | SEI 的消息传输通道,取值范围 [0 - 255]。通过此参数,你可以为不同接收方设置不同的 ChannelID,这样不同接收方可以根据回调中的 ChannelID 选择应关注的 SEI 信息。 |
| message | const uint8_t* | 收到的 SEI 消息内容。 通过调用客户端 sendSEIMessage 插入的 SEI 信息。 当 WTN 流中的多路视频流均包含有 SEI 信息:SEI 不互相冲突时,将通过多次回调分别发送;SEI 在同一帧有冲突时,则只有一条流中的 SEI 信息被透传并融合到 WTN 流中。 |
| length | int | SEI 信息的长度。 |
注意
通过 Open API 插入的自定义信息,应通过回调 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_id | const char* | WTN 流 ID |
| message | const uint8_t* | 收到的数据消息内容,如下:
|
| message_length | int | 消息的长度 |
| source_type | DataMessageSourceType | 数据消息来源,参看 DataMessageSourceType。 |
注意
通过调用客户端 API 插入的 SEI 信息,应通过回调 onWTNSEIMessageReceived 获取。
class bytertc::IAudioFrameProcessor
自定义音频处理器。
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
| 返回 | 名称 |
|---|---|
| virtual int | onProcessRecordAudioFrame |
| virtual int | onProcessPlayBackAudioFrame |
| virtual int | onProcessRemoteUserAudioFrame |
| virtual int | onProcessScreenAudioFrame |
virtual int onProcessRecordAudioFrame(IAudioFrame& audio_frame) = 0;
回调本地采集的音频帧地址,供自定义音频处理。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_frame | IAudioFrame& | 音频帧地址,参看 IAudioFrame |
注意
virtual int onProcessPlayBackAudioFrame(IAudioFrame& audio_frame) = 0;
回调远端音频混音的音频帧地址,供自定义音频处理。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_frame | IAudioFrame& | 音频帧地址,参看 IAudioFrame |
注意
调用 enableAudioProcessor,并在参数中选择远端音频流的混音音频时,每 10 ms 收到此回调。
virtual int onProcessRemoteUserAudioFrame( const char* stream_id, const StreamInfo& stream_info, IAudioFrame& audio_frame ) = 0;
回调单个远端用户的音频帧地址,供自定义音频处理。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_id | const char* | 远端流 ID。 |
| stream_info | const StreamInfo& | 远端流信息, 参看 StreamInfo。 |
| audio_frame | IAudioFrame& | 音频帧地址,参看 IAudioFrame |
注意
调用 enableAudioProcessor,并在参数中选择各个远端音频流时,每 10 ms 收到此回调。
virtual int onProcessScreenAudioFrame(IAudioFrame& audio_frame) = 0;
屏幕共享的音频帧地址回调。你可根据此回调自定义处理音频。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_frame | IAudioFrame& | 音频帧地址,参看 IAudioFrame。 |
注意
调用 enableAudioProcessor,把返回给音频处理器的音频类型设置为屏幕共享音频后,每 10 ms 收到此回调。
class bytertc::ILocalEncodedVideoFrameObserver
本地视频帧监测器
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
| 返回 | 名称 |
|---|---|
| virtual void | onLocalEncodedVideoFrame |
virtual void onLocalEncodedVideoFrame( IVideoSource*video_source, const IEncodedVideoFrame& video_stream ) = 0;
调用 registerLocalEncodedVideoFrameObserver 后,SDK 每次使用内部采集,采集到一帧视频帧,或收到一帧外部视频帧时,都会回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| video_source | IVideoSource* | 预留参数。 |
| video_stream | const IEncodedVideoFrame& | 本地视频帧信息,参看 IEncodedVideoFrame |