ByteRtcEngineDelegate

@protocol ByteRtcEngineDelegate <NSObject>

成员函数

返回 名称
void rtcEngine:didOccurWarning:
void rtcEngine:didOccurError:
void rtcEngineConnectionDidInterrupted:
void rtcEngine:connectionChangedToState:
void rtcEngine:networkTypeChangedToType:
void rtcEngineConnectionDidLost:
void rtcEngine:didJoinChannel:withUid:elapsed:
void rtcEngine:didRejoinChannel:withUid:elapsed:
void rtcEngine:didJoinedOfUid:elapsed:
void rtcEngine:didOfflineOfUid:reason:
void rtcEngine:didAudioMuted:byUid:
void rtcEngine:didLocalAudioEnabled:byUid:
void rtcEngine:firstRemoteAudioFrameOfUid:elapsed:
void rtcEngine:reportAudioVolumeIndicationOfSpeakers:totalVolume:
void rtcEngine:didVideoMuted:byUid:
void rtcEngine:didLocalVideoEnabled:byUid:
void rtcEngine:firstLocalVideoFrameWithSize:elapsed:
void rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed:
void rtcEngine:videoSizeChangedOfUid:size:
void rtcEngine:videoSizeChangedOfUid:size:rotation:
void rtcEngine:firstRemoteVideoDecodedOfUid:size:elapsed:
void rtcEngine:firstRemoteScreenFrameOfUid:size:elapsed:
void rtcEngine:firstRemoteScreenDecodedOfUid:size:elapsed:
void rtcEngine:remoteVideoStateChangedOfUid:state:
void rtcEngine:didMirrorStateChanged:
void rtcEngine:firstLocalAudioFrame:
void rtcEngine:onStreamAdd:
void rtcEngine:didStreamRemoved:stream:
void rtcEngine:didAudioRouteChanged:
void rtcEngine:didCustomMessage:
void rtcEngine:reportRtcStats:
void rtcEngine:networkQuality:txQuality:rxQuality:
void rtcEngine:localVideoStats:
void rtcEngine:remoteVideoStats:
void rtcEngine:localAudioStats:
void rtcEngine:remoteAudioStats:
void rtcEngine:localAudioStateChanged:error:
void rtcEngine:remoteAudioStateChanged:state:reason:elapsed:
void rtcEngine:localVideoStateChanged:error:
void rtcEngine:remoteVideoStateChanged:state:reason:elapsed:
void rtcEngine:didMessageReceived:message:
void rtcEngine:didMessageSendResult:error:
void rtcEngine:log:
void rtcEngine:audioQualityOfUid:quality:delay:lost:
void rtcEngineLocalAudioMixingDidFinish:
void rtcEngineDidAudioEffectFinish:soundId:
void rtcEngine:TransCodingWithUrl:errorCode:
void rtcEngine:OnRemoteStreamSwitch:

函数说明

rtcEngine:didOccurWarning:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didOccurWarning:(ByteRtcWarningCode)Code;

发生警告回调。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前 RTCEngine 对象
Code ByteRtcWarningCode 警告代码,详情定义见: ByteRtcWarningCode

注意

该回调方法表示SDK运行时出现了(网络或媒体相关的)警告。通常情况下,SDK 上报的警告信息 App 可以忽略,SDK 会自动恢复。

rtcEngine:didOccurError:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didOccurError:(ByteRtcErrorCode)errorCode;

发生错误回调。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前 RTCEngine 对象
errorCode ByteRtcErrorCode 错误代码,详情定义见: ByteRtcErrorCode

注意

表示SDK运行时出现了(网络或媒体相关的)错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。

rtcEngineConnectionDidInterrupted:

- (void)rtcEngineConnectionDidInterrupted:(ByteRtcEngineKit * _Nonnull)engine;

SDK 与信令服务器连接中断回调。当 SDK 检测到与信令服务器的网络连接中断时回调该事件。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前 RTCEngine 实例。

注意

rtcEngine:connectionChangedToState:

- (void) rtcEngine:(ByteRtcEngineKit * _Nonnull)engine connectionChangedToState:(ByteRtcConnectionState) state;

回调 SDK 与信令服务器连接状态相关事件。当 SDK 与信令服务器的网络连接状态改变时回调该事件。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前 RTCEngine 实例。
state ByteRtcConnectionState 当前信令服务器连接状态,详见:ByteRtcConnectionState 。

rtcEngine:networkTypeChangedToType:

- (void) rtcEngine:(ByteRtcEngineKit * _Nonnull)engine networkTypeChangedToType:(ByteRtcNetworkType) type;

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

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前 RTCEngine 实例。
type ByteRtcNetworkType SDK 当前的网络连接类型,详见:ByteRtcNetworkType 。

rtcEngineConnectionDidLost:

- (void)rtcEngineConnectionDidLost:(ByteRtcEngineKit * _Nonnull)engine;

SDK 与信令服务器连接断开回调。当 SDK 与信令服务器的网络连接断开超过 10 秒时回调该事件。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前 RTCEngine 实例。

注意

rtcEngine:didJoinChannel:withUid:elapsed:

- (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 。

rtcEngine:didRejoinChannel:withUid:elapsed:

- (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 。

rtcEngine:didJoinedOfUid:elapsed:

- (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 。

rtcEngine:didOfflineOfUid:reason:

- (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 。

rtcEngine:didAudioMuted:byUid:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didAudioMuted:(BOOL)muted byUid:(NSString * _Nonnull)uid;

远端用户将其本地音频流静音时,房间内其他人会收到这个回调。 该回调由远端用户调用 muteLocalAudioStreammuteLocalAudioStream: 方法触发。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit对象
muted BOOL 该用户是否已将其本地音频流静音
• YES: 该用户已将其本地音频流静音
• NO: 该用户已将其本地音频流取消了静音
uid NSString* 远端用户 ID

rtcEngine:didLocalAudioEnabled:byUid:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didLocalAudioEnabled:(BOOL)enabled byUid:(NSString * _Nonnull)uid;

远端用户开启/关闭音频设备采集回调 提示有远端用户已开启/关闭音频设备采集,该回调由远端用户调用 enableLocalAudio: 方法触发

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit对象
enabled BOOL YES: 该用户开启了音频设备采集;NO: 该用户关闭了音频设备采集
uid NSString* 远端用户ID

rtcEngine:firstRemoteAudioFrameOfUid:elapsed:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine firstRemoteAudioFrameOfUid:(NSString * _Nonnull)uid elapsed:(NSInteger)elapsed;

当收到远端流的第一帧音频的时候上报该事件

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象
uid NSString* 远端用户ID
elapsed NSInteger 从开始订阅音频流到收到该事件经历的时间(毫秒单位)

rtcEngine:reportAudioVolumeIndicationOfSpeakers:totalVolume:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine reportAudioVolumeIndicationOfSpeakers:(NSArray<ByteRtcAudioVolumeInfo *> * _Nonnull)speakers totalVolume:(NSInteger)totalVolume;

通话音量提示的回调。回调当前房间内每个用户的音量、总音量。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* RtcEngine 实例
speakers NSArray* 房间内用户的音量信息的数组,每个用户音量信息详见类型 ByteRtcAudioVolumeInfo,包括发送流与接收流
totalVolume NSInteger 房间内的总音量大小,只包括接收流

rtcEngine:didVideoMuted:byUid:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didVideoMuted:(BOOL)muted byUid:(NSString * _Nonnull)uid;

远端用户暂停/重新发送视频回调。房间中远端用户调用 muteLocalVideoStream: 时,本地用户将会收到该回调。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象
muted BOOL YES:远端用户恢复发送视频流;NO:远端用户暂停发送视频流
uid NSString* 调用 muteLocalVideoStream: 接口的远端用户ID

rtcEngine:didLocalVideoEnabled:byUid:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didLocalVideoEnabled:(BOOL)enabled byUid:(NSString * _Nonnull)uid;

远端用户启用/关闭本地视频回调。房间中远端用户调用 enableLocalVideo: 时,本地用户将会收到该回调。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象
enabled BOOL YES: 远端用户启动了本地视频;NO: 远端用户关闭了本地视频
uid NSString* 调用 enableLocalVideo: 接口的远端用户ID

rtcEngine:firstLocalVideoFrameWithSize:elapsed:

- (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)

rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed:

- (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)

rtcEngine:videoSizeChangedOfUid:size:

- (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 视频的宽高尺寸

rtcEngine:videoSizeChangedOfUid:size:rotation:

- (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

rtcEngine:firstRemoteVideoDecodedOfUid:size:elapsed:

- (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)

rtcEngine:firstRemoteScreenFrameOfUid:size:elapsed:

- (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)

rtcEngine:firstRemoteScreenDecodedOfUid:size:elapsed:

- (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)

rtcEngine:remoteVideoStateChangedOfUid:state:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine remoteVideoStateChangedOfUid:(NSString * _Nonnull)uid state:(ByteVideoRemoteState)state;

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

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象,参考: ByteRtcEngineKit
uid NSString* 发生视频流状态改变的远端用户的用户ID
state ByteVideoRemoteState 变更后的远端视频流状态,详见类型 ByteVideoRemoteState

rtcEngine:didMirrorStateChanged:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didMirrorStateChanged:(BOOL)mirrored;

本地视频镜像状态发生改变回调。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象
mirrored BOOL 当前是否开启镜像
• true:当前本地视频状态为开启镜像
• false:当前本地视频状态为关闭镜像

rtcEngine:firstLocalAudioFrame:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine firstLocalAudioFrame:(NSInteger)elapsed;

当收到本地第一帧音频的时候上报该事件

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象
elapsed NSInteger 从开始发布音频流到收到该事件经历的时间(毫秒单位)

rtcEngine:onStreamAdd:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine onStreamAdd:(id <ByteStream> _Nonnull)stream;

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

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象。
stream id 流的属性,详见 ByteStream 数据类型。

rtcEngine:didStreamRemoved:stream:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didStreamRemoved:(NSString* _Nonnull )uid stream:(id <ByteStream> _Nonnull)stream;

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

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象。
uid NSString* 用户ID 。远端流的发布用户的用户ID 。
stream id 流的属性,详见 ByteStream 数据类型。

rtcEngine:didAudioRouteChanged:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didAudioRouteChanged:(ByteAudioOutputRouting)routing;

音频路由变化时回调该事件

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象
routing ByteAudioOutputRouting 新的音频路由,详见 ByteAudioOutputRouting

注意

音频路由设置与音频路由策略详见 setEnableSpeakerphonesetEnableSpeakerphone:

rtcEngine:didCustomMessage:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didCustomMessage:(NSString * _Nonnull)message;

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

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象。
message NSString* 收到的消息内容。

注意

rtcEngine:reportRtcStats:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine reportRtcStats:(ByteRtcStats * _Nonnull)stats;

房间通话数据回调。
用户加入当前房间成功后,SDK 会周期性(2s)的通过此回调事件通知用户当前房间内的汇总统计信息。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象。
stats ByteRtcStats* 房间内的汇总统计数据,详见 ByteRtcStats 数据类型。

rtcEngine:networkQuality:txQuality:rxQuality:

- (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 所属用户的媒体流下行网络质量。

注意

rtcEngine:localVideoStats:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine localVideoStats:(ByteRtcLocalVideoStats * _Nonnull)stats;

发布视频流数据统计回调。
本地用户发布视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的视频流在此次统计周期内的质量统计信息。统计信息通过 ByteRtcLocalVideoStats 类型的回调参数传递给用户,其中包括发送视频比特率、发送帧率、编码帧率等。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象。
stats ByteRtcLocalVideoStats* 发布视频流质量统计数据,详见 ByteRtcLocalVideoStats 数据类型。

rtcEngine:remoteVideoStats:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine remoteVideoStats:(ByteRtcRemoteVideoStats * _Nonnull)stats;

订阅视频流数据统计回调。
本地用户订阅视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的视频流在此次统计周期内的质量统计信息。统计信息通过 ByteRtcRemoteVideoStats 类型的回调参数传递给用户,其中包括视频宽高、接收带宽、帧率及卡顿等信息。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象。
stats ByteRtcRemoteVideoStats* 订阅视频流质量统计数据,详见 ByteRtcRemoteVideoStats 数据类型。

rtcEngine:localAudioStats:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine localAudioStats:(ByteRtcLocalAudioStats * _Nonnull)stats;

通话中订阅音频流质量报告回调。包括发送音频比特率,音频丢包率等

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* RtcEngine 实例
stats ByteRtcLocalAudioStats* 发布音频流质量,参见 ByteRtcLocalAudioStats

rtcEngine:remoteAudioStats:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine remoteAudioStats:(ByteRtcRemoteAudioStats * _Nonnull)stats;

通话中订阅音频流质量报告回调。包括订阅音频流的发布者的 uid、接收音频比特率、音频丢包率及卡顿信息。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* RtcEngine 实例
stats ByteRtcRemoteAudioStats* 订阅音频流质量,参见 ByteRtcRemoteAudioStats

rtcEngine:localAudioStateChanged:error:

- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine localAudioStateChanged:(ByteLocalAudioStreamState)state error:(ByteLocalAudioStreamError)error;

本地音频的状态发生改变时,该回调通知当前的本地音频状态。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象
state ByteLocalAudioStreamState 本地音频设备的状态,详见: ByteLocalAudioStreamState
error ByteLocalAudioStreamError 本地音频状态改变时的错误码,详见:ByteLocalAudioStreamError

rtcEngine:remoteAudioStateChanged:state:reason:elapsed:

- (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 耗时,从加入房间到该事件发生经历的时间

rtcEngine:localVideoStateChanged:error:

- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine localVideoStateChanged:(ByteLocalVideoStreamState)state error:(ByteLocalVideoStreamError)error;

本地视频的状态发生改变时,该回调返回当前的本地视频状态。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象
state ByteLocalVideoStreamState 本地视频状态
error ByteLocalVideoStreamError 本地音频状态改变时的错误码

rtcEngine:remoteVideoStateChanged:state:reason:elapsed:

- (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 耗时,暂未实现

rtcEngine:didMessageReceived:message:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didMessageReceived:(NSString * _Nonnull)uid message:(NSString * _Nonnull)message;

点对点消息回调。接收到同一房间内 uid 所属用户发来消息时触发。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前 RTCEngine 实例。
uid NSString* 消息发送者 ID 。
message NSString* 收到的消息内容。

注意

rtcEngine:didMessageSendResult:error:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine didMessageSendResult:(long)msgid error:(MessageCode)error;

点对点消息发送结果回调。当调用 sendMessage:message: 函数发送消息后,回调此条消息的发送结果(反馈)。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前 RTCEngine 实例。
msgid long 本条消息的 ID 。
error MessageCode 消息发送结果,详见枚举类型 MessageCode。

rtcEngine:log:

- (void)rtcEngine:(ByteRtcEngineKit* _Nonnull)engine log:(NSDictionary* _Nonnull)dict;

SDK 内部日志回调。
SDK 内部运行时,会把日志回调给业务方,方便排查问题。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象。
dict NSDictionary* 日志内容。

rtcEngine:audioQualityOfUid:quality:delay:lost:

- (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 音频包从发送端到接收端的丢包率(%)

rtcEngineLocalAudioMixingDidFinish:

- (void)rtcEngineLocalAudioMixingDidFinish:(ByteRtcEngineKit *_Nonnull)engine;

音乐文件混音结束回调。SDK通过此回调通知应用层音乐文件混音结束。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前RTC SDK对象

rtcEngineDidAudioEffectFinish:soundId:

- (void)rtcEngineDidAudioEffectFinish:(ByteRtcEngineKit *_Nonnull)engine soundId:(NSInteger)soundId;

音效文件混音结束回调。SDK通过此回调通知应用层音效文件混音结束

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前RTC SDK对象
soundId NSInteger 音效ID

rtcEngine:TransCodingWithUrl:errorCode:

- (void)rtcEngine:(ByteRtcEngineKit * _Nonnull)engine TransCodingWithUrl:(NSString * _Nonnull)url errorCode:(ByteRtcTransCodeingErrorCode)errorCode;

直播推流转码状态回调。
用户调用 enableLiveTranscoding: 方法启动直播推流转码功能后,直播推流转码功能启动成功或失败时、推流过程中发生错误时,SDK 通过此回调通知用户对应的状态事件。
回调事件为错误状态事件时,App 需根据功能状态码的处理建议做对应的处理,如通知用户或重试等。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* ByteRtcEngineKit 对象。
url NSString* 推流地址。直播推流的地址,为 URL 地址。
errorCode ByteRtcTransCodeingErrorCode 直播推流转码功能状态码,详见枚举类型 ByteRtcTransCodeingErrorCode 。

rtcEngine:OnRemoteStreamSwitch:

- (void)rtcEngine:(ByteRtcEngineKit *_Nonnull)engine OnRemoteStreamSwitch:(ByteRemoteStreamSwitchEvent *_Nonnull)event;

收到远端流回退或恢复时回调该事件。

传入参数

参数名 类型 说明
engine ByteRtcEngineKit* 当前RTCEngine 实例
event ByteRemoteStreamSwitchEvent* 远端流回退或恢复数据。详见 ByteRemoteStreamSwitchEvent。

ByteAudioDeviceObserver

@protocol ByteAudioDeviceObserver <NSObject>

音频外部设备事件监听,只用于自定义音频采集渲染的情况 SDK内部需要控制外部设备时,通过这个事件监听类通知上层应用

成员函数

返回 名称
void onAudioDeviceRecordStart
void onAudioDeviceRecordStop
void onAudioDevicePlayoutStart
void onAudioDevicePlayoutStop

函数说明

onAudioDeviceRecordStart

- (void)onAudioDeviceRecordStart;

通知上层应用开启音频采集设备

onAudioDeviceRecordStop

- (void)onAudioDeviceRecordStop;

通知上层应用关闭音频采集设备

onAudioDevicePlayoutStart

- (void)onAudioDevicePlayoutStart;

通知上层应用开启音频播放设备

onAudioDevicePlayoutStop

- (void)onAudioDevicePlayoutStop;

通知上层应用关闭音频播放设备

ByteAudioFrameObserver

@protocol ByteAudioFrameObserver <NSObject>

音频数据代理

成员函数

返回 名称
void onRecordAudioFrame:
void onPlaybackAudioFrame:
void onMixedAudioFrame:

函数说明

onRecordAudioFrame:

- (void)onRecordAudioFrame:(ByteAudioFrame * _Nonnull)audioFrame;

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

传入参数

参数名 类型 说明
audioFrame ByteAudioFrame* 麦克风录制的音频数据, 详见:ByteAudioFrame

onPlaybackAudioFrame:

- (void)onPlaybackAudioFrame:(ByteAudioFrame * _Nonnull)audioFrame;

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

传入参数

参数名 类型 说明
audioFrame ByteAudioFrame* 远端所有用户混音后的音频数据, 详见:ByteAudioFrame

onMixedAudioFrame:

- (void)onMixedAudioFrame:(ByteAudioFrame * _Nonnull)audioFrame;

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

传入参数

参数名 类型 说明
audioFrame ByteAudioFrame* 本地麦克风录制和远端所有用户混音后的音频数据, 详见:ByteAudioFrame

ByteRtcEngineMediaMetadataObserver

@protocol ByteRtcEngineMediaMetadataObserver <NSObject>

使用内部源视频采集时,配置和获取附加数据接口

成员函数

返回 名称
NSData* videoFrameMediaMetaDataAtTime:
void receiveVideoFrameFromUID:withExtendedData:atTimestamp:

函数说明

videoFrameMediaMetaDataAtTime:

- (NSData *_Nullable)videoFrameMediaMetaDataAtTime:(NSTimeInterval)timestamp;

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

传入参数

参数名 类型 说明
timestamp NSTimeInterval 待添加 metadata 视频帧的时间戳,单位微秒

返回值

待发送的数据,大小不能超过 1024bytes

注意

receiveVideoFrameFromUID:withExtendedData:atTimestamp:

- (void)receiveVideoFrameFromUID:(NSString * _Nonnull)uid withExtendedData:(NSData* _Nullable)extendedData atTimestamp:(NSTimeInterval)timestamp;

当 SDK 收到的视频帧包含 medatada 时,会回调该接口

传入参数

参数名 类型 说明
uid NSString* 当前帧所属的用户ID
extendedData NSData* metadata
timestamp NSTimeInterval 包含 metadata 视频帧的时间戳,单位为微秒

注意

回调中不能做长时间逻辑处理,以免影响视频卡顿

ByteEncryptHandler

@protocol ByteEncryptHandler <NSObject>

自定义加密接口

成员函数

返回 名称
NSData* ByteEngineEncryptRawData:
NSData* ByteEngineDecryptRawData:

函数说明

ByteEngineEncryptRawData:

- (NSData * _Nonnull)ByteEngineEncryptRawData:(NSData * _Nonnull)rawData;

自定义加密的方法接口
通过继承并实现该方法,可以扩展传输过程中的加密方法, 详见 setCustomizeEncryptHandler:

传入参数

参数名 类型 说明
rawData NSData* 原始音视频帧数据

返回值

返回加密后的数据
+ 非空,表示加密后的数据
+ 为空,表示丢弃该帧

注意

返回的数据大小应控制在原始数据的90%~120%范围以内,不然将被丢弃

ByteEngineDecryptRawData:

- (NSData * _Nonnull)ByteEngineDecryptRawData:(NSData * _Nonnull)rawData;

自定义解密的方法接口
通过继承并实现该方法,可以扩展传输过程中的解密方法, 详见 setCustomizeEncryptHandler:

传入参数

参数名 类型 说明
rawData NSData* 原始音视频帧数据

返回值

返回解密后的数据
+ 非空,表示解密后的数据
+ 为空,表示丢弃该帧

注意

返回的数据大小应控制在原始数据的90%~120%范围以内,不然将被丢弃

ByteRtcMonitorDelegate

@protocol ByteRtcMonitorDelegate <NSObject>

非业务相关的监控事件回调

成员函数

返回 名称
void onMonitorLog:withType:
BOOL isConsole
void onVerboseLogWithLevel:filename:tag:line:functionName:format:

函数说明

onMonitorLog:withType:

- (void)onMonitorLog:(NSDictionary * _Nullable)data withType:(NSString * _Nullable)type;

埋点日志回调

传入参数

参数名 类型 说明
data NSDictionary* 具体的埋点内容
type NSString* 埋点的类型

isConsole

- (BOOL)isConsole;

是否进行控制台输出

返回值

返回是否进行控制台输出
+ YES 输出所有的日志到控制台
+ NO 不输出任何控制台信息

onVerboseLogWithLevel:filename:tag:line:functionName:format:

- (void)onVerboseLogWithLevel:(ByteRtcLogLevel)level filename:(NSString * _Nonnull)filename tag:(NSString * _Nonnull)tag line:(int)line functionName:(NSString * _Nonnull)funcName format:(NSString * _Nonnull)format;

输出更多的调试信息

ByteVideoSinkProtocol

@protocol ByteVideoSinkProtocol <NSObject>

自定义的视频渲染

成员函数

返回 名称
BOOL shouldInitialize
void shouldStart
void shouldStop
void shouldDispose
ByteVideoPixelFormat pixelFormat
void renderPixelBuffer:rotation:extendedData:

函数说明

shouldInitialize

- (BOOL)shouldInitialize;

初始化渲染器

返回值

注意

初始化渲染器的时候会回调这个方法

shouldStart

- (void)shouldStart;

启动渲染器

注意

在开启渲染功能的时候会回调这个方法

shouldStop

- (void)shouldStop;

停止渲染器

注意

在停止渲染功能的时候会回调这个方法

shouldDispose

- (void)shouldDispose;

释放渲染器

注意

渲染器即将被废弃的时候会回调这个方法

pixelFormat

- (ByteVideoPixelFormat)pixelFormat;

获取PixelFormat格式

返回值

Buffer 类型,ByteVideoPixelFormat

注意

通过该方法的返回值,告知 SDK PixelFormat 的格式

renderPixelBuffer:rotation:extendedData:

- (void)renderPixelBuffer:(CVPixelBufferRef _Nonnull)pixelBuffer rotation:(ByteVideoRotation)rotation extendedData:(NSData * _Nullable)extendedData;

输出视频的 PixelBuffer

传入参数

参数名 类型 说明
pixelBuffer CVPixelBufferRef 视频的 PixelBuffer
rotation ByteVideoRotation 视频旋转角度,ByteVideoRotation
extendedData NSData* 视频帧附加的数据,视频解码后获得的附加数据

注意

通过该方法获取视频的 PixelBuffer

ByteVideoFrameObserver

@protocol ByteVideoFrameObserver <NSObject>

成员函数

返回 名称
void onLocalScreenFrame:
void onLocalVideoFrame:
void onRemoteScreenFrame:user:room:
void onRemoteVideoFrame:user:room:

函数说明

onLocalScreenFrame:

- (void)onLocalScreenFrame:(ByteVideoFrame * _Nonnull)frame;

本地屏幕流的视频帧数据回调

传入参数

参数名 类型 说明
frame ByteVideoFrame* 本地屏幕视频帧数据,参考: ByteVideoFrame

onLocalVideoFrame:

- (void)onLocalVideoFrame:(ByteVideoFrame * _Nonnull)frame;

本地视频流的视频帧数据回调

传入参数

参数名 类型 说明
frame ByteVideoFrame* 本地视频流的视频帧数据,参考: ByteVideoFrame

onRemoteScreenFrame:user:room:

- (void)onRemoteScreenFrame:(ByteVideoFrame * _Nonnull)frame user:(NSString * _Nullable)uid room:(NSString * _Nullable)room;

远端屏幕流的视频帧数据回调

传入参数

参数名 类型 说明
frame ByteVideoFrame* 远端屏幕的视频帧数据,参考: ByteVideoFrame
uid NSString* 远端屏幕共享用户ID
room NSString* 对应流的房间 id

onRemoteVideoFrame:user:room:

- (void)onRemoteVideoFrame:(ByteVideoFrame * _Nonnull)frame user:(NSString * _Nullable)uid room:(NSString * _Nullable)room;

远端视频流的视频帧数据回调

传入参数

参数名 类型 说明
frame ByteVideoFrame* 远端视频流的视频帧数据,参考: ByteVideoFrame
uid NSString* 远端屏幕共享用户ID
room NSString* 对应流的房间 id