ByteRTCRoomDelegate
@protocol ByteRTCRoomDelegate <NSObject>
objectivec

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

成员函数
返回名称
voidrtcRoom:onRoomStateChanged:withUid:state:extraInfo:
voidrtcRoom:onStreamStateChanged:withUid:state:extraInfo:
voidrtcRoom:onLeaveRoom:
voidrtcRoom:onAVSyncStateChange:
voidrtcRoom:onRoomStats:
voidrtcRoom:onLocalStreamStats:
voidrtcRoom:onRemoteStreamStats:
voidrtcRoom:onUserJoined:elapsed:
voidrtcRoom:onUserLeave:reason:
voidonTokenWillExpire:
voidonPublishPrivilegeTokenWillExpire:
voidonSubscribePrivilegeTokenWillExpire:
voidrtcRoom:onUserPublishStream:type:
voidrtcRoom:onUserUnpublishStream:type:reason:
voidrtcRoom:onUserPublishScreen:type:
voidrtcRoom:onUserUnpublishScreen:type:reason:
voidrtcRoom:onStreamSubscribed:userId:subscribeConfig:
voidrtcRoom:onRoomMessageReceived:message:
voidrtcRoom:onRoomBinaryMessageReceived:message:
voidrtcRoom:onUserMessageReceived:message:
voidrtcRoom:onUserBinaryMessageReceived:message:
voidrtcRoom:onUserMessageSendResult:error:
voidrtcRoom:onRoomMessageSendResult:error:
voidrtcRoom:onSetRoomExtraInfoResult:error:
voidrtcRoom:onRoomExtraInfoUpdate:value:lastUpdateUserId:lastUpdateTimeMs:
voidrtcRoom:onUserVisibilityChanged:errorCode:
voidrtcRoom:onVideoStreamBanned:isBanned:
voidrtcRoom:onAudioStreamBanned:isBanned:
voidrtcRoom:onForwardStreamStateChanged:
voidrtcRoom:onForwardStreamEvent:
voidrtcRoom:onNetworkQuality:remoteQualities:
voidrtcRoom:onSubtitleStateChanged:errorCode:errorMessage:
voidrtcRoom:onSubtitleMessageReceived:
void[deprecated] rtcRoom:onRoomWarning:
void[deprecated] rtcRoom:onRoomError:
void[deprecated] rtcRoom:onStreamAdd:
void[deprecated] rtcRoom:onStreamRemove:stream:reason:
函数说明

rtcRoom:onRoomStateChanged:withUid:state:extraInfo:
- (void)rtcRoom:(ByteRTCRoom *_Nonnull)rtcRoom onRoomStateChanged:(NSString *_Nonnull)roomId withUid:(nonnull NSString *)uid state:(NSInteger)state extraInfo:(NSString *_Nonnull)extraInfo;
objectivec

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

传入参数

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

rtcRoom:onStreamStateChanged:withUid:state:extraInfo:
- (void)rtcRoom:(ByteRTCRoom *_Nonnull)rtcRoom onStreamStateChanged:(NSString *_Nonnull)roomId withUid:(nonnull NSString *)uid state:(NSInteger)state extraInfo:(NSString *_Nonnull)extraInfo;
objectivec

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

传入参数

参数名类型说明
roomIdNSString*房间 ID。
uidNSString*用户 ID。
stateNSInteger流状态码,参看 ByteRTCErrorCode 及 ByteRTCWarningCode。
extraInfoNSString*附加信息,目前为空。

rtcRoom:onLeaveRoom:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onLeaveRoom:(ByteRTCRoomStats *_Nonnull)stats;
objectivec

离开房间成功回调。

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
statsByteRTCRoomStats*保留参数,目前为空。

注意

rtcRoom:onRoomWarning:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onRoomWarning:(ByteRTCWarningCode)warningCode __deprecated_msg("Will be removed in new version");
objectivec

Deprecated since 3.41 and will be deleted in 3.51, use rtcRoom:onRoomStateChanged:withUid:state:extraInfo: and rtcRoom:onStreamStateChanged:withUid:state:extraInfo: instead.

发生警告回调。

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
warningCodeByteRTCWarningCode警告码,详见枚举类型 ByteRTCWarningCode 。

rtcRoom:onRoomError:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onRoomError:(ByteRTCErrorCode)errorCode __deprecated_msg("Will be removed in new version");
objectivec

Deprecated since 3.41 and will be deleted in 3.51, use rtcRoom:onRoomStateChanged:withUid:state:extraInfo: and rtcRoom:onStreamStateChanged:withUid:state:extraInfo: instead.

发生错误回调。

SDK 运行时出现了错误。SDK 通常无法自动恢复,应用需要采取行动。

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
errorCodeByteRTCErrorCode错误码,详见枚举类型 ByteRTCErrorCode 。

rtcRoom:onAVSyncStateChange:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onAVSyncStateChange:(ByteRTCAVSyncState)state;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例
stateByteRTCAVSyncState音视频同步状态,参看 ByteRTCAVSyncState。

rtcRoom:onRoomStats:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onRoomStats:(ByteRTCRoomStats *_Nonnull)stats;
objectivec

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

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
statsByteRTCRoomStats*当前 ByteRTCRoom 统计数据,详见:ByteRTCRoomStats

rtcRoom:onLocalStreamStats:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onLocalStreamStats:(ByteRTCLocalStreamStats *_Nonnull)stats;
objectivec

本地流数据统计以及网络质量回调。

本地用户发布流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的流在此次统计周期内的质量统计信息。

统计信息通过 ByteRTCLocalStreamStats 类型的回调参数传递给用户,其中包括发送音视频比特率、发送帧率、编码帧率,网络质量等。

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
statsByteRTCLocalStreamStats*当前房间本地流数据统计。详见:ByteRTCLocalStreamStats

rtcRoom:onRemoteStreamStats:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onRemoteStreamStats:(ByteRTCRemoteStreamStats *_Nonnull)stats;
objectivec

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

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
statsByteRTCRemoteStreamStats*当前房间本地流数据统计。 详见:ByteRTCRemoteStreamStats

rtcRoom:onUserJoined:elapsed:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onUserJoined:(ByteRTCUserInfo *_Nonnull)userInfo elapsed:(NSInteger)elapsed;
objectivec

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

  1. 远端用户调用 setUserVisibility: 方法将自身设为可见后加入房间时,房间内其他用户将收到该事件。
  2. 远端可见用户断网后重新连入房间时,房间内其他用户将收到该事件。
  3. 房间内隐身远端用户调用 setUserVisibility: 方法切换至可见时,房间内其他用户将收到该事件。
  4. 新进房用户会收到进房前已在房内的可见用户的进房回调通知。

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
userInfoByteRTCUserInfo*用户信息,参看 ByteRTCUserInfo。
elapsedNSInteger保留字段,无意义

rtcRoom:onUserLeave:reason:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onUserLeave:(NSString *_Nonnull)uid reason:(ByteRTCUserOfflineReason)reason;
objectivec

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

传入参数

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

onTokenWillExpire:
- (void)onTokenWillExpire:( ByteRTCRoom *_Nonnull)rtcRoom;
objectivec

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

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

注意
若 Token 进房权限过期且未及时更新: + 用户此时尝试进房会收到 rtcRoom:onRoomStateChanged:withUid:state:extraInfo: 回调,提示错误码为 -1000 Token 无效;

onPublishPrivilegeTokenWillExpire:
- (void)onPublishPrivilegeTokenWillExpire:( ByteRTCRoom *_Nonnull)rtcRoom;
objectivec

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

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

注意
若收到该回调后未及时更新 Token,Token 发布权限过期后: + 此时尝试发布流会收到 rtcRoom:onStreamStateChanged:withUid:state:extraInfo: 回调,提示错误码为 -1002 没有发布权限;

onSubscribePrivilegeTokenWillExpire:
- (void)onSubscribePrivilegeTokenWillExpire:( ByteRTCRoom *_Nonnull)rtcRoom;
objectivec

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

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

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

rtcRoom:onStreamAdd:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onStreamAdd:(id<ByteRTCStream> _Nonnull)stream __deprecated_msg("Will be removed in new version");
objectivec

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

以下情况会触发此回调:

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
streamid流属性,参看 ByteRTCStream 。

rtcRoom:onStreamRemove:stream:reason:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onStreamRemove:(NSString *_Nonnull)uid stream:(id<ByteRTCStream> _Nonnull)stream reason:(ByteRTCStreamRemoveReason)reason;
objectivec

Deprecated since 3.36 and will be deleted in 3.51, use rtcRoom:onUserUnpublishStream:type:reason: and rtcRoom:onUserUnpublishScreen:type:reason: instead.

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
uidNSString*远端流来源的用户 ID 。
streamid流的属性,参看 ByteRTCStream。
reasonByteRTCStreamRemoveReason远端流移除的原因,参看 ByteRTCStreamRemoveReason 。

rtcRoom:onUserPublishStream:type:
- (void)rtcRoom:( ByteRTCRoom * _Nonnull)rtcRoom onUserPublishStream:(NSString *_Nonnull)userId type:(ByteRTCMediaStreamType)type;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例
userIdNSString*远端流发布用户的用户 ID。
typeByteRTCMediaStreamType远端媒体流的类型,参看 ByteRTCMediaStreamType。

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

rtcRoom:onUserUnpublishStream:type:reason:
- (void)rtcRoom:( ByteRTCRoom * _Nonnull)rtcRoom onUserUnpublishStream:(NSString *_Nonnull)userId type:(ByteRTCMediaStreamType)type reason:(ByteRTCStreamRemoveReason)reason;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例
userIdNSString*移除的远端流发布用户的用户 ID。
typeByteRTCMediaStreamType移除的远端流类型,参看 ByteRTCMediaStreamType。
reasonByteRTCStreamRemoveReason远端流移除的原因,参看 ByteRTCStreamRemoveReason。

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

rtcRoom:onUserPublishScreen:type:
- (void)rtcRoom:( ByteRTCRoom * _Nonnull)rtcRoom onUserPublishScreen:(NSString *_Nonnull)userId type:(ByteRTCMediaStreamType)type;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom实例
userIdNSString*远端流发布用户的用户 ID。
typeByteRTCMediaStreamType远端媒体流的类型,参看 ByteRTCMediaStreamType。

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

rtcRoom:onUserUnpublishScreen:type:reason:
- (void)rtcRoom:( ByteRTCRoom * _Nonnull)rtcRoom onUserUnpublishScreen:(NSString *_Nonnull)userId type:(ByteRTCMediaStreamType)type reason:(ByteRTCStreamRemoveReason)reason;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例
userIdNSString*移除的远端流发布用户的用户 ID。
typeByteRTCMediaStreamType移除的远端流类型,参看 ByteRTCMediaStreamType。
reasonByteRTCStreamRemoveReason远端流移除的原因,参看 ByteRTCStreamRemoveReason。

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

rtcRoom:onStreamSubscribed:userId:subscribeConfig:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onStreamSubscribed:(ByteRTCSubscribeState)state userId:(NSString *_Nonnull)userId subscribeConfig:(ByteRTCSubscribeConfig *_Nonnull)info;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
stateByteRTCSubscribeState订阅媒体流状态,参看 ByteRTCSubscribeState
userIdNSString*流发布用户的用户 ID
infoByteRTCSubscribeConfig*流的属性,参看 ByteRTCSubscribeConfig

注意
本地用户收到该回调的时机包括: + 调用 subscribeStream:mediaStreamType: 或 unsubscribeStream:mediaStreamType: 订阅/取消订阅指定远端摄像头音视频流后;

rtcRoom:onRoomMessageReceived:message:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onRoomMessageReceived:(NSString *_Nonnull)uid message:(NSString *_Nonnull)message;
objectivec

收到房间中调用 sendRoomMessage: 发送的广播文本消息时,收到此回调。

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
uidNSString*消息发送者 ID 。
messageNSString*收到的文本消息内容。

rtcRoom:onRoomBinaryMessageReceived:message:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onRoomBinaryMessageReceived:(NSString *_Nonnull)uid message:(NSData *_Nonnull)message;
objectivec

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

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
uidNSString*消息发送者 ID 。
messageNSData*收到的二进制消息内容。

rtcRoom:onUserMessageReceived:message:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onUserMessageReceived:(NSString *_Nonnull)uid message:(NSString *_Nonnull)message;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
uidNSString*消息发送者的用户 ID 。
messageNSString*收到的文本消息内容。

rtcRoom:onUserBinaryMessageReceived:message:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onUserBinaryMessageReceived:(NSString *_Nonnull)uid message:(NSData *_Nonnull)message;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
uidNSString*消息发送者的用户 ID 。
messageNSData*收到的二进制消息内容。

rtcRoom:onUserMessageSendResult:error:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onUserMessageSendResult:(NSInteger)msgid error:(ByteRTCUserMessageSendResult)error;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
msgidNSInteger本条消息的 ID。
errorByteRTCUserMessageSendResult消息发送结果,详见 ByteRTCUserMessageSendResult

注意

rtcRoom:onRoomMessageSendResult:error:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onRoomMessageSendResult:(NSInteger)msgid error:(ByteRTCRoomMessageSendResult)error;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
msgidNSInteger本条消息的 ID。
errorByteRTCRoomMessageSendResult消息发送结果,详见 ByteRTCRoomMessageSendResult

rtcRoom:onSetRoomExtraInfoResult:error:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onSetRoomExtraInfoResult:(NSInteger)taskId error:(ByteRTCSetRoomExtraInfoResult)error;
objectivec

Available since 3.52.

调用 setRoomExtraInfo:value: 结果回调。

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
taskIdNSInteger本次调用的任务编号。
errorByteRTCSetRoomExtraInfoResult设置房间附加信息结果,详见 ByteRTCSetRoomExtraInfoResult

rtcRoom:onRoomExtraInfoUpdate:value:lastUpdateUserId:lastUpdateTimeMs:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onRoomExtraInfoUpdate:(NSString *_Nonnull)key value:(NSString *_Nonnull)value lastUpdateUserId:(NSString *_Nonnull)lastUpdateUserId lastUpdateTimeMs:(NSInteger)lastUpdateTimeMs;
objectivec

Available since 3.52.

接收到房间附加信息的回调。

房间内其他用户调用 setRoomExtraInfo:value: 设置房间附加信息,收到此回调。

另外用户加入房间成功后会收到这个房间全量附加信息

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
keyNSString*附加信息的键值
valueNSString*附加信息的内容
lastUpdateUserIdNSString*最后更新这条附加信息的用户编号
lastUpdateTimeMsNSInteger最后更新这条附加信息的Unix时间,时间精度是毫秒

rtcRoom:onUserVisibilityChanged:errorCode:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onUserVisibilityChanged:(BOOL)currentUserVisibility errorCode:(ByteRTCUserVisibilityChangeError)errorCode;
objectivec

Available since 3.54

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

传入参数

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

rtcRoom:onVideoStreamBanned:isBanned:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onVideoStreamBanned:(NSString *_Nonnull)uid isBanned:(BOOL)banned;
objectivec

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

传入参数

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

注意

rtcRoom:onAudioStreamBanned:isBanned:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onAudioStreamBanned:(NSString *_Nonnull)uid isBanned:(BOOL)banned;
objectivec

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

传入参数

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

注意

rtcRoom:onForwardStreamStateChanged:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onForwardStreamStateChanged:(NSArray<ForwardStreamStateInfo *> * _Nonnull)infos;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
infosNSArray<ForwardStreamStateInfo>**跨房间媒体流转发目标房间信息数组,详见 ForwardStreamStateInfo

rtcRoom:onForwardStreamEvent:
- (void)rtcRoom:( ByteRTCRoom * _Nonnull)rtcRoom onForwardStreamEvent:(NSArray<ForwardStreamEventInfo *> * _Nonnull)infos;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
infosNSArray<ForwardStreamEventInfo>**跨房间媒体流转发目标房间事件数组,详见 ForwardStreamEventInfo

rtcRoom:onNetworkQuality:remoteQualities:
- (void)rtcRoom:(ByteRTCRoom * _Nonnull)rtcRoom onNetworkQuality:(ByteRTCNetworkQualityStats *_Nonnull)localQuality remoteQualities:(NSArray<ByteRTCNetworkQualityStats*> *_Nonnull)remoteQualities;
objectivec

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
localQualityByteRTCNetworkQualityStats*本端网络质量,详见 ByteRTCNetworkQualityStats。
remoteQualitiesNSArray<ByteRTCNetworkQualityStats>**已订阅用户的网络质量,详见 ByteRTCNetworkQualityStats。

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

rtcRoom:onSubtitleStateChanged:errorCode:errorMessage:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onSubtitleStateChanged:(ByteRTCSubtitleState)state errorCode:(ByteRTCSubtitleErrorCode)errorCode errorMessage:(NSString *_Nonnull)errorMessage;
objectivec

字幕状态发生改变回调。

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例。
stateByteRTCSubtitleState字幕状态。参看 ByteRTCSubtitleState。
errorCodeByteRTCSubtitleErrorCode字幕任务错误码。参看 ByteRTCSubtitleErrorCode。
errorMessageNSString*第三方服务出现的错误。当因第三方服务出现错误,导致字幕状态改变时,用户可通过此参数获取具体的错误信息。如果不是因为第三方服务导致字幕状态改变,该字段为空。

rtcRoom:onSubtitleMessageReceived:
- (void)rtcRoom:( ByteRTCRoom *_Nonnull)rtcRoom onSubtitleMessageReceived:(NSArray<ByteRTCSubtitleMessage*> * _Nonnull)subtitles;
objectivec

字幕相关内容回调。

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例。
subtitlesNSArray<ByteRTCSubtitleMessage>**字幕消息内容。参看 ByteRTCSubtitleMessage。
ByteRTCVideoDelegate
@protocol ByteRTCVideoDelegate <NSObject>
objectivec

ByteRTCVideoDelegate 协议包含了SDK提供的回调方法,SDK通过代理向应用程序上报一些运行时事件
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数
返回名称
voidrtcEngine:onWarning:
voidrtcEngine:onError:
voidrtcEngine:onExtensionAccessError:msg:
voidrtcEngine:onCreateRoomStateChanged:errorCode:
voidrtcEngine:onConnectionStateChanged:
voidrtcEngine:onNetworkTypeChanged:
voidrtcEngine:onUserStartAudioCapture:uid:
voidrtcEngine:onUserStopAudioCapture:uid:
voidrtcEngine:onFirstRemoteAudioFrame:
voidrtcEngine:onLocalAudioPropertiesReport:
voidrtcEngine:onAudioPlaybackDeviceTestVolume:
voidrtcEngine:onAudioDeviceVolumeChanged:volume:muted:
voidrtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume:
voidrtcEngine:onActiveSpeaker:uid:
voidrtcEngine:onUserStartVideoCapture:uid:
voidrtcEngine:onUserStopVideoCapture:uid:
voidrtcEngine:onFirstLocalVideoFrameCaptured:withFrameInfo:
voidrtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo:
voidrtcEngine:onFirstRemoteVideoFrameDecoded:withFrameInfo:
voidrtcEngine:onRemoteVideoSizeChanged:withFrameInfo:
voidrtcEngine:onLocalVideoSizeChanged:withFrameInfo:
voidrtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error:
voidrtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error:
voidrtcEngine:onAudioDeviceWarning:deviceType:deviceWarning:
voidrtcEngine:onVideoDeviceWarning:deviceType:deviceWarning:
voidrtcEngine:onAudioFrameSendStateChanged:rtcUser:state:
voidrtcEngine:onVideoFrameSendStateChanged:rtcUser:state:
voidrtcEngine:onScreenVideoFrameSendStateChanged:rtcUser:state:
voidrtcEngine:onAudioFramePlayStateChanged:rtcUser:state:
voidrtcEngine:onVideoFramePlayStateChanged:rtcUser:state:
voidrtcEngine:onScreenVideoFramePlayStateChanged:rtcUser:state:
voidrtcEngine:onFirstLocalAudioFrame:
voidrtcEngine:onSEIMessageReceived:andMessage:
voidrtcEngine:onSEIStreamUpdate:eventType:
voidrtcEngine:onStreamSyncInfoReceived:streamType:data:
voidrtcEngine:onSysStats:
voidrtcEngine:onRemoteAudioStateChanged:state:reason:
voidrtcEngine:onRemoteVideoStateChanged:withVideoState:withVideoStateReason:
voidrtcEngine:onLoginResult:errorCode:elapsed:
voidrtcEngineOnLogout:
voidrtcEngine:onServerParamsSetResult:
voidrtcEngine:onGetPeerOnlineStatus:status:
voidrtcEngine:onUserMessageReceivedOutsideRoom:message:
voidrtcEngine:onUserBinaryMessageReceivedOutsideRoom:message:
voidrtcEngine:onUserMessageSendResultOutsideRoom:error:
voidrtcEngine:onServerMessageSendResult:error:message:
voidrtcEngine:onNetworkDetectionResult:quality:rtt:lostRate:bitrate:jitter:
voidrtcEngine:onNetworkDetectionStopped:
voidrtcEngine:onAudioMixingPlayingProgress:progress:
voidrtcEngine:onPerformanceAlarms:roomId:reason:sourceWantedData:
voidrtcEngine:onSimulcastSubscribeFallback:
voidrtcEngine:onExternalScreenFrameUpdate:
voidrtcEngine:onRecordingStateUpdate:state:error_code:recording_info:
voidrtcEngine:onRecordingProgressUpdate:process:recording_info:
voidrtcEngine:onAudioRecordingStateUpdate:error_code:
voidrtcEngine:onPushPublicStreamResult:publicStreamId:errorCode:
voidrtcEngine:onPlayPublicStreamResult:errorCode:
voidrtcEngine:onPublicStreamSEIMessageReceived:andMessage:andSourceType:
voidrtcEngine:onPublicStreamDataMessageReceived:andMessage:andSourceType:
voidrtcEngine:onFirstPublicStreamVideoFrameDecoded:withFrameInfo:
voidrtcEngine:onFirstPublicStreamAudioFrame:
voidrtcEngine:onCloudProxyConnected:
voidrtcEngine:onEchoTestResult:
voidrtcEngineOnNetworkTimeSynchronized:
voidrtcEngine:onLicenseWillExpire:
voidrtcEngine:onHardwareEchoDetectionResult:
voidrtcEngine:onLocalProxyStateChanged:withProxyState:withProxyError:
void[deprecated] rtcEngine:onUserMuteAudio:uid:muteState:
void[deprecated] rtcEngine:onUserMuteVideo:uid:withMuteState:
void[deprecated] rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:
void[deprecated] rtcEngine:onMediaDeviceWarning:deviceType:deviceWarning:
void[deprecated] rtcEngine:onLocalAudioStateChanged:error:
void[deprecated] rtcEngine:onLocalVideoStateChanged:withStreamState:withStreamError:
void[deprecated] rtcEngine:log:
void[deprecated] rtcEngine:onAudioMixingStateChanged:state:error:
void[deprecated] rtcEngine:onHttpProxyState:
void[deprecated] rtcEngine:onHttpsProxyState:
void[deprecated] rtcEngine:onSocks5ProxyState:cmd:proxy_address:local_address:remote_address:
函数说明

rtcEngine:onWarning:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onWarning:(ByteRTCWarningCode)code;
objectivec

发生警告回调。

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象。
codeByteRTCWarningCode警告代码,参看 ByteRTCWarningCode。

rtcEngine:onError:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onError:(ByteRTCErrorCode)errorCode;
objectivec

发生错误回调。

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

你可能需要干预.

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象。
errorCodeByteRTCErrorCode错误代码,参看 ByteRTCErrorCode。

rtcEngine:onExtensionAccessError:msg:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onExtensionAccessError:(NSString * _Nonnull)extensionName msg:(NSString * _Nonnull)msg;
objectivec

Available since 3.52

当访问插件失败时,收到此回调。
RTC SDK 将一些功能封装成插件。当使用这些功能时,如果插件不存在,功能将无法使用。

传入参数

参数名类型说明
extensionNameNSString*插件名字
msgNSString*失败说明

rtcEngine:onCreateRoomStateChanged:errorCode:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onCreateRoomStateChanged:(NSString * _Nonnull)roomId errorCode:(NSInteger)errorCode;
objectivec

创建房间失败回调。

传入参数

参数名类型说明
roomIdNSString*房间 ID。
errorCodeNSInteger创建房间错误码,具体原因参看 ByteRTCErrorCode。

rtcEngine:onConnectionStateChanged:
- (void) rtcEngine:(ByteRTCVideo * _Nonnull)engine onConnectionStateChanged:(ByteRTCConnectionState) state;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
stateByteRTCConnectionState当前 SDK 与信令服务器的连接状态,详见 ByteRTCConnectionState。

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

rtcEngine:onNetworkTypeChanged:
- (void) rtcEngine:(ByteRTCVideo * _Nonnull)engine onNetworkTypeChanged:(ByteRTCNetworkType) type;
objectivec

SDK 当前网络连接类型改变回调。

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
typeByteRTCNetworkTypeSDK 当前的网络连接类型,详见 ByteRTCNetworkType

rtcEngine:onUserMuteAudio:uid:muteState:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onUserMuteAudio:(NSString * _Nonnull)roomId uid:(NSString * _Nonnull)uid muteState:(ByteRTCMuteState)muteState __deprecated_msg("Will be removed in new version");
objectivec

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

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 实例
uidNSString*改变本地音频发送状态的用户 ID
muteStateByteRTCMuteState发送状态,参看 ByteRTCMuteState

rtcEngine:onUserStartAudioCapture:uid:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onUserStartAudioCapture:(NSString* _Nonnull)roomId uid:(NSString *_Nonnull)userId;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 实例
roomIdNSString*开启音频采集的用户所在的房间 ID
userIdNSString*开启音频采集的远端用户 ID

rtcEngine:onUserStopAudioCapture:uid:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onUserStopAudioCapture:(NSString* _Nonnull)roomId uid:(NSString *_Nonnull)userId;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 实例
roomIdNSString*关闭音频采集的用户所在的房间 ID
userIdNSString*关闭音频采集的远端用户 ID

rtcEngine:onFirstRemoteAudioFrame:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onFirstRemoteAudioFrame:(ByteRTCRemoteStreamKey * _Nonnull)key;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
keyByteRTCRemoteStreamKey*远端流信息, 详见 ByteRTCRemoteStreamKey

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

rtcEngine:onLocalAudioPropertiesReport:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onLocalAudioPropertiesReport:(NSArray<ByteRTCLocalAudioPropertiesInfo *> * _Nonnull)audioPropertiesInfos;
objectivec

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

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
audioPropertiesInfosNSArray<ByteRTCLocalAudioPropertiesInfo>**本地音频信息,详见 ByteRTCLocalAudioPropertiesInfo 。

rtcEngine:onAudioPlaybackDeviceTestVolume:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onAudioPlaybackDeviceTestVolume:(int)volume;
objectivec

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

传入参数

参数名类型说明
volumeint音频设备测试播放音量。单位:毫秒。推荐设置为 200 ms。范围:[0,255]

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

rtcEngine:onAudioDeviceVolumeChanged:volume:muted:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onAudioDeviceVolumeChanged:(ByteRTCAudioDeviceType)deviceType volume:(int)volume muted:(bool)muted;
objectivec

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

传入参数

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

rtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onRemoteAudioPropertiesReport:(NSArray<ByteRTCRemoteAudioPropertiesInfo *> * _Nonnull)audioPropertiesInfos totalRemoteVolume:(NSInteger)totalRemoteVolume;
objectivec

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

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
audioPropertiesInfosNSArray<ByteRTCRemoteAudioPropertiesInfo>**远端音频信息,其中包含音频流属性、房间 ID、用户 ID ,详见 ByteRTCRemoteAudioPropertiesInfo。
totalRemoteVolumeNSInteger订阅的所有远端流的总音量,范围是 [0,255]。
• [0,25] 接近无声;
• [25,75] 为低音量;
• [76,204] 为中音量;
• [205,255] 为高音量。

rtcEngine:onActiveSpeaker:uid:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onActiveSpeaker:(NSString * _Nonnull)roomId uid:(NSString *_Nonnull)uid;
objectivec

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

传入参数

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

rtcEngine:onUserMuteVideo:uid:withMuteState:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onUserMuteVideo:(NSString * _Nonnull)roomId uid:(NSString * _Nonnull)uid withMuteState:(ByteRTCMuteState)muteState ;
objectivec

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

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 实例
uidNSString*暂停/恢复发送视频流的用户 ID。
muteStateByteRTCMuteState视频流的发送状态。参看 ByteRTCMuteState。

rtcEngine:onUserStartVideoCapture:uid:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onUserStartVideoCapture:(NSString * _Nonnull)roomId uid:(NSString * _Nonnull)uid;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 实例
roomIdNSString*开启视频采集的用户所在的房间 ID
uidNSString*调用 startVideoCapture 接口的远端用户 ID

rtcEngine:onUserStopVideoCapture:uid:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onUserStopVideoCapture:(NSString * _Nonnull)roomId uid:(NSString * _Nonnull)uid;
objectivec

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 实例
roomIdNSString*关闭视频采集的用户所在的房间 ID
uidNSString*关闭视频采集的远端用户 ID

rtcEngine:onFirstLocalVideoFrameCaptured:withFrameInfo:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onFirstLocalVideoFrameCaptured:(ByteRTCStreamIndex)streamIndex withFrameInfo:(ByteRTCVideoFrameInfo * _Nonnull)frameInfo;
objectivec

第一帧本地采集的视频/屏幕共享画面在本地视图渲染完成时,收到此回调。

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
streamIndexByteRTCStreamIndex流属性,参看 ByteRTCStreamIndex
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onFirstRemoteVideoFrameRendered:(ByteRTCRemoteStreamKey * _Nonnull)streamKey withFrameInfo:(ByteRTCVideoFrameInfo * _Nonnull)frameInfo;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
streamKeyByteRTCRemoteStreamKey*远端流信息,参看 ByteRTCRemoteStreamKey
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

rtcEngine:onFirstRemoteVideoFrameDecoded:withFrameInfo:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onFirstRemoteVideoFrameDecoded:(ByteRTCRemoteStreamKey * _Nonnull)streamKey withFrameInfo:(ByteRTCVideoFrameInfo * _Nonnull)frameInfo;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
streamKeyByteRTCRemoteStreamKey*远端流信息,参看 ByteRTCRemoteStreamKey
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

注意

rtcEngine:onRemoteVideoSizeChanged:withFrameInfo:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onRemoteVideoSizeChanged:(ByteRTCRemoteStreamKey *_Nonnull)streamKey withFrameInfo:(ByteRTCVideoFrameInfo *_Nonnull)frameInfo;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
streamKeyByteRTCRemoteStreamKey*流属性,参看 ByteRTCRemoteStreamKey
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

rtcEngine:onLocalVideoSizeChanged:withFrameInfo:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onLocalVideoSizeChanged:(ByteRTCStreamIndex)streamIndex withFrameInfo:(ByteRTCVideoFrameInfo *_Nonnull)frameInfo;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
streamIndexByteRTCStreamIndex流属性,参看 ByteRTCStreamIndex
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onMediaDeviceStateChanged:(NSString*_Nonnull)deviceID device_type:(ByteRTCMediaDeviceType)deviceType device_state:(ByteRTCMediaDeviceState)deviceState device_error:(ByteRTCMediaDeviceError)deviceError;
objectivec

Deprecated since 3.37 and will be deleted in 3.51, use rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error: and rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error: instead.

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 实例
deviceIDNSString*设备 ID
deviceTypeByteRTCMediaDeviceType设备类型,参看 ByteRTCMediaDeviceType。
deviceStateByteRTCMediaDeviceState设备状态,参看 ByteRTCMediaDeviceState。
deviceErrorByteRTCMediaDeviceError设备错误类型,参看 ByteRTCMediaDeviceError。

rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onAudioDeviceStateChanged:(NSString*_Nonnull)deviceID device_type:(ByteRTCAudioDeviceType)deviceType device_state:(ByteRTCMediaDeviceState)deviceState device_error:(ByteRTCMediaDeviceError)deviceError;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 实例
deviceIDNSString*设备 ID
deviceTypeByteRTCAudioDeviceType设备类型,参看 ByteRTCAudioDeviceType。
deviceStateByteRTCMediaDeviceState设备状态,参看 ByteRTCMediaDeviceState。
deviceErrorByteRTCMediaDeviceError设备错误类型,参看 ByteRTCMediaDeviceError。

rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onVideoDeviceStateChanged:(NSString*_Nonnull)deviceID device_type:(ByteRTCVideoDeviceType)deviceType device_state:(ByteRTCMediaDeviceState)deviceState device_error:(ByteRTCMediaDeviceError)deviceError;
objectivec

视频设备状态发生改变回调。当设备的视频状态发生改变时,SDK 会触发该回调,提示摄像头视频采集、屏幕视频采集等设备的状态。

传入参数

参数名类型说明
deviceIDNSString*设备 ID
deviceTypeByteRTCVideoDeviceType设备类型,参看 ByteRTCVideoDeviceType。
deviceStateByteRTCMediaDeviceState设备状态,参看 ByteRTCMediaDeviceState。
deviceErrorByteRTCMediaDeviceError设备错误类型,参看 ByteRTCMediaDeviceError。

rtcEngine:onMediaDeviceWarning:deviceType:deviceWarning:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onMediaDeviceWarning:(NSString*_Nonnull)deviceId deviceType:(ByteRTCMediaDeviceType)deviceType deviceWarning:(ByteRTCMediaDeviceWarning)deviceWarning;
objectivec

Deprecated since 3.37 and will be deleted in 3.51, use rtcEngine:onAudioDeviceWarning:deviceType:deviceWarning: and rtcEngine:onVideoDeviceWarning:deviceType:deviceWarning: instead.

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
deviceIdNSString*设备 ID
deviceTypeByteRTCMediaDeviceType参看 ByteRTCMediaDeviceType
deviceWarningByteRTCMediaDeviceWarning参看 ByteRTCMediaDeviceWarning

rtcEngine:onAudioDeviceWarning:deviceType:deviceWarning:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onAudioDeviceWarning:(NSString*_Nonnull)deviceId deviceType:(ByteRTCAudioDeviceType)deviceType deviceWarning:(ByteRTCMediaDeviceWarning)deviceWarning;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
deviceIdNSString*设备 ID
deviceTypeByteRTCAudioDeviceType参看 ByteRTCAudioDeviceType
deviceWarningByteRTCMediaDeviceWarning参看 ByteRTCMediaDeviceWarning

rtcEngine:onVideoDeviceWarning:deviceType:deviceWarning:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onVideoDeviceWarning:(NSString*_Nonnull)deviceId deviceType:(ByteRTCVideoDeviceType)deviceType deviceWarning:(ByteRTCMediaDeviceWarning)deviceWarning;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
deviceIdNSString*设备 ID
deviceTypeByteRTCVideoDeviceType参看 ByteRTCVideoDeviceType
deviceWarningByteRTCMediaDeviceWarning参看 ByteRTCMediaDeviceWarning

rtcEngine:onAudioFrameSendStateChanged:rtcUser:state:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onAudioFrameSendStateChanged:(NSString * _Nonnull)roomId rtcUser:(ByteRTCUser *_Nonnull)user state:(ByteRTCFirstFrameSendState)state;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
roomIdNSString*音频流发布用户所在的房间 ID
userByteRTCUser*本地用户信息,详见 ByteRTCUser
stateByteRTCFirstFrameSendState首帧发送状态,详见 ByteRTCFirstFrameSendState

rtcEngine:onVideoFrameSendStateChanged:rtcUser:state:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onVideoFrameSendStateChanged:(NSString * _Nonnull)roomId rtcUser:(ByteRTCUser *_Nonnull)user state:(ByteRTCFirstFrameSendState)state;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
roomIdNSString*视频流发布用户所在的房间 ID
userByteRTCUser*本地用户信息,详见 ByteRTCUser
stateByteRTCFirstFrameSendState首帧发送状态,详见 ByteRTCFirstFrameSendState

rtcEngine:onScreenVideoFrameSendStateChanged:rtcUser:state:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onScreenVideoFrameSendStateChanged:(NSString * _Nonnull)roomId rtcUser:(ByteRTCUser *_Nonnull)user state:(ByteRTCFirstFrameSendState)state;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象。
roomIdNSString*屏幕流发布用户所在的房间 ID
userByteRTCUser*本地用户信息,参看 ByteRTCUser
stateByteRTCFirstFrameSendState首帧发送状态,参看 ByteRTCFirstFrameSendState

rtcEngine:onAudioFramePlayStateChanged:rtcUser:state:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onAudioFramePlayStateChanged:(NSString * _Nonnull)roomId rtcUser:(ByteRTCUser *_Nonnull)user state:(ByteRTCFirstFramePlayState)state;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象。
roomIdNSString*音频流发布用户所在的房间 ID
userByteRTCUser*音频流来源的用户信息,参看 ByteRTCUser
stateByteRTCFirstFramePlayState首帧播放状态,参看 ByteRTCFirstFramePlayState

rtcEngine:onVideoFramePlayStateChanged:rtcUser:state:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onVideoFramePlayStateChanged:(NSString * _Nonnull)roomId rtcUser:(ByteRTCUser *_Nonnull)user state:(ByteRTCFirstFramePlayState)state;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象。
userByteRTCUser*视频流来源的用户信息,参看 ByteRTCUser
roomIdNSString*视频流发布用户所在的房间 ID
stateByteRTCFirstFramePlayState首帧播放状态,参看 ByteRTCFirstFramePlayState

rtcEngine:onScreenVideoFramePlayStateChanged:rtcUser:state:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onScreenVideoFramePlayStateChanged:(NSString * _Nonnull)roomId rtcUser:(ByteRTCUser *_Nonnull)user state:(ByteRTCFirstFramePlayState)state;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象。
roomIdNSString*屏幕流发布用户所在的房间 ID
userByteRTCUser*屏幕共享流来源的用户信息,参看 ByteRTCUser
stateByteRTCFirstFramePlayState首帧播放状态,参看 ByteRTCFirstFramePlayState

rtcEngine:onFirstLocalAudioFrame:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onFirstLocalAudioFrame:(ByteRTCStreamIndex) streamIndex;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
streamIndexByteRTCStreamIndex音频流属性, 详见 ByteRTCStreamIndex

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

rtcEngine:onSEIMessageReceived:andMessage:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onSEIMessageReceived:(ByteRTCRemoteStreamKey* _Nonnull)remoteStreamKey andMessage:(NSData* _Nonnull)message;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*当前 ByteRTCVideo 实例。
remoteStreamKeyByteRTCRemoteStreamKey*包含 SEI 发送者的用户名,所在的房间名和媒体流,参看 ByteRTCRemoteStreamKey
messageNSData*收到的 SEI 消息内容

rtcEngine:onSEIStreamUpdate:eventType:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onSEIStreamUpdate:(ByteRTCRemoteStreamKey* _Nonnull)remoteStreamKey eventType:(ByteSEIStreamEventType)eventType;
objectivec

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

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

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

传入参数

参数名类型说明
engineByteRTCVideo*当前 ByteRTCVideo 实例。
remoteStreamKeyByteRTCRemoteStreamKey*远端流信息,参看 ByteRTCRemoteStreamKey。
eventTypeByteSEIStreamEventType黑帧视频流状态,参看 ByteSEIStreamEventType

rtcEngine:onStreamSyncInfoReceived:streamType:data:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onStreamSyncInfoReceived:(ByteRTCRemoteStreamKey* _Nonnull)remoteStreamKey streamType:(ByteRTCSyncInfoStreamType)streamType data:(NSData* _Nonnull)data;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*当前 ByteRTCVideo 实例。
remoteStreamKeyByteRTCRemoteStreamKey*远端流信息,详见 ByteRTCRemoteStreamKey 。
streamTypeByteRTCSyncInfoStreamType媒体流类型,详见 ByteRTCSyncInfoStreamType 。
dataNSData*消息内容。

rtcEngine:onSysStats:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onSysStats:(const ByteRTCSysStats * _Nonnull)stats;
objectivec

报告当前设备 cpu 与 memory 使用率,每 2s 触发一次。

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
statsconst ByteRTCSysStats*cpu 和 memory 使用率信息,详见 ByteRTCSysStats 数据类型

rtcEngine:onLocalAudioStateChanged:error:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onLocalAudioStateChanged:(ByteRTCLocalAudioStreamState)state error:(ByteRTCLocalAudioStreamError)error;
objectivec

Deprecated since 3.50 and will be deleted in 3.55. Use rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error: instead.

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
stateByteRTCLocalAudioStreamState本地音频设备的当前状态,详见 ByteRTCLocalAudioStreamState
errorByteRTCLocalAudioStreamError本地音频流状态改变时的错误码,详见 ByteRTCLocalAudioStreamError

rtcEngine:onRemoteAudioStateChanged:state:reason:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onRemoteAudioStateChanged:(ByteRTCRemoteStreamKey * _Nonnull)key state:(ByteRTCRemoteAudioState)state reason:(ByteRTCRemoteAudioStateChangeReason)reason;
objectivec

订阅的远端音频流状态发生改变时,收到此回调。

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
keyByteRTCRemoteStreamKey*远端流信息, 详见 ByteRTCRemoteStreamKey
stateByteRTCRemoteAudioState远端音频流的当前状态,详见 ByteRTCRemoteAudioState
reasonByteRTCRemoteAudioStateChangeReason远端音频流状态改变的原因,详见 ByteRTCRemoteAudioStateChangeReason

rtcEngine:onLocalVideoStateChanged:withStreamState:withStreamError:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onLocalVideoStateChanged:(ByteRTCStreamIndex)streamIndex withStreamState:(ByteRTCLocalVideoStreamState)state withStreamError:(ByteRTCLocalVideoStreamError)error;
objectivec

Deprecated since 3.50 and will be deleted in 3.55. Use rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error: instead.

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
streamIndexByteRTCStreamIndex流属性,参看 ByteRTCStreamIndex
stateByteRTCLocalVideoStreamState本地视频流的当前状态,参看 ByteRTCLocalVideoStreamState
errorByteRTCLocalVideoStreamError本地视频状态改变时的错误码,参看 ByteRTCLocalVideoStreamError

rtcEngine:onRemoteVideoStateChanged:withVideoState:withVideoStateReason:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onRemoteVideoStateChanged:(ByteRTCRemoteStreamKey*_Nonnull)streamKey withVideoState:(ByteRTCRemoteVideoState)state withVideoStateReason:(ByteRTCRemoteVideoStateChangeReason)reason;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
streamKeyByteRTCRemoteStreamKey*远端视频流信息,房间、用户 ID、流属性等,参看 ByteRTCRemoteStreamKey
stateByteRTCRemoteVideoState远端视频流的当前状态,参看 ByteRTCRemoteVideoState
reasonByteRTCRemoteVideoStateChangeReason远端视频流状态改变的原因,参看 ByteRTCRemoteVideoStateChangeReason

rtcEngine:onLoginResult:errorCode:elapsed:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onLoginResult:(NSString * _Nonnull)uid errorCode:(ByteRTCLoginErrorCode)errorCode elapsed:(NSInteger)elapsed;
objectivec

登录结果回调

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
uidNSString*登录用户 ID
errorCodeByteRTCLoginErrorCode登录结果
详见 ByteRTCLoginErrorCode。
elapsedNSInteger从调用 login:uid: 接口开始到返回结果所用时长。
单位为 ms。

注意
调用 login:uid: 后,会收到此回调。

rtcEngineOnLogout:
- (void)rtcEngineOnLogout:(ByteRTCVideo * _Nonnull)engine;
objectivec

登出结果回调

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象

注意
调用 logout 后,会收到此回调。

rtcEngine:onServerParamsSetResult:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onServerParamsSetResult:(NSInteger)errorCode;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
errorCodeNSInteger设置结果
• 返回 200,设置成功
• 返回其他,设置失败,详见 ByteRTCUserMessageSendResult

注意
调用 setServerParams:url: 后,会收到此回调。

rtcEngine:onGetPeerOnlineStatus:status:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onGetPeerOnlineStatus:(NSString * _Nonnull)peerUserId status:(ByteRTCUserOnlineStatus)status;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
peerUserIdNSString*需要查询的用户 ID
statusByteRTCUserOnlineStatus查询的用户登录状态
详见 ByteRTCUserOnlineStatus.

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

rtcEngine:onUserMessageReceivedOutsideRoom:message:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onUserMessageReceivedOutsideRoom:(NSString * _Nonnull)uid message:(NSString * _Nonnull)message;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
uidNSString*消息发送者 ID
messageNSString*收到的文本消息内容

rtcEngine:onUserBinaryMessageReceivedOutsideRoom:message:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onUserBinaryMessageReceivedOutsideRoom:(NSString * _Nonnull)uid message:(NSData * _Nonnull)message;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
uidNSString*消息发送者 ID
messageNSData*收到的二进制消息内容

rtcEngine:onUserMessageSendResultOutsideRoom:error:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onUserMessageSendResultOutsideRoom:(NSInteger)msgid error:(ByteRTCUserMessageSendResult)error;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
msgidNSInteger本条消息的 ID
所有的 P2P 和 P2Server 消息共用一个 ID 序列。
errorByteRTCUserMessageSendResult消息发送结果
详见 ByteRTCUserMessageSendResult。

注意
当调用 sendUserMessageOutsideRoom:message:config: 或 sendUserBinaryMessageOutsideRoom:message:config: 发送消息后,会收到此回调。

rtcEngine:onServerMessageSendResult:error:message:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onServerMessageSendResult:(int64_t)msgid error:(ByteRTCUserMessageSendResult)error message:(NSData * _Nonnull)message;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象。
msgidint64_t本条消息的 ID。
所有的 P2P 和 P2Server 消息共用一个 ID 序列。
errorByteRTCUserMessageSendResult消息发送结果。详见 ByteRTCUserMessageSendResult。
messageNSData*应用服务器收到 HTTP 请求后,在 ACK 中返回的信息。消息不超过 64 KB。

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

rtcEngine:onNetworkDetectionResult:quality:rtt:lostRate:bitrate:jitter:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onNetworkDetectionResult:(ByteRTCNetworkDetectionLinkType)type quality:(ByteRTCNetworkQuality)quality rtt:(int)rtt lostRate:(double)lostRate bitrate:(int)bitrate jitter:(int)jitter;
objectivec

通话前网络探测结果的回调。

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
typeByteRTCNetworkDetectionLinkType探测网络类型为上行/下行
qualityByteRTCNetworkQuality探测网络的质量,参看 ByteRTCNetworkQuality。
rttint探测网络的 RTT,单位:ms
lostRatedouble探测网络的丢包率
bitrateint探测网络的带宽,单位:kbps
jitterint探测网络的抖动,单位:ms

rtcEngine:onNetworkDetectionStopped:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onNetworkDetectionStopped:(ByteRTCNetworkDetectionStopReason)errorCode;
objectivec

通话前网络探测结束

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

  1. 当调用 stopNetworkDetection 接口停止探测后,会收到一次该回调;
  2. 当收到远端/本端音频首帧后,停止探测;
  3. 当探测超过3分钟后,停止探测;
  4. 当探测链路断开一定时间之后,停止探测。

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
errorCodeByteRTCNetworkDetectionStopReason停止探测的原因类型,参考 ByteRTCNetworkDetectionStopReason

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

Deprecated since 3.45 and will be deleted in 3.51.

SDK 内部日志回调。

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象。
dictNSDictionary*日志内容。

rtcEngine:onAudioMixingStateChanged:state:error:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onAudioMixingStateChanged:(NSInteger)mixId state:(ByteRTCAudioMixingState)state error:(ByteRTCAudioMixingError)error;
objectivec

Deprecated since 353. Use ByteRTCAudioEffectPlayerEventHandler and ByteRTCMediaPlayerEventHandler instead.

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

传入参数

参数名类型说明
engineByteRTCVideo*当前 RTC SDK 对象
mixIdNSInteger混音 ID
使用 ByteRTCAudioMixingManager 相关接口时传入的唯一 ID。
stateByteRTCAudioMixingState混音状态
其混音状态可参考:ByteRTCAudioMixingState。
errorByteRTCAudioMixingError错误码
详见 ByteRTCAudioMixingError。

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

rtcEngine:onAudioMixingPlayingProgress:progress:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onAudioMixingPlayingProgress:(NSInteger)mixId progress:(int64_t) progress;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*当前 RTC SDK 对象
mixIdNSInteger混音 ID
progressint64_t当前混音音频文件播放进度,单位毫秒

注意
调用 setAudioMixingProgressInterval:interval: 将时间间隔设为大于 0 的值后,或调用 startAudioMixing:filePath:config: 将 ByteRTCAudioMixingConfig 中的时间间隔设为大于 0 的值后,SDK 会按照设置的时间间隔回调该事件。

rtcEngine:onPerformanceAlarms:roomId:reason:sourceWantedData:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onPerformanceAlarms:(ByteRTCPerformanceAlarmMode)mode roomId:(NSString *_Nonnull)roomId reason:(ByteRTCPerformanceAlarmReason)reason sourceWantedData:(ByteRTCSourceWantedData *_Nonnull)data;
objectivec

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

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

传入参数

参数名类型说明
modeByteRTCPerformanceAlarmMode指示本地是否开启发布回退功能。参看 ByteRTCPerformanceAlarmMode
• 当发布端未开启发布性能回退时,mode 值为 ByteRTCPerformanceAlarmModeNormal。
• 当发布端开启发布性能回退时,mode 值为 ByteRTCPerformanceAlarmModeSimulcast。
roomIdNSString*• 未开启发布性能回退时,roomId 为空
• 开启发布性能回退时,roomId 是告警影响的房间 ID。
reasonByteRTCPerformanceAlarmReason告警原因,参看 ByteRTCPerformanceAlarmReason
dataByteRTCSourceWantedData*性能回退相关数据,详见 ByteRTCSourceWantedData。

rtcEngine:onSimulcastSubscribeFallback:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onSimulcastSubscribeFallback:(ByteRTCRemoteStreamSwitchEvent *_Nonnull)event;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*当前 ByteRTCVideo 实例
eventByteRTCRemoteStreamSwitchEvent*流切换信息。详见 ByteRTCRemoteStreamSwitchEvent。

rtcEngine:onExternalScreenFrameUpdate:
- (void)rtcEngine: (ByteRTCVideo* _Nonnull)engine onExternalScreenFrameUpdate: (ByteRTCFrameUpdateInfo* _Nullable)frameUpdateInfo;
objectivec

外部采集时,调用 setOriginalScreenVideoInfo:withOriginalCaptureHeight: 设置屏幕或窗口大小改变前的分辨率后,若屏幕采集模式为智能模式,你将收到此回调,根据 RTC 智能决策合适的帧率和分辨率积(宽*高)重新采集。

传入参数

参数名类型说明
frameUpdateInfoByteRTCFrameUpdateInfo*RTC 智能决策后合适的帧率和分辨率积(宽*高)。参看 ByteRTCFrameUpdateInfo。

rtcEngine:onHttpProxyState:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onHttpProxyState:(NSInteger)state;
objectivec

Deprecated 在3.52及之后废弃,将在3.57删除,使用 rtcEngine:onLocalProxyStateChanged:withProxyState:withProxyError: 替换

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
stateNSInteger当前 HTTP 代理连接状态

rtcEngine:onHttpsProxyState:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onHttpsProxyState:(NSInteger)state;
objectivec

Deprecated 在3.52及之后废弃,将在3.57删除,使用 rtcEngine:onLocalProxyStateChanged:withProxyState:withProxyError: 替换

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
stateNSInteger当前 HTTPS 代理连接状态

rtcEngine:onSocks5ProxyState:cmd:proxy_address:local_address:remote_address:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onSocks5ProxyState:(NSInteger)state cmd:(NSString *_Nonnull)cmd proxy_address:(NSString *_Nonnull)proxyAddress local_address:(NSString *_Nonnull)localAddress remote_address:(NSString *_Nonnull)remoteAddress;
objectivec

Deprecated 在3.52及之后废弃,将在3.57删除,使用 rtcEngine:onLocalProxyStateChanged:withProxyState:withProxyError: 替换

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
stateNSIntegerSOCKS5 代理连接状态
cmdNSString*代理连接的每一步操作命令
proxyAddressNSString*代理地址信息
localAddressNSString*当前连接使用的本地地址
remoteAddressNSString*远端的连接地址

rtcEngine:onRecordingStateUpdate:state:error_code:recording_info:
- (void)rtcEngine:(ByteRTCVideo* _Nonnull)engine onRecordingStateUpdate:(ByteRTCStreamIndex)type state:(ByteRTCRecordingState)state error_code:(ByteRTCRecordingErrorCode)errorCode recording_info:(ByteRTCRecordingInfo* _Nonnull)recordingInfo;
objectivec

获取本地录制状态回调。

该回调由 startFileRecording:withRecordingConfig:type: 或 stopFileRecording: 触发。

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
typeByteRTCStreamIndex录制流的流属性,参看 ByteRTCStreamIndex
stateByteRTCRecordingState录制状态,参看 ByteRTCRecordingState
errorCodeByteRTCRecordingErrorCode录制错误码,参看 ByteRTCRecordingErrorCode
recordingInfoByteRTCRecordingInfo*录制文件的详细信息,参看 ByteRTCRecordingInfo

rtcEngine:onRecordingProgressUpdate:process:recording_info:
- (void)rtcEngine:(ByteRTCVideo* _Nonnull)engine onRecordingProgressUpdate:(ByteRTCStreamIndex)type process:(ByteRTCRecordingProgress* _Nonnull)process recording_info:(ByteRTCRecordingInfo* _Nonnull)recordingInfo;
objectivec

本地录制进度回调。

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
typeByteRTCStreamIndex录制流的流属性,参看 ByteRTCStreamIndex
processByteRTCRecordingProgress*录制进度,参看 ByteRTCRecordingProgress
recordingInfoByteRTCRecordingInfo*录制文件的详细信息,参看 ByteRTCRecordingInfo

rtcEngine:onAudioRecordingStateUpdate:error_code:
- (void)rtcEngine:(ByteRTCVideo* _Nonnull)engine onAudioRecordingStateUpdate:(ByteRTCAudioRecordingState)state error_code:(ByteRTCAudioRecordingErrorCode)errorCode;
objectivec

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

传入参数

参数名类型说明
stateByteRTCAudioRecordingState录制状态,参看 ByteRTCAudioRecordingState
errorCodeByteRTCAudioRecordingErrorCode录制错误码,参看 ByteRTCAudioRecordingErrorCode

rtcEngine:onPushPublicStreamResult:publicStreamId:errorCode:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onPushPublicStreamResult:(NSString *_Nonnull)roomId publicStreamId:(NSString *_Nonnull)streamId errorCode:(ByteRTCPublicStreamErrorCode)errorCode;
objectivec

公共流发布结果回调。

调用 startPushPublicStream:withLayout:

接口或直接在服务端启动推公共流功能后,你会通过此回调收到启动结果和推流过程中的错误。

传入参数

参数名类型说明
engineByteRTCVideo*engine 实例
roomIdNSString*发布公共流的房间 ID
streamIdNSString*公共流ID。
errorCodeByteRTCPublicStreamErrorCode公共流发布结果状态码。 详见 ByteRTCPublicStreamErrorCode。

rtcEngine:onPlayPublicStreamResult:errorCode:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onPlayPublicStreamResult:(NSString *_Nonnull)publicStreamId errorCode:(ByteRTCPublicStreamErrorCode)errorCode;
objectivec

订阅公共流的结果回调

调用 startPlayPublicStream: 接口拉公共流后,你会通过此回调收到启动结果和拉流过程中的错误。

传入参数

参数名类型说明
engineByteRTCVideo*engine 实例
publicStreamIdNSString*公共流ID。
errorCodeByteRTCPublicStreamErrorCode公共流订阅结果状态码。 详见 ByteRTCPublicStreamErrorCode。

rtcEngine:onPublicStreamSEIMessageReceived:andMessage:andSourceType:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onPublicStreamSEIMessageReceived:(NSString* _Nonnull)publicStreamId andMessage:(NSData* _Nonnull)message andSourceType:(ByteRTCDataMessageSourceType)sourceType;
objectivec

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

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 实例。
publicStreamIdNSString*公共流 ID。
messageNSData*收到的 SEI 消息内容。
本回调可以获取通过调用客户端 sendSEIMessage:andMessage:andRepeatCount:andCountPerFrame: 插入的 SEI 信息。
当公共流中的多路视频流均包含有 SEI 信息:SEI 不互相冲突时,将通过多次回调分别发送;SEI 在同一帧有冲突时,则只有一条流中的 SEI 信息被透传并融合到公共流中。
sourceTypeByteRTCDataMessageSourceTypeSEI 消息类型,自 3.52.1 版本后固定为 0,自定义消息。参看 ByteRTCDataMessageSourceType。

注意
通过 Open API 插入的自定义信息,应通过回调 rtcEngine:onPublicStreamDataMessageReceived:andMessage:andSourceType: 获取。

rtcEngine:onPublicStreamDataMessageReceived:andMessage:andSourceType:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onPublicStreamDataMessageReceived:(NSString* _Nonnull)publicStreamId andMessage:(NSData* _Nonnull)message andSourceType:(ByteRTCDataMessageSourceType)sourceType;
objectivec

Available since 3.52

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

通过 startPlayPublicStream: 开始播放公共流后,通过此回调收到公共流中的数据消息。

传入参数

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

注意
通过调用客户端 API 插入的 SEI 信息,应通过回调 rtcEngine:onPublicStreamSEIMessageReceived:andMessage:andSourceType: 获取。

rtcEngine:onFirstPublicStreamVideoFrameDecoded:withFrameInfo:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onFirstPublicStreamVideoFrameDecoded:(NSString * _Nonnull)publicStreamId withFrameInfo:(ByteRTCVideoFrameInfo * _Nonnull)frameInfo;
objectivec

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

关于订阅公共流,详见 startPlayPublicStream:。

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
publicStreamIdNSString*公共流 ID
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

rtcEngine:onFirstPublicStreamAudioFrame:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onFirstPublicStreamAudioFrame:(NSString * _Nonnull)publicStreamId;
objectivec

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

关于订阅公共流,详见 startPlayPublicStream:。

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
publicStreamIdNSString*公共流 ID

rtcEngine:onCloudProxyConnected:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onCloudProxyConnected:(NSInteger)interval;
objectivec

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

传入参数

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

rtcEngine:onEchoTestResult:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onEchoTestResult:(ByteRTCEchoTestResult)result;
objectivec

关于音视频回路测试结果的回调。

传入参数

参数名类型说明
resultByteRTCEchoTestResult测试结果,参看 ByteRTCEchoTestResult。

注意
该回调触发的时机包括: + 检测过程中采集设备发生错误时;

rtcEngineOnNetworkTimeSynchronized:
- (void)rtcEngineOnNetworkTimeSynchronized:(ByteRTCVideo *_Nonnull)engine;
objectivec

首次调用 getNetworkTimeInfo 后,SDK 内部启动网络时间同步,同步完成时会触发此回调。

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象

rtcEngine:onLicenseWillExpire:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onLicenseWillExpire:(NSInteger)days;
objectivec

license过期时间提醒

传入参数

参数名类型说明
engineByteRTCVideo*ByteRTCVideo 对象
daysNSInteger过期时间天数

rtcEngine:onHardwareEchoDetectionResult:
- (void)rtcEngine:(ByteRTCVideo *_Nonnull)engine onHardwareEchoDetectionResult:(ByteRTCHardwareEchoDetectionResult)result;
objectivec

通话前回声检测结果回调。

传入参数

参数名类型说明
resultByteRTCHardwareEchoDetectionResult参见 ByteRTCHardwareEchoDetectionResult。

注意

rtcEngine:onLocalProxyStateChanged:withProxyState:withProxyError:
- (void)rtcEngine:(ByteRTCVideo * _Nonnull)engine onLocalProxyStateChanged:(ByteRTCLocalProxyType)type withProxyState:(ByteRTCLocalProxyState)state withProxyError:(ByteRTCLocalProxyError)error;
objectivec

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

传入参数

参数名类型说明
typeByteRTCLocalProxyType本地代理类型。参看 ByteRTCLocalProxyType 。
stateByteRTCLocalProxyState本地代理状态。参看 ByteRTCLocalProxyState。
errorByteRTCLocalProxyError本地代理错误。参看 ByteRTCLocalProxyError。
ByteRTCAudioFrameObserver
@protocol ByteRTCAudioFrameObserver <NSObject>
objectivec

音频数据回调观察者
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。
本接口类中的回调周期均为 20 ms。

成员函数
返回名称
voidonRecordAudioFrame:
voidonPlaybackAudioFrame:
voidonRemoteUserAudioFrame:audioFrame:
voidonMixedAudioFrame:
函数说明

onRecordAudioFrame:
- (void)onRecordAudioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

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

传入参数

参数名类型说明
audioFrameByteRTCAudioFrame*音频数据, 详见: ByteRTCAudioFrame

onPlaybackAudioFrame:
- (void)onPlaybackAudioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

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

传入参数

参数名类型说明
audioFrameByteRTCAudioFrame*音频数据, 详见: ByteRTCAudioFrame

onRemoteUserAudioFrame:audioFrame:
- (void)onRemoteUserAudioFrame:(ByteRTCRemoteStreamKey * _Nonnull)streamKey audioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

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

传入参数

参数名类型说明
streamKeyByteRTCRemoteStreamKey*远端流信息,参看 ByteRTCRemoteStreamKey。
audioFrameByteRTCAudioFrame*音频数据,参看 ByteRTCAudioFrame。

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

onMixedAudioFrame:
- (void)onMixedAudioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

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

传入参数

参数名类型说明
audioFrameByteRTCAudioFrame*音频数据, 详见: ByteRTCAudioFrame
ByteRTCAudioProcessor
@protocol ByteRTCAudioProcessor <NSObject>
objectivec

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

成员函数
返回名称
intprocessAudioFrame:
函数说明

processAudioFrame:
- (int)processAudioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

获取 RTC SDK 采集得到的音频帧,并进行自定义处理,最终将处理后的音频帧给到 RTC SDK 用于编码传输。

传入参数

参数名类型说明
audioFrameByteRTCAudioFrame*RTC SDK 采集到的音频帧,自定义处理可直接对音频 buffer 中的数据进行修改。参看 ByteRTCAudioFrame。

返回值

0: 未处理
>0: 处理成功
< 0: 处理失败

注意
在进行音频自定义处理前,你需要调用 registerLocalAudioProcessor 设置音频自定义处理器。

ByteRTCAudioFrameProcessor
@protocol ByteRTCAudioFrameProcessor <NSObject>
objectivec

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

成员函数
返回名称
intonProcessRecordAudioFrame:
intonProcessPlayBackAudioFrame:
intonProcessRemoteUserAudioFrame:audioFrame:
intonProcessScreenAudioFrame:
函数说明

onProcessRecordAudioFrame:
- (int)onProcessRecordAudioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

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

传入参数

参数名类型说明
audioFrameByteRTCAudioFrame*音频帧地址,参看 ByteRTCAudioFrame。

返回值

注意

onProcessPlayBackAudioFrame:
- (int)onProcessPlayBackAudioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

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

传入参数

参数名类型说明
audioFrameByteRTCAudioFrame*音频帧地址,参看 ByteRTCAudioFrame

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

onProcessRemoteUserAudioFrame:audioFrame:
- (int)onProcessRemoteUserAudioFrame:(ByteRTCRemoteStreamKey * _Nonnull)streamKey audioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

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

传入参数

参数名类型说明
streamKeyByteRTCRemoteStreamKey*音频流信息,参看 ByteRTCRemoteStreamKey
audioFrameByteRTCAudioFrame*音频帧地址,参看 ByteRTCAudioFrame

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

onProcessScreenAudioFrame:
- (int)onProcessScreenAudioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

回调屏幕共享的音频帧地址,供自定义音频处理。

传入参数

参数名类型说明
audioFrameByteRTCAudioFrame*音频帧地址,参看 ByteRTCAudioFrame。

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

ByteRTCMediaPlayerCustomSourceProvider
@protocol ByteRTCMediaPlayerCustomSourceProvider <NSObject>
objectivec

内存播放数据源回调

成员函数
返回名称
intonReadData:bufferSize:
int64_tonSeek:whence:
函数说明

onReadData:bufferSize:
-(int)onReadData:(uint8_t*_Nonnull) buffer bufferSize:(int)bufferSize;
objectivec

Available since 3.53

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

传入参数

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

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

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

onSeek:whence:
-(int64_t)onSeek:(int64_t)offset whence:(ByteRTCMediaPlayerCustomSourceSeekWhence)whence;
objectivec

Available since 3.53

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

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

传入参数

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

返回值

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

ByteRTCAudioEffectPlayerEventHandler
@protocol ByteRTCAudioEffectPlayerEventHandler <NSObject>
objectivec

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

成员函数
返回名称
voidonAudioEffectPlayerStateChanged:state:error:
函数说明

onAudioEffectPlayerStateChanged:state:error:
-(void)onAudioEffectPlayerStateChanged:(int)effectId state:(ByteRTCPlayerState)state error:(ByteRTCPlayerError)error;
objectivec

播放状态改变时回调。

传入参数

参数名类型说明
effectIdintByteRTCAudioEffectPlayer 的 ID。通过 getAudioEffectPlayer 设置。
stateByteRTCPlayerState混音状态。参考 ByteRTCPlayerState。
errorByteRTCPlayerError错误码。参考 ByteRTCPlayerError。
ByteRTCAudioFileFrameObserver
@protocol ByteRTCAudioFileFrameObserver <NSObject>
objectivec

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

成员函数
返回名称
void[deprecated] onAudioFileFrame:audioFrame:
函数说明

onAudioFileFrame:audioFrame:
- (void)onAudioFileFrame:(int)mixID audioFrame:(ByteRTCAudioFrame *_Nonnull)audioFrame __deprecated_msg("deprecated since 353.1, will be deleted in 359, use ByteRTCMediaPlayer instead");
objectivec

Deprecated since 353.1, will be deleted in 359, use ByteRTCMediaPlayer instead

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

传入参数

参数名类型说明
mixIDint混音 ID。
audioFrameByteRTCAudioFrame*参看 ByteRTCAudioFrame。
ByteRTCEncryptHandler
@protocol ByteRTCEncryptHandler <NSObject>
objectivec

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

成员函数
返回名称
NSData*onEncryptData:
NSData*onDecryptData:
函数说明

onEncryptData:
- (NSData * _Nonnull) onEncryptData:(NSData * _Nonnull)rawData;
objectivec

自定义加密。

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

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

传入参数

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

返回值
加密后的数据

注意

onDecryptData:
- (NSData * _Nonnull) onDecryptData:(NSData * _Nonnull)rawData;
objectivec

自定义解密。

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

传入参数

参数名类型说明
rawDataNSData*收到的已加密的音视频帧数据

返回值
解密后的数据

注意

ByteRTCMediaPlayerAudioFrameObserver
@protocol ByteRTCMediaPlayerAudioFrameObserver <NSObject>
objectivec

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

成员函数
返回名称
voidonFrame:audioFrame:
函数说明

onFrame:audioFrame:
- (void)onFrame:(int)playerId audioFrame:(ByteRTCAudioFrame * _Nonnull)audioFrame;
objectivec

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

传入参数

参数名类型说明
playerIdint
audioFrameByteRTCAudioFrame*参看 ByteRTCAudioFrame。
ByteRTCMediaPlayerEventHandler
@protocol ByteRTCMediaPlayerEventHandler <NSObject>
objectivec

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

成员函数
返回名称
voidonMediaPlayerStateChanged:state:error:
voidonMediaPlayerPlayingProgress:progress:
函数说明

onMediaPlayerStateChanged:state:error:
-(void)onMediaPlayerStateChanged:(int)playerId state:(ByteRTCPlayerState)state error:(ByteRTCPlayerError)error;
objectivec

播放状态改变时回调。

传入参数

参数名类型说明
playerIdintByteRTCMediaPlayer 的 ID。通过 getMediaPlayer: 设置。
stateByteRTCPlayerState混音状态。参考 ByteRTCPlayerState。
errorByteRTCPlayerError错误码。参考 ByteRTCPlayerError。

onMediaPlayerPlayingProgress:progress:
-(void)onMediaPlayerPlayingProgress:(int)playerId progress:(int64_t)progress;
objectivec

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

传入参数

参数名类型说明
playerIdintByteRTCMediaPlayer 的 ID。通过 getMediaPlayer: 设置。
progressint64_t进度。单位 ms。
ByteRtcScreenCapturerExtDelegate
@protocol ByteRtcScreenCapturerExtDelegate <NSObject>
objectivec

屏幕采集相关扩展协议,仅适用于 SDK 内部采集。

用户创建 extension 后生成的 SampleHandler 需继承此协议以实现屏幕共享相关能力。
注意:回调函数是在 SDK 内部线程(非 UI 线程)同步抛出来的,请不要做耗时操作或直接操作 UI,否则可能导致 app 崩溃。

成员函数
返回名称
voidonQuitFromApp
voidonReceiveMessageFromApp:
voidonSocketDisconnect
voidonSocketConnect
voidonNotifyAppRunning
函数说明

onQuitFromApp
- (void)onQuitFromApp;
objectivec

通知 Broadcast Upload Extension 停止采集屏幕并退出。

注意
用户调用 stopScreenCapture 后,会触发该方法通知 extension 端的 SDK 停止屏幕采集。

onReceiveMessageFromApp:
- (void)onReceiveMessageFromApp:(NSData *)message;
objectivec

Socket 收到 App 侧发来的信息时,触发该回调

传入参数

参数名类型说明
messageNSData*App 侧发送的消息

onSocketDisconnect
- (void)onSocketDisconnect;
objectivec

Socket 连接断开时触发此回调

onSocketConnect
- (void)onSocketConnect;
objectivec

Socket 连接成功时触发此回调

onNotifyAppRunning
- (void)onNotifyAppRunning;
objectivec

检测到 App 正在进行音视频通话时触发此回调。

ByteRTCSingScoringDelegate
@protocol ByteRTCSingScoringDelegate<NSObject>
objectivec

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

成员函数
返回名称
voidonCurrentScoringInfo:
函数说明

onCurrentScoringInfo:
- (void)onCurrentScoringInfo:(ByteRTCSingScoringRealtimeInfo * _Nullable)info;
objectivec

实时评分信息回调。调用 startSingScoring:scoringInfoInterval: 后,会收到该回调。

传入参数

参数名类型说明
infoByteRTCSingScoringRealtimeInfo*实时评分信息。详见 ByteRTCSingScoringRealtimeInfo。
ByteRTCVideoProcessorDelegate
@protocol ByteRTCVideoProcessorDelegate <NSObject>
objectivec

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

成员函数
返回名称
ByteRTCVideoFrame*processVideoFrame:
函数说明

processVideoFrame:
- (ByteRTCVideoFrame* _Nullable)processVideoFrame:(ByteRTCVideoFrame* _Nonnull)srcFrame;
objectivec

获取 RTC SDK 采集得到的视频帧,根据 registerLocalVideoProcessor:withConfig: 设置的视频前处理器,进行视频前处理,最终将处理后的视频帧给到 RTC SDK 用于编码传输。

传入参数

参数名类型说明
srcFrameByteRTCVideoFrame*RTC SDK 采集得到的视频帧,参考: ByteRTCVideoFrame

返回值
经过视频前处理后的视频帧,返回给 RTC SDK 供编码和传输,参考: ByteRTCVideoFrame

注意
如果需要取消视频前处理,可以将视频前处理器设置为 nullptr。

ByteRTCLocalEncodedVideoFrameObserver
@protocol ByteRTCLocalEncodedVideoFrameObserver<NSObject>
objectivec

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

成员函数
返回名称
voidonLocalEncodedVideoFrame:Frame:
函数说明

onLocalEncodedVideoFrame:Frame:
- (void)onLocalEncodedVideoFrame:(ByteRTCStreamIndex) streamIndex Frame:(ByteRTCEncodedVideoFrame * _Null_unspecified)frame;
objectivec

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

传入参数

参数名类型说明
streamIndexByteRTCStreamIndex本地视频帧类型,参看 ByteRTCStreamIndex
frameByteRTCEncodedVideoFrame _Null_unspecified*本地视频帧信息,参看 ByteRTCEncodedVideoFrame
ByteRTCExternalVideoEncoderEventHandler
@protocol ByteRTCExternalVideoEncoderEventHandler<NSObject>
objectivec

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

成员函数
返回名称
voidonStart:
voidonStop:
voidonRateUpdate:withVideoIndex:withFps:withBitRate:
voidonRequestKeyFrame:withVideoIndex:
函数说明

onStart:
- (void)onStart:(ByteRTCStreamIndex)streamIndex;
objectivec

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

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

传入参数

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

onStop:
- (void)onStop:(ByteRTCStreamIndex)streamIndex;
objectivec

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

传入参数

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

onRateUpdate:withVideoIndex:withFps:withBitRate:
- (void)onRateUpdate:(ByteRTCStreamIndex)streamIndex withVideoIndex:(NSInteger)videoIndex withFps:(NSInteger)fps withBitRate:(NSInteger)bitRateKps;
objectivec

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

传入参数

参数名类型说明
streamIndexByteRTCStreamIndex发生变化的编码流的属性,参看 ByteRTCStreamIndex
videoIndexNSInteger对应编码流的下标
fpsNSInteger变化后的帧率,单位:fps
bitRateKpsNSInteger变化后的码率,单位:kbps

onRequestKeyFrame:withVideoIndex:
- (void)onRequestKeyFrame:(ByteRTCStreamIndex)streamIndex withVideoIndex:(NSInteger)videoIndex;
objectivec

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

传入参数

参数名类型说明
streamIndexByteRTCStreamIndex远端编码流的属性,参看 ByteRTCStreamIndex
videoIndexNSInteger对应编码流的下标
ByteRTCRemoteEncodedVideoFrameObserver
@protocol ByteRTCRemoteEncodedVideoFrameObserver<NSObject>
objectivec

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

成员函数
返回名称
voidonRemoteEncodedVideoFrame:withEncodedVideoFrame:
函数说明

onRemoteEncodedVideoFrame:withEncodedVideoFrame:
- (void)onRemoteEncodedVideoFrame:(ByteRTCRemoteStreamKey * _Nonnull)streamKey withEncodedVideoFrame:(ByteRTCEncodedVideoFrame* _Nonnull)videoFrame;
objectivec

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

传入参数

参数名类型说明
streamKeyByteRTCRemoteStreamKey*收到的远端流信息,参看 ByteRTCRemoteStreamKey
videoFrameByteRTCEncodedVideoFrame*收到的远端视频帧信息,参看 ByteRTCEncodedVideoFrame
LiveTranscodingDelegate
@protocol LiveTranscodingDelegate <NSObject>
objectivec

转推直播观察者。

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

成员函数
返回名称
BOOLisSupportClientPushStream
voidonStreamMixingEvent:taskId:error:mixType:
voidonMixingAudioFrame:timestamp:taskId:
voidonMixingVideoFrame:taskId:
voidonMixingDataFrame:taskId:
函数说明

isSupportClientPushStream
- (BOOL)isSupportClientPushStream;
objectivec

是否具有推流能力。

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

onStreamMixingEvent:taskId:error:mixType:
- (void)onStreamMixingEvent:(ByteRTCStreamMixingEvent)event taskId:(NSString *_Nonnull)taskId error:(ByteRtcTranscoderErrorCode)Code mixType:(ByteRTCStreamMixingType)mixType;
objectivec

转推直播状态回调

传入参数

参数名类型说明
eventByteRTCStreamMixingEvent转推直播任务状态,参看 ByteRTCStreamMixingEvent。
taskIdNSString*转推直播任务 ID。
CodeByteRtcTranscoderErrorCode转推直播错误码,参看 ByteRtcTranscoderErrorCode。
mixTypeByteRTCStreamMixingType转推直播类型,参看 ByteRTCStreamMixingType。

onMixingAudioFrame:timestamp:taskId:
- (void)onMixingAudioFrame:(ByteRTCAudioFrame *_Nonnull)audioFrame timestamp:(int64_t)timeStamp taskId:(NSString *_Nonnull)taskId;
objectivec

端云一体合流音频 PCM 回调

传入参数

参数名类型说明
audioFrameByteRTCAudioFrame*PCM 编码的合流音频数据帧,参看 ByteRTCAudioFrame。
timeStampint64_t时间戳,单位毫秒。
taskIdNSString*转推直播任务 ID。

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

onMixingVideoFrame:taskId:
- (void)onMixingVideoFrame:(ByteRTCVideoFrame *_Nonnull)videoFrame taskId:(NSString *_Nonnull)taskId;
objectivec

端云一体合流视频 YUV 回调

传入参数

参数名类型说明
videoFrameByteRTCVideoFrame*YUV 合流视频数据帧,参看 ByteRTCVideoFrame。
taskIdNSString*转推直播任务 ID。

注意
收到该回调的周期取决于视频的帧率。

onMixingDataFrame:taskId:
- (void)onMixingDataFrame:(ByteRTCFrameExtendedData *_Nonnull)dataFrame taskId:(NSString *_Nonnull)taskId;
objectivec

端云一体合流视频 SEI 数据

传入参数

参数名类型说明
dataFrameByteRTCFrameExtendedData*SEI 数据,详见 ByteRTCFrameExtendedData。
taskIdNSString*转推直播任务 ID。
ByteRTCMixedStreamObserver
@protocol ByteRTCMixedStreamObserver <NSObject>
objectivec

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

成员函数
返回名称
BOOLisSupportClientPushStream
voidonMixingEvent:taskId:error:mixType:
voidonMixingAudioFrame:timestamp:taskId:
voidonMixingVideoFrame:taskId:
voidonMixingDataFrame:taskId:
函数说明

isSupportClientPushStream
- (BOOL)isSupportClientPushStream;
objectivec

是否具有推流能力。

注意

onMixingEvent:taskId:error:mixType:
- (void)onMixingEvent:(ByteRTCStreamMixingEvent)event taskId:(NSString *_Nonnull)taskId error:(ByteRTCStreamMixingErrorCode)errorCode mixType:(ByteRTCMixedStreamType)mixType;
objectivec

转推直播状态回调

传入参数

参数名类型说明
eventByteRTCStreamMixingEvent转推直播任务状态,参看 ByteRTCStreamMixingEvent。
taskIdNSString*转推直播任务 ID。
errorCodeByteRTCStreamMixingErrorCode转推直播错误码,参看 ByteRTCStreamMixingErrorCode 和 ByteRTCStreamMixingErrorCode。
mixTypeByteRTCMixedStreamType转推直播类型,参看 ByteRTCMixedStreamType。

onMixingAudioFrame:timestamp:taskId:
- (void)onMixingAudioFrame:(ByteRTCAudioFrame *_Nonnull)audioFrame timestamp:(int64_t)timeStamp taskId:(NSString *_Nonnull)taskId;
objectivec

端云一体合流音频 PCM 回调

传入参数

参数名类型说明
audioFrameByteRTCAudioFrame*PCM 编码的合流音频数据帧,参看 ByteRTCAudioFrame。
timeStampint64_t时间戳,单位毫秒。
taskIdNSString*转推直播任务 ID。

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

onMixingVideoFrame:taskId:
- (void)onMixingVideoFrame:(ByteRTCVideoFrame *_Nonnull)videoFrame taskId:(NSString *_Nonnull)taskId;
objectivec

端云一体合流视频 YUV 回调

传入参数

参数名类型说明
videoFrameByteRTCVideoFrame*YUV 合流视频数据帧,参看 ByteRTCVideoFrame。
taskIdNSString*转推直播任务 ID。

注意
收到该回调的周期取决于视频的帧率。

onMixingDataFrame:taskId:
- (void)onMixingDataFrame:(ByteRTCFrameExtendedData *_Nonnull)dataFrame taskId:(NSString *_Nonnull)taskId;
objectivec

端云一体合流视频 SEI 数据

传入参数

参数名类型说明
dataFrameByteRTCFrameExtendedData*SEI 数据,详见 ByteRTCFrameExtendedData。
taskIdNSString*转推直播任务 ID。
ByteRTCPushSingleStreamToCDNObserver
@protocol ByteRTCPushSingleStreamToCDNObserver <NSObject>
objectivec

单流转推直播观察者。

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

成员函数
返回名称
voidonStreamPushEvent:taskId:error:
函数说明

onStreamPushEvent:taskId:error:
- (void)onStreamPushEvent:(ByteRTCSingleStreamPushEvent)event taskId:(NSString *_Nonnull)taskID error:(NSInteger)errorCode;
objectivec

单流转推直播状态回调

传入参数

参数名类型说明
eventByteRTCSingleStreamPushEvent任务状态, 参看 ByteRTCSingleStreamPushEvent.
taskIDNSString*任务 ID
errorCodeNSInteger错误码,参看 ByteRtcTranscoderErrorCode。
ByteRTCFaceDetectionObserver
@protocol ByteRTCFaceDetectionObserver <NSObject>
objectivec

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

成员函数
返回名称
voidonFaceDetectResult:
函数说明

onFaceDetectResult:
- (void)onFaceDetectResult:(ByteRTCFaceDetectionResult * _Nonnull)result;
objectivec

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

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

传入参数

参数名类型说明
resultByteRTCFaceDetectionResult*人脸检测结果, 参看 ByteRTCFaceDetectionResult。
ByteRTCVideoSnapshotCallbackDelegate
@protocol ByteRTCVideoSnapshotCallbackDelegate <NSObject>
objectivec

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

成员函数
返回名称
voidonTakeLocalSnapshotResult:streamIndex:image:errorCode:
voidonTakeRemoteSnapshotResult:streamKey:image:errorCode:
函数说明

onTakeLocalSnapshotResult:streamIndex:image:errorCode:
- (void)onTakeLocalSnapshotResult:(NSInteger) taskId streamIndex:(ByteRTCStreamIndex)streamIndex image:(ByteRTCImage * _Nullable)image errorCode:(NSInteger)errorCode;
objectivec

调用 takeLocalSnapshot:callback: 截取视频画面时,收到此回调。

传入参数

参数名类型说明
taskIdNSInteger本地截图任务的编号。和 takeLocalSnapshot:callback: 的返回值一致。
streamIndexByteRTCStreamIndex截图的视频流的属性,参看 ByteRTCStreamIndex。
imageByteRTCImage*截图。你可以保存为文件,或对其进行二次处理。截图失败时,为空。
errorCodeNSInteger截图错误码:
• 0: 成功
• -1: 截图错误。生成图片数据失败或 RGBA 编码失败
• -2: 截图错误。流无效。

onTakeRemoteSnapshotResult:streamKey:image:errorCode:
- (void)onTakeRemoteSnapshotResult:(NSInteger)taskId streamKey:(ByteRTCRemoteStreamKey * _Nonnull)streamKey image:(ByteRTCImage * _Nullable)image errorCode:(NSInteger)errorCode;
objectivec

调用 takeRemoteSnapshot:callback: 截取视频画面时,收到此回调。

传入参数

参数名类型说明
taskIdNSInteger远端截图任务的编号。和 takeRemoteSnapshot:callback: 的返回值一致。
streamKeyByteRTCRemoteStreamKey*截图的视频流,参看 ByteRTCRemoteStreamKey。
imageByteRTCImage*截图。你可以保存为文件,或对其进行二次处理。截图失败时,为空。
errorCodeNSInteger截图错误码:
• 0: 成功
• -1: 截图错误。生成图片数据失败或 RGBA 编码失败
• -2: 截图错误。流无效。