@protocol ByteRtcEngineDelegate <NSObject>
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didOccurWarning:(ByteRtcWarningCode)Code;
发生警告回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RTCEngine 对象 |
| Code | ByteRtcWarningCode | 警告代码,详情定义见: ByteRtcWarningCode |
注意
该回调方法表示SDK运行时出现了(网络或媒体相关的)警告。通常情况下,SDK 上报的警告信息 App 可以忽略,SDK 会自动恢复。
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didOccurError:(ByteRtcErrorCode)errorCode;
发生错误回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RTCEngine 对象 |
| errorCode | ByteRtcErrorCode | 错误代码,详情定义见: ByteRtcErrorCode |
注意
表示SDK运行时出现了(网络或媒体相关的)错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。
- (void)rtcEngineConnectionDidInterrupted:(ByteRtcEngineKit * _Nonnull)engine;
SDK 与信令服务器连接中断回调。当 SDK 检测到与信令服务器的网络连接中断时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RTCEngine 实例。 |
注意
- (void) rtcEngine:(ByteRtcEngineKit * _Nonnull)engine connectionChangedToState:(ByteRtcConnectionState) state;
回调 SDK 与信令服务器连接状态相关事件。当 SDK 与信令服务器的网络连接状态改变时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RTCEngine 实例。 |
| state | ByteRtcConnectionState | 当前信令服务器连接状态,详见:ByteRtcConnectionState 。 |
- (void) rtcEngine:(ByteRtcEngineKit * _Nonnull)engine networkTypeChangedToType:(ByteRtcNetworkType) type;
SDK 当前网络连接类型改变回调。当 SDK 的当前网络连接类型发生改变时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RTCEngine 实例。 |
| type | ByteRtcNetworkType | SDK 当前的网络连接类型,详见:ByteRtcNetworkType 。 |
- (void)rtcEngineConnectionDidLost:(ByteRtcEngineKit * _Nonnull)engine;
SDK 与信令服务器连接断开回调。当 SDK 与信令服务器的网络连接断开超过 10 秒时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RTCEngine 实例。 |
注意
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didJoinChannel:(NSString * _Nonnull)channel withUid:(nonnull NSString*)uid elapsed:(NSInteger) elapsed;
加入房间成功回调。此回调事件表示本地用户成功加入了指定的房间。
用户调用 joinChannelByKey:channelName:info:uid: 方法加入房间,首次加入房间成功后 SDK 通过此回调事件通知用户加入房间成功。此回调事件在用户调用 joinChannelByKey:channelName:info:uid: 方法加入房间到用户调用 leaveChannel: 方法离开房间期间至多回调一次。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| channel | NSString* | 房间ID 。本地用户加入的房间的房间 ID 。 |
| uid | NSString* | 用户ID 。本地用户的用户ID 。 |
| elapsed | NSInteger | 加入房间耗时。本地用户从调用 joinChannelByKey:channelName:info:uid: 方法到加入房间成功所经历的时间间隔,单位为 ms 。 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didRejoinChannel:(NSString * _Nonnull)channel withUid:(nonnull NSString*)uid elapsed:(NSInteger) elapsed;
重新加入房间成功回调。此回调事件表示本地用户成功重连入房间。
本地用户加入房间成功后,在本地网络状况不佳的情况下,SDK 可能会与服务器失去连接。此时 SDK 将会自动重连,并在重连成功通过此回调事件通知用户重连成功。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| channel | NSString* | 房间ID 。本地用户加入的房间的房间ID 。 |
| uid | NSString* | 用户ID 。本地用户的用户ID 。 |
| elapsed | NSInteger | 重连耗时。本地用户从连接断开到重连成功所经历的时间间隔,单位为 ms 。 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didJoinedOfUid:(nonnull NSString*)uid elapsed:(NSInteger)elapsed;
远端用户加入房间回调。
此回调用于提示房间中有新用户加入。如果本地用户已经在房间中,有新的远端用户加入时,SDK 通过此回调方法通知房间中有新用户加入;如果用户加入房间前,房间中已有其他用户,加入房间后用户也会收到这些已在房间中的远端用户的加入房间回调。
回调的具体触发时机如下:
1.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,调用 joinChannelByKey:channelName:info:uid: 方法加入房间。
2.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,在断网后重连入房间。
3.远端已在房间中的房间模式为直播、游戏或云游戏模式的静默观众角色的用户,调用 setClientRole: 方法将用户角色切换至主播或观众。
4.本地用户加入房间时,会收到已在房间中的远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户的加入房间回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| uid | NSString* | 用户ID 。新加入的远端用户的用户ID 。 |
| elapsed | NSInteger | 本地用户调用 joinChannelByKey:channelName:info:uid: 加入房间到收到该事件经历的时间,单位为 ms 。 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didOfflineOfUid:(NSString* _Nonnull )uid reason:(ByteRtcUserOfflineReason)reason;
远端用户离开房间回调。
此回调用于提示房间中有远端用户离开。用户离开房间的原因有两个,即用户主动调用 leaveChannel: 方法离开房间和超时掉线。
回调的具体触发时机如下:
1.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,调用 leaveChannel: 方法离开房间。用户离开的原因为 ByteRtc_UserOffline_Quit。
2.远端已在房间中的房间模式为直播、游戏或云游戏模式的主播、观众角色的用户调用 setClientRole: 方法将用户角色切换至静默观众。用户离开的原因为 ByteRtc_UserOffline_Quit。
3.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,断网且一直未恢复。用户离开的原因为 ByteRtc_UserOffline_Dropped。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| uid | NSString* | 用户ID 。离开房间的远端用户的用户ID 。 |
| reason | ByteRtcUserOfflineReason | 用户离开的原因,详见枚举类型 ByteRtcUserOfflineReason 。 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didAudioMuted:(BOOL)muted byUid:(NSString * _Nonnull)uid;
远端用户将其本地音频流静音时,房间内其他人会收到这个回调。 该回调由远端用户调用 muteLocalAudioStreammuteLocalAudioStream: 方法触发。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit对象 |
| muted | BOOL | 该用户是否已将其本地音频流静音 • YES: 该用户已将其本地音频流静音 • NO: 该用户已将其本地音频流取消了静音 |
| uid | NSString* | 远端用户 ID |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didLocalAudioEnabled:(BOOL)enabled byUid:(NSString * _Nonnull)uid;
远端用户开启/关闭音频设备采集回调 提示有远端用户已开启/关闭音频设备采集,该回调由远端用户调用 enableLocalAudio: 方法触发
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit对象 |
| enabled | BOOL | YES: 该用户开启了音频设备采集;NO: 该用户关闭了音频设备采集 |
| uid | NSString* | 远端用户ID |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine firstRemoteAudioFrameOfUid:(NSString * _Nonnull)uid elapsed:(NSInteger)elapsed;
当收到远端流的第一帧音频的时候上报该事件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| uid | NSString* | 远端用户ID |
| elapsed | NSInteger | 从开始订阅音频流到收到该事件经历的时间(毫秒单位) |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine reportAudioVolumeIndicationOfSpeakers:(NSArray<ByteRtcAudioVolumeInfo *> * _Nonnull)speakers totalVolume:(NSInteger)totalVolume;
通话音量提示的回调。回调当前房间内每个用户的音量、总音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | RtcEngine 实例 |
| speakers | NSArray |
房间内用户的音量信息的数组,每个用户音量信息详见类型 ByteRtcAudioVolumeInfo,包括发送流与接收流 |
| totalVolume | NSInteger | 房间内的总音量大小,只包括接收流 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didVideoMuted:(BOOL)muted byUid:(NSString * _Nonnull)uid;
远端用户暂停/重新发送视频回调。房间中远端用户调用 muteLocalVideoStream: 时,本地用户将会收到该回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| muted | BOOL | YES:远端用户恢复发送视频流;NO:远端用户暂停发送视频流 |
| uid | NSString* | 调用 muteLocalVideoStream: 接口的远端用户ID |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didLocalVideoEnabled:(BOOL)enabled byUid:(NSString * _Nonnull)uid;
远端用户启用/关闭本地视频回调。房间中远端用户调用 enableLocalVideo: 时,本地用户将会收到该回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| enabled | BOOL | YES: 远端用户启动了本地视频;NO: 远端用户关闭了本地视频 |
| uid | NSString* | 调用 enableLocalVideo: 接口的远端用户ID |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine firstLocalVideoFrameWithSize:(CGSize)size elapsed:(NSInteger)elapsed;
本地首帧视频数据渲染事件回调。调用 joinChannelByKey:channelName:info:uid: 后,渲染本地首帧视频数据前的事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| size | CGSize | 视频的宽高尺寸 |
| elapsed | NSInteger | 从调用 joinChannelByKey:channelName:info:uid: 到渲染本地首帧视频数据前的总耗时(ms) |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine firstRemoteVideoFrameOfUid:(NSString* _Nonnull )uid size:(CGSize)size elapsed:(NSInteger)elapsed;
远端首帧视频数据渲染事件回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| uid | NSString* | 发送当前帧的远端用户的用户ID |
| size | CGSize | 视频的宽高尺寸 |
| elapsed | NSInteger | 从开始订阅远端流到开始渲染远端首帧视频数据事件的总耗时(ms) |
- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine videoSizeChangedOfUid:(NSString * _Nonnull)uid size:(CGSize)size __attribute__((deprecated("Deprecated, please use a new interface")));
远端视频数据size变化事件。调用 joinChannelByKey:channelName:info:uid: 后,远端视频尺寸变化事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| uid | NSString* | 当前帧所属的用户ID |
| size | CGSize | 视频的宽高尺寸 |
- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine videoSizeChangedOfUid:(NSString * _Nonnull)uid size:(CGSize)size rotation:(ByteVideoRotation)rotation;
远端视频数据 size 变化事件。调用 joinChannelByKey:channelName:info:uid: 后,远端视频数据尺寸变化事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| uid | NSString* | 图像尺寸和旋转信息发生变化的用户的用户ID |
| size | CGSize | 视频的宽高尺寸 |
| rotation | ByteVideoRotation | 视频旋转信息,详见类型 ByteVideoRotation |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine firstRemoteVideoDecodedOfUid:( NSString* _Nonnull )uid size:(CGSize)size elapsed:(NSInteger)elapsed;
远端首帧视频数据解码事件回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| uid | NSString* | 发送当前帧的远端用户的用户ID |
| size | CGSize | 视频的宽高尺寸 |
| elapsed | NSInteger | 从开始订阅远端流到远端视频首帧解码事件的总耗时(ms) |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine firstRemoteScreenFrameOfUid:(NSString* _Nonnull )uid size:(CGSize)size elapsed:(NSInteger)elapsed;
远端首帧屏幕数据渲染事件回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象,参考: ByteRtcEngineKit |
| uid | NSString* | 发送当前帧的远端用户的用户ID |
| size | CGSize | 视频的宽高尺寸 |
| elapsed | NSInteger | 从开始订阅远端流到开始渲染远端首帧屏幕数据事件的总耗时 (ms) |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine firstRemoteScreenDecodedOfUid:( NSString* _Nonnull )uid size:(CGSize)size elapsed:(NSInteger)elapsed;
远端首帧屏幕数据解码事件回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象,参考: ByteRtcEngineKit |
| uid | NSString* | 发送当前帧的远端用户的用户ID |
| size | CGSize | 视频的宽高尺寸 |
| elapsed | NSInteger | 从开始订阅远端流到远端屏幕首帧解码事件的总耗时 (ms) |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine remoteVideoStateChangedOfUid:(NSString * _Nonnull)uid state:(ByteVideoRemoteState)state;
远端视频流状态发生改变回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象,参考: ByteRtcEngineKit |
| uid | NSString* | 发生视频流状态改变的远端用户的用户ID |
| state | ByteVideoRemoteState | 变更后的远端视频流状态,详见类型 ByteVideoRemoteState |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didMirrorStateChanged:(BOOL)mirrored;
本地视频镜像状态发生改变回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| mirrored | BOOL | 当前是否开启镜像 • true:当前本地视频状态为开启镜像 • false:当前本地视频状态为关闭镜像 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didMediaDeviceStateChanged:(ByteMediaDeviceType)device_type device_state:(ByteMediaDeviceState)device_state;
设备开启、停止状态通知
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_type | ByteMediaDeviceType | 设备类型,详见 ByteMediaDeviceType |
| device_state | ByteMediaDeviceState | 设备状态,详见 ByteMediaDeviceState |
注意
当前正在使用中的设备开启成功/失败,停止成功/失败时回调该事件,目前仅支持音频录制设备和播放设备。
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine firstLocalAudioFrame:(NSInteger)elapsed;
当收到本地第一帧音频的时候上报该事件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| elapsed | NSInteger | 从开始发布音频流到收到该事件经历的时间(毫秒单位) |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine onStreamAdd:(id <ByteStream> _Nonnull)stream;
房间内新流发布回调。
房间内的远端用户发布新的音视频流时,本地用户会收到此回调通知。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| stream | id |
流的属性,详见 ByteStream 数据类型。 |
- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine didStreamRemoved:(NSString *_Nonnull)uid stream:(id<ByteStream> _Nonnull)stream reason:(RtcStreamRemoveReason)reason;
房间内远端流移除回调。
房间内的远端用户停止发布音视频流时,本地用户会收到此回调通知。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| uid | NSString* | 用户ID 。远端流的发布用户的用户ID 。 |
| stream | id |
流的属性,详见 ByteStream 数据类型。 |
| reason | RtcStreamRemoveReason | 远端流移除的原因,详见枚举类型 RtcStreamRemoveReason 。 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didAudioRouteChanged:(ByteAudioOutputRouting)routing;
音频路由变化时回调该事件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| routing | ByteAudioOutputRouting | 新的音频路由,详见 ByteAudioOutputRouting |
注意
音频路由设置与音频路由策略详见 setEnableSpeakerphonesetEnableSpeakerphone:
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didCustomMessage:(NSString * _Nonnull)message;
广播消息回调。接收到房间内的广播消息时触发。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| message | NSString* | 收到的消息内容。 |
注意
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine reportRtcStats:(ByteRtcStats * _Nonnull)stats;
房间通话数据回调。
用户加入当前房间成功后,SDK 会周期性(2s)的通过此回调事件通知用户当前房间内的汇总统计信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| stats | ByteRtcStats* | 房间内的汇总统计数据,详见 ByteRtcStats 数据类型。 |
- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine networkQuality:(NSString*_Nonnull)uid txQuality:(ByteNetworkQuality)txQuality rxQuality:(ByteNetworkQuality)rxQuality;
通话中用户的媒体流网络上下行质量报告回调。加入房间成功后,每隔 2 秒会触发此回调,通知房间内用户与媒体服务器之间数据交互的网络质量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RTCEngine 实例。 |
| uid | NSString* | 回调的网络质量报告所属用户的用户 ID 。 |
| txQuality | ByteNetworkQuality | uid 所属用户的媒体流上行网络质量。 |
| rxQuality | ByteNetworkQuality | uid 所属用户的媒体流下行网络质量。 |
注意
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine localVideoStats:(ByteRtcLocalVideoStats * _Nonnull)stats;
发布视频流数据统计回调。
本地用户发布视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的视频流在此次统计周期内的质量统计信息。统计信息通过 ByteRtcLocalVideoStats 类型的回调参数传递给用户,其中包括发送视频比特率、发送帧率、编码帧率等。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| stats | ByteRtcLocalVideoStats* | 发布视频流质量统计数据,详见 ByteRtcLocalVideoStats 数据类型。 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine remoteVideoStats:(ByteRtcRemoteVideoStats * _Nonnull)stats;
订阅视频流数据统计回调。
本地用户订阅视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的视频流在此次统计周期内的质量统计信息。统计信息通过 ByteRtcRemoteVideoStats 类型的回调参数传递给用户,其中包括视频宽高、接收带宽、帧率及卡顿等信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| stats | ByteRtcRemoteVideoStats* | 订阅视频流质量统计数据,详见 ByteRtcRemoteVideoStats 数据类型。 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine localAudioStats:(ByteRtcLocalAudioStats * _Nonnull)stats;
通话中订阅音频流质量报告回调。包括发送音频比特率,音频丢包率等
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | RtcEngine 实例 |
| stats | ByteRtcLocalAudioStats* | 发布音频流质量,参见 ByteRtcLocalAudioStats |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine remoteAudioStats:(ByteRtcRemoteAudioStats * _Nonnull)stats;
通话中订阅音频流质量报告回调。包括订阅音频流的发布者的 uid、接收音频比特率、音频丢包率及卡顿信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | RtcEngine 实例 |
| stats | ByteRtcRemoteAudioStats* | 订阅音频流质量,参见 ByteRtcRemoteAudioStats |
- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine localAudioStateChanged:(ByteLocalAudioStreamState)state error:(ByteLocalAudioStreamError)error;
本地音频的状态发生改变时,该回调通知当前的本地音频状态。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| state | ByteLocalAudioStreamState | 本地音频设备的状态,详见: ByteLocalAudioStreamState |
| error | ByteLocalAudioStreamError | 本地音频状态改变时的错误码,详见:ByteLocalAudioStreamError |
- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine remoteAudioStateChanged:(NSString *_Nonnull)uid state:(ByteRemoteAudioState)state reason:(ByteRemoteAudioReason)reason elapsed:(NSInteger)elapsed;
远端用户音频状态发生改变时,该回调通知当前的远端音频流状态。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| uid | NSString* | 该远端流的用户id |
| state | ByteRemoteAudioState | 远端音频流状态,详见:ByteRemoteAudioState |
| reason | ByteRemoteAudioReason | 远端音频流状态改变的原因,详见:ByteRemoteAudioReason |
| elapsed | NSInteger | 耗时,从加入房间到该事件发生经历的时间 |
- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine localVideoStateChanged:(ByteLocalVideoStreamState)state error:(ByteLocalVideoStreamError)error;
本地视频的状态发生改变时,该回调返回当前的本地视频状态。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| state | ByteLocalVideoStreamState | 本地视频状态 |
| error | ByteLocalVideoStreamError | 本地音频状态改变时的错误码 |
- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine remoteVideoStateChanged:(NSString *_Nonnull)uid state:(ByteRemoteVideoState)state reason:(ByteRemoteVideoReason)reason elapsed:(NSInteger)elapsed;
远端用户视频状态发生改变时,该回调报告当前的远端视频流状态。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象 |
| uid | NSString* | 该远端流的用户ID |
| state | ByteRemoteVideoState | 远端视频流状态 |
| reason | ByteRemoteVideoReason | 远端视频流状态改变的原因 |
| elapsed | NSInteger | 耗时,暂未实现 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didMessageReceived:(NSString * _Nonnull)uid message:(NSString * _Nonnull)message;
点对点消息回调。接收到同一房间内 uid 所属用户发来消息时触发。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RTCEngine 实例。 |
| uid | NSString* | 消息发送者 ID 。 |
| message | NSString* | 收到的消息内容。 |
注意
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didMessageSendResult:(long)msgid error:(MessageCode)error;
点对点消息发送结果回调。当调用 sendMessage:message: 函数发送消息后,回调此条消息的发送结果(反馈)。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RTCEngine 实例。 |
| msgid | long | 本条消息的 ID 。 |
| error | MessageCode | 消息发送结果,详见枚举类型 MessageCode。 |
- (void)rtcEngine:(ByteRtcEngineKit* _Nonnull)engine log:(NSDictionary* _Nonnull)dict;
SDK 内部日志回调。
SDK 内部运行时,会把日志回调给业务方,方便排查问题。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| dict | NSDictionary* | 日志内容。 |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine audioQualityOfUid:(NSString* _Nonnull )uid quality:(ByteNetworkQuality)quality delay:(NSUInteger)delay lost:(NSUInteger)lost;
音频质量通知。通知业务方,当前通话中的音频质量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前 RtcEngine |
| uid | NSString* | 当前帧所属的用户 id |
| quality | ByteNetworkQuality | 质量等级,参见 ByteNetworkQuality |
| delay | NSUInteger | 音频包从发送端到接收端的延迟(毫秒)。包括声音采样前处理、网络传输、网络抖动缓冲引起的延迟 |
| lost | NSUInteger | 音频包从发送端到接收端的丢包率(%) |
- (void)rtcEngineLocalAudioMixingDidFinish:(ByteRtcEngineKit *_Nonnull)engine;
音乐文件混音结束回调。SDK通过此回调通知应用层音乐文件混音结束。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前RTC SDK对象 |
- (void)rtcEngineDidAudioEffectFinish:(ByteRtcEngineKit *_Nonnull)engine soundId:(NSInteger)soundId;
音效文件混音结束回调。SDK通过此回调通知应用层音效文件混音结束
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前RTC SDK对象 |
| soundId | NSInteger | 音效ID |
- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine TransCodingWithUrl:(NSString * _Nonnull)url errorCode:(ByteRtcTransCodeingErrorCode)errorCode;
直播推流转码状态回调。
用户调用 enableLiveTranscoding: 方法启动直播推流转码功能后,直播推流转码功能启动成功或失败时、推流过程中发生错误时,SDK 通过此回调通知用户对应的状态事件。
回调事件为错误状态事件时,App 需根据功能状态码的处理建议做对应的处理,如通知用户或重试等。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | ByteRtcEngineKit 对象。 |
| url | NSString* | 推流地址。直播推流的地址,为 URL 地址。 |
| errorCode | ByteRtcTransCodeingErrorCode | 直播推流转码功能状态码,详见枚举类型 ByteRtcTransCodeingErrorCode 。 |
- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine OnRemoteStreamSwitch:(ByteRemoteStreamSwitchEvent *_Nonnull)event;
收到远端流回退或恢复时回调该事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engine | ByteRtcEngineKit* | 当前RTCEngine 实例 |
| event | ByteRemoteStreamSwitchEvent* | 远端流回退或恢复数据。详见 ByteRemoteStreamSwitchEvent。 |
@protocol ByteAudioDeviceObserver <NSObject>
音频外部设备事件监听,只用于自定义音频采集渲染的情况 SDK内部需要控制外部设备时,通过这个事件监听类通知上层应用
| 返回 | 名称 |
|---|---|
| void | onAudioDeviceRecordStart |
| void | onAudioDeviceRecordStop |
| void | onAudioDevicePlayoutStart |
| void | onAudioDevicePlayoutStop |
- (void)onAudioDeviceRecordStart;
通知上层应用开启音频采集设备
- (void)onAudioDeviceRecordStop;
通知上层应用关闭音频采集设备
- (void)onAudioDevicePlayoutStart;
通知上层应用开启音频播放设备
- (void)onAudioDevicePlayoutStop;
通知上层应用关闭音频播放设备
@protocol ByteAudioFrameObserver <NSObject>
音频数据代理
| 返回 | 名称 |
|---|---|
| void | onRecordAudioFrame: |
| void | onPlaybackAudioFrame: |
| void | onMixedAudioFrame: |
- (void)onRecordAudioFrame:(ByteAudioFrame * _Nonnull)audioFrame;
返回麦克风录制的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteAudioFrame* | 麦克风录制的音频数据, 详见:ByteAudioFrame |
- (void)onPlaybackAudioFrame:(ByteAudioFrame * _Nonnull)audioFrame;
返回远端所有用户混音后的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteAudioFrame* | 远端所有用户混音后的音频数据, 详见:ByteAudioFrame |
- (void)onMixedAudioFrame:(ByteAudioFrame * _Nonnull)audioFrame;
返回本地麦克风录制和远端所有用户混音后的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteAudioFrame* | 本地麦克风录制和远端所有用户混音后的音频数据, 详见:ByteAudioFrame |
@protocol ByteRtcEngineMediaMetadataObserver <NSObject>
使用内部源视频采集时,配置和获取附加数据接口
| 返回 | 名称 |
|---|---|
| NSData* | videoFrameMediaMetaDataAtTime: |
| void | receiveVideoFrameFromUID:withExtendedData:atTimestamp: |
- (NSData *_Nullable)videoFrameMediaMetaDataAtTime:(NSTimeInterval)timestamp;
当 SDK 准备发送一个视频帧时,会回调该接口,以确定是否需要在该视频帧中添加 metadata
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| timestamp | NSTimeInterval | 待添加 metadata 视频帧的时间戳,单位微秒 |
返回值
待发送的数据,大小不能超过 1024bytes
注意
- (void)receiveVideoFrameFromUID:(NSString * _Nonnull)uid withExtendedData:(NSData* _Nullable)extendedData atTimestamp:(NSTimeInterval)timestamp;
当 SDK 收到的视频帧包含 medatada 时,会回调该接口
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 当前帧所属的用户ID |
| extendedData | NSData* | metadata |
| timestamp | NSTimeInterval | 包含 metadata 视频帧的时间戳,单位为微秒 |
注意
回调中不能做长时间逻辑处理,以免影响视频卡顿
@protocol ByteEncryptHandler <NSObject>
自定义加密接口
| 返回 | 名称 |
|---|---|
| NSData* | ByteEngineEncryptRawData: |
| NSData* | ByteEngineDecryptRawData: |
- (NSData * _Nonnull)ByteEngineEncryptRawData:(NSData * _Nonnull)rawData;
自定义加密的方法接口
通过继承并实现该方法,可以扩展传输过程中的加密方法,
详见 setCustomizeEncryptHandler:
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| rawData | NSData* | 原始音视频帧数据 |
返回值
返回加密后的数据
+ 非空,表示加密后的数据
+ 为空,表示丢弃该帧
注意
返回的数据大小应控制在原始数据的90%~120%范围以内,不然将被丢弃
- (NSData * _Nonnull)ByteEngineDecryptRawData:(NSData * _Nonnull)rawData;
自定义解密的方法接口
通过继承并实现该方法,可以扩展传输过程中的解密方法,
详见 setCustomizeEncryptHandler:
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| rawData | NSData* | 原始音视频帧数据 |
返回值
返回解密后的数据
+ 非空,表示解密后的数据
+ 为空,表示丢弃该帧
注意
返回的数据大小应控制在原始数据的90%~120%范围以内,不然将被丢弃
@protocol ByteVideoSinkProtocol <NSObject>
自定义的视频渲染
| 返回 | 名称 |
|---|---|
| BOOL | shouldInitialize |
| void | shouldStart |
| void | shouldStop |
| void | shouldDispose |
| ByteVideoPixelFormat | pixelFormat |
| void | renderPixelBuffer:rotation:extendedData: |
- (BOOL)shouldInitialize;
初始化渲染器
返回值
注意
初始化渲染器的时候会回调这个方法
- (void)shouldStart;
启动渲染器
注意
在开启渲染功能的时候会回调这个方法
- (void)shouldStop;
停止渲染器
注意
在停止渲染功能的时候会回调这个方法
- (void)shouldDispose;
释放渲染器
注意
渲染器即将被废弃的时候会回调这个方法
- (ByteVideoPixelFormat)pixelFormat;
获取PixelFormat格式
返回值
Buffer 类型,ByteVideoPixelFormat
注意
通过该方法的返回值,告知 SDK PixelFormat 的格式
- (void)renderPixelBuffer:(CVPixelBufferRef _Nonnull)pixelBuffer rotation:(ByteVideoRotation)rotation extendedData:(NSData * _Nullable)extendedData;
输出视频的 PixelBuffer
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| pixelBuffer | CVPixelBufferRef | 视频的 PixelBuffer |
| rotation | ByteVideoRotation | 视频旋转角度,ByteVideoRotation |
| extendedData | NSData* | 视频帧附加的数据,视频解码后获得的附加数据 |
注意
通过该方法获取视频的 PixelBuffer
@protocol ByteVideoFrameObserver <NSObject>
| 返回 | 名称 |
|---|---|
| void | onLocalScreenFrame: |
| void | onLocalVideoFrame: |
| void | onRemoteScreenFrame:user:room: |
| void | onRemoteVideoFrame:user:room: |
- (void)onLocalScreenFrame:(ByteVideoFrame * _Nonnull)frame;
本地屏幕流的视频帧数据回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | ByteVideoFrame* | 本地屏幕视频帧数据,参考: ByteVideoFrame |
- (void)onLocalVideoFrame:(ByteVideoFrame * _Nonnull)frame;
本地视频流的视频帧数据回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | ByteVideoFrame* | 本地视频流的视频帧数据,参考: ByteVideoFrame |
- (void)onRemoteScreenFrame:(ByteVideoFrame * _Nonnull)frame user:(NSString * _Nullable)uid room:(NSString * _Nullable)room;
远端屏幕流的视频帧数据回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | ByteVideoFrame* | 远端屏幕的视频帧数据,参考: ByteVideoFrame |
| uid | NSString* | 远端屏幕共享用户ID |
| room | NSString* | 对应流的房间 id |
- (void)onRemoteVideoFrame:(ByteVideoFrame * _Nonnull)frame user:(NSString * _Nullable)uid room:(NSString * _Nullable)room;
远端视频流的视频帧数据回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | ByteVideoFrame* | 远端视频流的视频帧数据,参考: ByteVideoFrame |
| uid | NSString* | 远端屏幕共享用户ID |
| room | NSString* | 对应流的房间 id |