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

实时音视频

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

ByteRTCMediaPlayerAudioFrameObserver
@protocol ByteRTCMediaPlayerAudioFrameObserver <NSObject>

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

成员函数

返回名称
voidonFrame:audioFrame:

函数说明

onFrame:audioFrame:

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

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

传入参数

参数名类型说明
playerIdint播放器 ID
audioFrameByteRTCAudioFrame*参看 ByteRTCAudioFrame。

ByteRTCEngineDelegate
@protocol ByteRTCEngineDelegate <NSObject>

ByteRTCEngineDelegate 协议包含了 SDK 提供的回调方法,SDK 通过代理向应用程序上报一些运行时事件

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

成员函数

返回名称
voidrtcEngine:onWarning:
voidrtcEngine:onError:
voidrtcEngine:onExtensionAccessError:msg:
voidrtcEngine:onConnectionStateChanged:
voidrtcEngine:onNetworkTypeChanged:
voidrtcEngine:onUserStartAudioCapture:info:
voidrtcEngine:onUserStopAudioCapture:info:
voidrtcEngine:onFirstRemoteAudioFrame:info:
voidrtcEngine:onLocalAudioPropertiesReport:
voidrtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume:
voidrtcEngine:onActiveSpeaker:uid:
voidrtcEngine:onUserStartVideoCapture:info:
voidrtcEngine:onUserStopVideoCapture:info:
voidrtcEngine:onFirstLocalVideoFrameCaptured:withFrameInfo:
voidrtcEngine:onFirstRemoteVideoFrameRendered:info:withFrameInfo:
voidrtcEngine:onFirstRemoteVideoFrameDecoded:info:withFrameInfo:
voidrtcEngine:onRemoteVideoSizeChanged:info: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:info:rtcUser:state:
voidrtcEngine:onVideoFrameSendStateChanged:info:rtcUser:state:
voidrtcEngine:onAudioFramePlayStateChanged:info:rtcUser:state:
voidrtcEngine:onVideoFramePlayStateChanged:info:rtcUser:state:
voidrtcEngine:onFirstLocalAudioFrame:
voidrtcEngine:onAudioRouteChanged:
voidrtcEngine:onSEIMessageReceived:info:andMessage:
voidrtcEngine:onSEIStreamUpdate:info:eventType:
voidrtcEngine:onStreamSyncInfoReceived:info:streamType:data:
voidrtcEngine:onSysStats:
voidrtcEngine:onLocalAudioStateChanged:state:error:
voidrtcEngine:onRemoteAudioStateChanged:info:state:reason:
voidrtcEngine:onLocalVideoStateChanged:withStreamState:withStreamError:
voidrtcEngine:onRemoteVideoStateChanged:info:withVideoState:withVideoStateReason:
voidrtcEngine:onLoginResult:errorCode:elapsed:
voidrtcEngine:onLogout:
voidrtcEngine:onServerParamsSetResult:
voidrtcEngine:onGetPeerOnlineStatus:status:
voidrtcEngine:onUserMessageReceivedOutsideRoom:message:
voidrtcEngine:onUserBinaryMessageReceivedOutsideRoom:message:
voidrtcEngine:onUserMessageReceivedOutsideRoom:uid:message:
voidrtcEngine:onUserBinaryMessageReceivedOutsideRoom:uid:message:
voidrtcEngine:onUserMessageSendResultOutsideRoom:error:
voidrtcEngine:onServerMessageSendResult:error:message:
voidrtcEngine:onNetworkDetectionResult:quality:rtt:lostRate:bitrate:jitter:
voidrtcEngine:onNetworkDetectionStopped:
voidrtcEngine:onAudioMixingPlayingProgress:progress:
voidrtcEngine:onPerformanceAlarms:info:mode:reason:sourceWantedData:
voidrtcEngine:onSimulcastSubscribeFallback:info:event:
voidrtcEngine:onRecordingStateUpdate:state:error_code:recording_info:
voidrtcEngine:onRecordingProgressUpdate:process:recording_info:
voidrtcEngine:onAudioRecordingStateUpdate:error_code:
voidrtcEngine:onCloudProxyConnected:
voidrtcEngine:onEchoTestResult:
voidrtcEngineOnNetworkTimeSynchronized:
voidrtcEngine:onLicenseQuotaExceeded:
voidrtcEngine:onHardwareEchoDetectionResult:
voidrtcEngine:onLocalProxyStateChanged:withProxyState:withProxyError:
voidrtcEngine:onMixedStreamEvent:withMixedStreamInfo:withErrorCode:
voidrtcEngine:onSingleStreamEvent:withTaskId:withErrorCode:
voidrtcEngine:onRemoteSnapshotTakenToFile:info:filePath:width:height:errorCode:taskId:
voidrtcEngine:onLocalSnapshotTakenToFile:filePath:width:height:errorCode:taskId:
void[deprecated] rtcEngine:log:
void[deprecated] rtcEngine:onPushPublicStreamResult:publicStreamId:errorCode:

函数说明

rtcEngine:onWarning:

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

发生警告回调。

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

传入参数

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

rtcEngine:onError:

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

发生错误回调。

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

你可能需要干预。

传入参数

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

rtcEngine:onExtensionAccessError:msg:

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

Available since 3.52

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

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
extensionNameNSString*插件名字
msgNSString*失败说明

rtcEngine:onConnectionStateChanged:

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

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

传入参数

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

注意

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

rtcEngine:onNetworkTypeChanged:

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

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

传入参数

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

rtcEngine:onUserStartAudioCapture:info:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onUserStartAudioCapture:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
streamIdNSString*开启音频采集的远端流 ID
infoByteRTCStreamInfo*开启音频采集的远端流信息,参看 ByteRTCStreamInfo。

rtcEngine:onUserStopAudioCapture:info:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onUserStopAudioCapture:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
streamIdNSString*流 ID。
infoByteRTCStreamInfo*关闭音频采集的远端流信息,参看 ByteRTCStreamInfo。

rtcEngine:onFirstRemoteAudioFrame:info:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onFirstRemoteAudioFrame:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info;

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

  1. 发布端发布音频,包含首次发布和取消后再次发布。

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

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
streamIdNSString*远端流 ID。
infoByteRTCStreamInfo*远端流信息,参看 ByteRTCStreamInfo。

注意

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

rtcEngine:onLocalAudioPropertiesReport:

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

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

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

传入参数

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

rtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume:

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

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

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

传入参数

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

rtcEngine:onActiveSpeaker:uid:

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

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

传入参数

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

rtcEngine:onUserStartVideoCapture:info:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onUserStartVideoCapture:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
streamIdNSString*视频流 ID
infoByteRTCStreamInfo*视频流信息,详见 ByteRTCStreamInfo。

rtcEngine:onUserStopVideoCapture:info:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onUserStopVideoCapture:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info;

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

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
streamIdNSString*视频流 ID
infoByteRTCStreamInfo*视频流信息,详见 ByteRTCStreamInfo。

rtcEngine:onFirstLocalVideoFrameCaptured:withFrameInfo:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onFirstLocalVideoFrameCaptured:(ByteRTCVideoSource* _Nullable)videoSource withFrameInfo:(ByteRTCVideoFrameInfo* _Nonnull)frameInfo NS_SWIFT_NAME(rtcEngine(_:onFirstLocalVideoFrameCaptured:withFrameInfo:));

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
videoSourceByteRTCVideoSource*预留参数
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

rtcEngine:onFirstRemoteVideoFrameRendered:info:withFrameInfo:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onFirstRemoteVideoFrameRendered:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info withFrameInfo:(ByteRTCVideoFrameInfo* _Nonnull)frameInfo NS_SWIFT_NAME(rtcEngine(_:onFirstRemoteVideoFrameRendered:info:withFrameInfo:));

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

  1. 发布端首次发布视频

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

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

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
streamIdNSString*远端流 ID。
infoByteRTCStreamInfo*远端流信息,参看 ByteRTCStreamInfo。
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

注意

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

rtcEngine:onFirstRemoteVideoFrameDecoded:info:withFrameInfo:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onFirstRemoteVideoFrameDecoded:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info withFrameInfo:(ByteRTCVideoFrameInfo* _Nonnull)frameInfo NS_SWIFT_NAME(rtcEngine(_:onFirstRemoteVideoFrameDecoded:info:withFrameInfo:));

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

  1. 发布端发布视频,包含首次发布和取消后再次发布。

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

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
streamIdNSString*远端流 ID。
infoByteRTCStreamInfo*远端流信息,参看 ByteRTCStreamInfo。
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

注意

  • 对于主流,进入房间后,仅在发布端第一次发布的时候,订阅端会收到该回调,此后不受重新发布的影响,只要不重新加入房间,就不会再收到该回调。
  • 对于屏幕流,用户每次重新发布屏幕视频流在订阅端都会重新触发一次该回调。

rtcEngine:onRemoteVideoSizeChanged:info:withFrameInfo:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onRemoteVideoSizeChanged:(NSString*_Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info withFrameInfo:(ByteRTCVideoFrameInfo*_Nonnull)frameInfo NS_SWIFT_NAME(rtcEngine(_:onRemoteVideoSizeChanged:info:withFrameInfo:));

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
streamIdNSString*远端流 ID。
infoByteRTCStreamInfo*远端流信息,参看 ByteRTCStreamInfo。
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

rtcEngine:onLocalVideoSizeChanged:withFrameInfo:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onLocalVideoSizeChanged:(ByteRTCVideoSource* _Nullable)videoSource withFrameInfo:(ByteRTCVideoFrameInfo*_Nonnull)frameInfo NS_SWIFT_NAME(rtcEngine(_:onLocalVideoSizeChanged:withFrameInfo:));

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
videoSourceByteRTCVideoSource*预留参数
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error:

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

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

传入参数

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

rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error:

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

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

传入参数

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

rtcEngine:onAudioDeviceWarning:deviceType:deviceWarning:

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

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

传入参数

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

rtcEngine:onVideoDeviceWarning:deviceType:deviceWarning:

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

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

传入参数

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

rtcEngine:onAudioFrameSendStateChanged:info:rtcUser:state:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onAudioFrameSendStateChanged:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info
              rtcUser:(ByteRTCUser*_Nonnull)user state:(ByteRTCFirstFrameSendState)state;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
streamIdNSString*流 ID
infoByteRTCStreamInfo*流信息,参看 ByteRTCStreamInfo
userByteRTCUser*本地用户信息,详见 ByteRTCUser
stateByteRTCFirstFrameSendState首帧发送状态,详见 ByteRTCFirstFrameSendState

rtcEngine:onVideoFrameSendStateChanged:info:rtcUser:state:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onVideoFrameSendStateChanged:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info
          rtcUser:(ByteRTCUser*_Nonnull)user state:(ByteRTCFirstFrameSendState)state;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
streamIdNSString*视频流 ID
infoByteRTCStreamInfo*视频流信息,参看 ByteRTCStreamInfo
userByteRTCUser*本地用户信息,详见 ByteRTCUser
stateByteRTCFirstFrameSendState首帧发送状态,详见 ByteRTCFirstFrameSendState

rtcEngine:onAudioFramePlayStateChanged:info:rtcUser:state:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onAudioFramePlayStateChanged:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info 
          rtcUser:(ByteRTCUser*_Nonnull)user state:(ByteRTCFirstFramePlayState)state;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象。
streamIdNSString*音频流 ID
infoByteRTCStreamInfo*音频流信息,参看 ByteRTCStreamInfo
userByteRTCUser*音频流来源的用户信息,参看 ByteRTCUser
stateByteRTCFirstFramePlayState首帧播放状态,参看 ByteRTCFirstFramePlayState

rtcEngine:onVideoFramePlayStateChanged:info:rtcUser:state:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onVideoFramePlayStateChanged:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info
          rtcUser:(ByteRTCUser*_Nonnull)user state:(ByteRTCFirstFramePlayState)state;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象。
streamIdNSString*视频流 ID
infoByteRTCStreamInfo*视频流信息,参看 ByteRTCStreamInfo
userByteRTCUser*视频流来源的用户信息,参看 ByteRTCUser
stateByteRTCFirstFramePlayState首帧播放状态,参看 ByteRTCFirstFramePlayState

rtcEngine:onFirstLocalAudioFrame:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onFirstLocalAudioFrame:(ByteRTCAudioSource* _Nullable)audioSource;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
audioSourceByteRTCAudioSource*预留参数

注意

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

rtcEngine:onAudioRouteChanged:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onAudioRouteChanged:(ByteRTCAudioRoute)device;

音频播放路由变化时,收到该回调。

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
deviceByteRTCAudioRoute新的音频播放路由,详见 ByteRTCAudioRoute

注意

插拔音频外设,或调用 setAudioRoute: 都可能触发音频路由切换,详见移动端设置音频路由 。

rtcEngine:onSEIMessageReceived:info:andMessage:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onSEIMessageReceived:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info andMessage:(NSData* _Nonnull)message;

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

传入参数

参数名类型说明
engineByteRTCEngine*当前 ByteRTCEngine 实例。
streamIdNSString*远端流 ID。
infoByteRTCStreamInfo*远端流信息,参看 ByteRTCStreamInfo。
messageNSData*收到的 SEI 消息内容

rtcEngine:onSEIStreamUpdate:info:eventType:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onSEIStreamUpdate:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info eventType:(ByteRTCSEIStreamEventType)eventType;

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

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

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

传入参数

参数名类型说明
engineByteRTCEngine*当前 ByteRTCEngine 实例。
streamIdNSString*远端流 ID。
infoByteRTCStreamInfo*远端流信息,参看 ByteRTCStreamInfo。
eventTypeByteRTCSEIStreamEventType黑帧视频流状态,参看 ByteRTCSEIStreamEventType

rtcEngine:onStreamSyncInfoReceived:info:streamType:data:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onStreamSyncInfoReceived:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info streamType:(ByteRTCSyncInfoStreamType)streamType data:(NSData* _Nonnull)data;

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

传入参数

参数名类型说明
engineByteRTCEngine*当前 ByteRTCEngine 实例。
streamIdNSString*远端流 ID。
infoByteRTCStreamInfo*远端流信息,参看 ByteRTCStreamInfo。
streamTypeByteRTCSyncInfoStreamType媒体流类型,详见 ByteRTCSyncInfoStreamType 。
dataNSData*消息内容。

rtcEngine:onSysStats:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onSysStats:(const ByteRTCSysStats* _Nonnull)stats NS_SWIFT_NAME(rtcEngine(_:onSysStats:));

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

传入参数

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

rtcEngine:onLocalAudioStateChanged:state:error:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onLocalAudioStateChanged:(ByteRTCAudioSource* _Nullable)audioSource
                     state:(ByteRTCLocalAudioStreamState)state
                     error:(ByteRTCLocalAudioStreamError)error;

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

传入参数

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

rtcEngine:onRemoteAudioStateChanged:info:state:reason:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onRemoteAudioStateChanged:(NSString*_Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info
                      state:(ByteRTCRemoteAudioState)state
                      reason:(ByteRTCRemoteAudioStateChangeReason)reason;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
streamIdNSString*远端流 ID。
infoByteRTCStreamInfo*远端流信息,参看 ByteRTCStreamInfo。
stateByteRTCRemoteAudioState远端音频流的当前状态,详见 ByteRTCRemoteAudioState
reasonByteRTCRemoteAudioStateChangeReason远端音频流状态改变的原因,详见 ByteRTCRemoteAudioStateChangeReason

rtcEngine:onLocalVideoStateChanged:withStreamState:withStreamError:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onLocalVideoStateChanged:(ByteRTCVideoSource* _Nullable)videoSource
             withStreamState:(ByteRTCLocalVideoStreamState)state
             withStreamError:(ByteRTCLocalVideoStreamError)error NS_SWIFT_NAME(rtcEngine(_:onLocalVideoStateChanged:withStreamState:withStreamError:));

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
videoSourceByteRTCVideoSource*预留参数
stateByteRTCLocalVideoStreamState本地视频流的当前状态,参看 ByteRTCLocalVideoStreamState
errorByteRTCLocalVideoStreamError本地视频状态改变时的错误码,参看 ByteRTCLocalVideoStreamError

rtcEngine:onRemoteVideoStateChanged:info:withVideoState:withVideoStateReason:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onRemoteVideoStateChanged:(NSString*_Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info
                withVideoState:(ByteRTCRemoteVideoState)state
                withVideoStateReason:(ByteRTCRemoteVideoStateChangeReason)reason NS_SWIFT_NAME(rtcEngine(_:onRemoteVideoStateChanged:info:withVideoState:withVideoStateReason:));

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
streamIdNSString*远端流 ID。
infoByteRTCStreamInfo*远端流信息,参看 ByteRTCStreamInfo。
stateByteRTCRemoteVideoState远端视频流的当前状态,参看 ByteRTCRemoteVideoState
reasonByteRTCRemoteVideoStateChangeReason远端视频流状态改变的原因,参看 ByteRTCRemoteVideoStateChangeReason

注意

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

rtcEngine:onLoginResult:errorCode:elapsed:

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

登录结果回调

传入参数

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

注意

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

rtcEngine:onLogout:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onLogout:(ByteRTCLogoutReason)reason;

登出结果回调

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
reasonByteRTCLogoutReason用户登出的原因,参看 ByteRTCLogoutReason

注意

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

rtcEngine:onServerParamsSetResult:

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

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
errorCodeNSInteger设置结果

注意

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

rtcEngine:onGetPeerOnlineStatus:status:

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

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

传入参数

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

注意

必须先调用 getPeerOnlineStatus:{@link #ByteRTCEngin e#getPeerOnlineStatus},才能收到此回调。

rtcEngine:onUserMessageReceivedOutsideRoom:message:

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

该接口将于 3.64 被 rtcEngine:onUserMessageReceivedOutsideRoom:uid:message: 代替。
收到房间外用户调用 sendUserMessageOutsideRoom:message:config: 发来的文本消息时,会收到此回调

传入参数

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

rtcEngine:onUserBinaryMessageReceivedOutsideRoom:message:

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

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

传入参数

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

rtcEngine:onUserMessageReceivedOutsideRoom:uid:message:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onUserMessageReceivedOutsideRoom:(NSInteger)msgid uid:(NSString* _Nonnull)uid message:(NSString* _Nonnull)message;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象。
msgidNSInteger消息编号。
uidNSString*消息发送者 ID。
messageNSString*收到的文本消息内容。

rtcEngine:onUserBinaryMessageReceivedOutsideRoom:uid:message:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onUserBinaryMessageReceivedOutsideRoom:(NSInteger)msgid uid:(NSString* _Nonnull)uid message:(NSData* _Nonnull)message;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
msgidNSInteger消息编号。
uidNSString*消息发送者 ID。
messageNSData*收到的二进制消息内容。

rtcEngine:onUserMessageSendResultOutsideRoom:error:

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

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

传入参数

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

注意

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

rtcEngine:onServerMessageSendResult:error:message:

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

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

传入参数

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

注意

本回调为异步回调。当调用 sendServerMessage:{@link #ByteRTCEngin e#sendServerMessage} 或 sendServerBinaryMessage:{@link #ByteEngin e#sendServerBinaryMessage} 接口发送消息后,会收到此回调。

rtcEngine:onNetworkDetectionResult:quality:rtt:lostRate:bitrate:jitter:

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

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

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

传入参数

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

rtcEngine:onNetworkDetectionStopped:

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

通话前网络探测结束

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

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

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

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

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

传入参数

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

rtcEngine:onAudioMixingPlayingProgress:progress:

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

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

传入参数

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

注意

调用 start:filePath:config: 将 ByteRTCAudioEffectPlayerConfig 中的时间间隔设为大于 0 的值后,SDK 会按照设置的时间间隔回调该事件。

rtcEngine:onPerformanceAlarms:info:mode:reason:sourceWantedData:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onPerformanceAlarms:(NSString* _Nonnull)streamId 
                           info:(ByteRTCStreamInfo* _Nonnull)info
                           mode:(ByteRTCPerformanceAlarmMode)mode
                         reason:(ByteRTCPerformanceAlarmReason)reason
               sourceWantedData:(ByteRTCSourceWantedData*_Nonnull)data;

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

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
streamIdNSString*流 ID
infoByteRTCStreamInfo*流信息, 参看 ByteRTCStreamInfo。
modeByteRTCPerformanceAlarmMode指示本地是否开启发布回退功能。参看 ByteRTCPerformanceAlarmMode
  • 当发布端未开启发布性能回退时,mode 值为 ByteRTCPerformanceAlarmModeNormal。
  • 当发布端开启发布性能回退时,mode 值为 ByteRTCPerformanceAlarmModeSimulcast。
reasonByteRTCPerformanceAlarmReason告警原因,参看 ByteRTCPerformanceAlarmReason
dataByteRTCSourceWantedData*性能回退相关数据,详见 ByteRTCSourceWantedData。

rtcEngine:onSimulcastSubscribeFallback:info:event:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onSimulcastSubscribeFallback:(NSString* _Nonnull)streamId 
             info:(ByteRTCStreamInfo* _Nonnull)info event:(ByteRTCRemoteStreamSwitchEvent*_Nonnull)event;

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

传入参数

参数名类型说明
engineByteRTCEngine*当前 ByteRTCEngine 实例
streamIdNSString*流 ID
infoByteRTCStreamInfo*流信息, 参看 ByteRTCStreamInfo。
eventByteRTCRemoteStreamSwitchEvent*流切换信息。详见 ByteRTCRemoteStreamSwitchEvent。

rtcEngine:onRecordingStateUpdate:state:error_code:recording_info:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onRecordingStateUpdate:(ByteRTCVideoSource* _Nullable)videoSource
                         state:(ByteRTCRecordingState)state
                    error_code:(ByteRTCRecordingErrorCode)errorCode
                recording_info:(ByteRTCRecordingInfo* _Nonnull)recordingInfo;

获取本地录制状态回调。

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
videoSourceByteRTCVideoSource*预留参数
stateByteRTCRecordingState录制状态,参看 ByteRTCRecordingState
errorCodeByteRTCRecordingErrorCode录制错误码,参看 ByteRTCRecordingErrorCode
recordingInfoByteRTCRecordingInfo*录制文件的详细信息,参看 ByteRTCRecordingInfo

rtcEngine:onRecordingProgressUpdate:process:recording_info:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onRecordingProgressUpdate:(ByteRTCVideoSource* _Nullable)videoSource
                          process:(ByteRTCRecordingProgress* _Nonnull)process
                   recording_info:(ByteRTCRecordingInfo* _Nonnull)recordingInfo;

本地录制进度回调。

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
videoSourceByteRTCVideoSource*预留参数
processByteRTCRecordingProgress*录制进度,参看 ByteRTCRecordingProgress
recordingInfoByteRTCRecordingInfo*录制文件的详细信息,参看 ByteRTCRecordingInfo

rtcEngine:onAudioRecordingStateUpdate:error_code:

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

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

传入参数

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

rtcEngine:onCloudProxyConnected:

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

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

传入参数

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

rtcEngine:onEchoTestResult:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onEchoTestResult:(ByteRTCEchoTestResult)result NS_SWIFT_NAME(rtcEngine(_:onEchoTestResult:));

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
resultByteRTCEchoTestResult测试结果,参看 ByteRTCEchoTestResult。

注意

该回调触发的时机包括:

  • 检测过程中采集设备发生错误时;
  • 检测成功后;
  • 非设备原因导致检测过程中未接收到音/视频回放,停止检测后。

rtcEngineOnNetworkTimeSynchronized:

- (void)rtcEngineOnNetworkTimeSynchronized:(ByteRTCEngine*_Nonnull)engine;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象

rtcEngine:onLicenseQuotaExceeded:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onLicenseQuotaExceeded:(NSString*_Nullable)message;

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象
messageNSString*回调消息

rtcEngine:onHardwareEchoDetectionResult:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onHardwareEchoDetectionResult:(ByteRTCHardwareEchoDetectionResult)result NS_SWIFT_NAME(rtcEngine(_:onHardwareEchoDetectionResult:));

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
resultByteRTCHardwareEchoDetectionResult参见 ByteRTCHardwareEchoDetectionResult。

注意

rtcEngine:onLocalProxyStateChanged:withProxyState:withProxyError:

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

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

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 实例
typeByteRTCLocalProxyType本地代理类型。参看 ByteRTCLocalProxyType 。
stateByteRTCLocalProxyState本地代理状态。参看 ByteRTCLocalProxyState。
errorByteRTCLocalProxyError本地代理错误。参看 ByteRTCLocalProxyError。

rtcEngine:onMixedStreamEvent:withMixedStreamInfo:withErrorCode:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onMixedStreamEvent:(ByteRTCMixedStreamTaskEvent)event withMixedStreamInfo:(ByteRTCMixedStreamTaskInfo*)info withErrorCode:(ByteRTCMixedStreamTaskErrorCode)errorCode;

Available since 3.60. 自 3.60 起,该回调替代了 onStreamMixingEvent:taskId:error:mixType: 和 rtcEngine:onPushPublicStreamResult:publicStreamId:errorCode: 方法来实现下述功能。如果你已升级至 3.60 及以上版本,并且仍在使用这两个方法,请迁移到此回调。

合流转推 CDN / WTN 流状态回调

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象。
eventByteRTCMixedStreamTaskEvent任务事件,参看 ByteRTCMixedStreamTaskEvent。
infoByteRTCMixedStreamTaskInfo*任务详情,参看 ByteRTCMixedStreamTaskInfo。
errorCodeByteRTCMixedStreamTaskErrorCode任务错误码,参看 ByteRTCMixedStreamTaskErrorCode。

rtcEngine:onSingleStreamEvent:withTaskId:withErrorCode:

- (void)rtcEngine:(ByteRTCEngine* _Nonnull)engine onSingleStreamEvent:(ByteRTCSingleStreamTaskEvent)event withTaskId:(NSString*)taskId withErrorCode:(ByteRTCSingleStreamTaskErrorCode)errorCode;

Available since 3.60.

单流转推 CDN 状态回调。

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象。
eventByteRTCSingleStreamTaskEvent任务状态, 参看 ByteRTCSingleStreamTaskEvent。
taskIdNSString*任务 ID。
errorCodeByteRTCSingleStreamTaskErrorCode错误码,参看 ByteRTCSingleStreamTaskErrorCode。

rtcEngine:onRemoteSnapshotTakenToFile:info:filePath:width:height:errorCode:taskId:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onRemoteSnapshotTakenToFile:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info filePath:(NSString* _Nonnull)filePath width:(NSInteger)width height:(NSInteger)height errorCode:(ByteRTCSnapshotErrorCode)errorCode taskId:(NSInteger)taskId;

Available since 3.60.

调用 takeRemoteSnapshotToFile:filePath: 截取视频画面时,会收到此回调报告截图是否成功,以及截取的图片信息。

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象。
streamIdNSString*被截图的视频流 ID。
infoByteRTCStreamInfo*视频流信息,参考 ByteRTCStreamInfo。
filePathNSString*截图文件的保存路径。
widthNSInteger截图图像的宽度。单位:像素。
heightNSInteger截图图像的高度。单位:像素。
errorCodeByteRTCSnapshotErrorCode截图错误码。参看 ByteRTCSnapshotErrorCode。
taskIdNSInteger截图任务的编号,和 takeRemoteSnapshotToFile:filePath: 的返回值一致。

rtcEngine:onLocalSnapshotTakenToFile:filePath:width:height:errorCode:taskId:

- (void)rtcEngine:(ByteRTCEngine*_Nonnull)engine onLocalSnapshotTakenToFile:(ByteRTCVideoSource* _Nullable)videoSource filePath:(NSString* _Nonnull)filePath width:(NSInteger)width height:(NSInteger)height errorCode:(ByteRTCSnapshotErrorCode)errorCode taskId:(NSInteger)taskId;

Available since 3.60.

调用 takeLocalSnapshotToFile: 截取视频画面时,会收到此回调报告截图是否成功,以及截取的图片信息。

传入参数

参数名类型说明
engineByteRTCEngine*ByteRTCEngine 对象。
videoSourceByteRTCVideoSource*预留参数
filePathNSString*截图文件的保存路径。
widthNSInteger截图图像的宽度。单位:像素。
heightNSInteger截图图像的高度。单位:像素。
errorCodeByteRTCSnapshotErrorCode截图错误码。参看 ByteRTCSnapshotErrorCode。
taskIdNSInteger截图任务的编号,和 takeLocalSnapshotToFile: 的返回值一致。

rtcEngine:log:

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

Deprecated since 3.45 and will be deleted in 3.51.

SDK 内部日志回调。

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

传入参数

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

rtcEngine:onPushPublicStreamResult:publicStreamId:errorCode:

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

Deprecated since 3.60, use rtcEngine:onMixedStreamEvent:withMixedStreamInfo:withErrorCode: instead.

WTN 流发布结果回调。

调用 startPushMixedStream:withPushTargetConfig:withMixedConfig:

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

传入参数

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

ByteRTCFaceDetectionObserver
@protocol ByteRTCFaceDetectionObserver <NSObject>

人脸检测结果回调观察者

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

成员函数

返回名称
voidonFaceDetectResult:

函数说明

onFaceDetectResult:

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

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

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

传入参数

参数名类型说明
resultByteRTCFaceDetectionResult*人脸检测结果, 参看 ByteRTCFaceDetectionResult。

ByteRTCEncryptHandler
@protocol ByteRTCEncryptHandler <NSObject>

自定义加密接口

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

成员函数

返回名称
NSData*onEncryptData:
NSData*onDecryptData:

函数说明

onEncryptData:

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

自定义加密。

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

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

传入参数

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

返回值

加密后的数据

  • 非空,表示加密后的数据
  • 为空,表示数据被丢弃

注意

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

onDecryptData:

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

自定义解密。

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

传入参数

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

返回值

解密后的数据

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

注意

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

WTN 事件回调接口。

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

成员函数

返回名称
voidonWTNRemoteVideoStats:videoStats:
voidonWTNRemoteAudioStats:audioStats:
voidonWTNVideoSubscribeStateChanged:state:reason:
voidonWTNAudioSubscribeStateChanged:state:reason:
voidonWTNFirstRemoteVideoFrameDecoded:withFrameInfo:
voidonWTNFirstRemoteAudioFrame:
voidonWTNSEIMessageReceived:andChannelId:andMessage:
voidonWTNDataMessageReceived:andMessage:andSourceType:

函数说明

onWTNRemoteVideoStats:videoStats:

- (void)onWTNRemoteVideoStats:(NSString* _Nonnull)streamId
                   videoStats:(const ByteRTCRemoteVideoStats* _Nonnull)videoStats;

Available since 3.60.

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

传入参数

参数名类型说明
streamIdNSString*WTN 流 ID
videoStatsconst ByteRTCRemoteVideoStats*远端 WTN 视频流的统计信息,详见 ByteRTCRemoteVideoStats。

onWTNRemoteAudioStats:audioStats:

- (void)onWTNRemoteAudioStats:(NSString* _Nonnull)streamId
                   audioStats:(const ByteRTCRemoteAudioStats* _Nonnull)audioStats;

Available since 3.60.

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

传入参数

参数名类型说明
streamIdNSString*WTN 流 ID
audioStatsconst ByteRTCRemoteAudioStats*远端 WTN 音频流的统计信息,详见 ByteRTCRemoteAudioStats。

onWTNVideoSubscribeStateChanged:state:reason:

- (void)onWTNVideoSubscribeStateChanged:(NSString*_Nonnull)streamId
                                  state:(ByteRTCWTNSubscribeState)state reason:(ByteRTCWTNSubscribeStateChangeReason)reason;

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

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

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

传入参数

参数名类型说明
streamIdNSString*WTN 视频流的 ID
stateByteRTCWTNSubscribeState视频流状态码,参看 ByteRTCWTNSubscribeState。
reasonByteRTCWTNSubscribeStateChangeReason订阅状态发生变化的原因,参看 ByteRTCWTNSubscribeStateChangeReason。

onWTNAudioSubscribeStateChanged:state:reason:

- (void)onWTNAudioSubscribeStateChanged:(NSString*_Nonnull)streamId
                                  state:(ByteRTCWTNSubscribeState)state reason:(ByteRTCWTNSubscribeStateChangeReason)reason;

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

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

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

传入参数

参数名类型说明
streamIdNSString*WTN 音频流的 ID
stateByteRTCWTNSubscribeState音频流状态码,参看 ByteRTCWTNSubscribeState。
reasonByteRTCWTNSubscribeStateChangeReason订阅状态发生变化的原因,参看 ByteRTCWTNSubscribeStateChangeReason。

onWTNFirstRemoteVideoFrameDecoded:withFrameInfo:

- (void)onWTNFirstRemoteVideoFrameDecoded:(NSString* _Nonnull)streamId withFrameInfo:(ByteRTCVideoFrameInfo* _Nonnull)frameInfo NS_SWIFT_NAME(onWTNFirstRemoteVideoFrameDecoded(streamId:withFrameInfo:));

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

WTN 流的首帧视频解码成功

关于 订阅 WTN 流,详见 subscribeWTNVideoStream:subscribe:。

传入参数

参数名类型说明
streamIdNSString*WTN 流 ID
frameInfoByteRTCVideoFrameInfo*视频帧信息,参看 ByteRTCVideoFrameInfo

onWTNFirstRemoteAudioFrame:

- (void)onWTNFirstRemoteAudioFrame:(NSString* _Nonnull)streamId;

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

WTN 流的首帧音频解码成功

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

传入参数

参数名类型说明
streamIdNSString*WTN 流 ID

onWTNSEIMessageReceived:andChannelId:andMessage:

- (void)onWTNSEIMessageReceived:(NSString* _Nonnull)streamId andChannelId:(int)channelId andMessage:(NSData* _Nonnull)message;

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

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

subscribeWTNAudioStream:subscribe:/subscribeWTNVideoStream:subscribe: 接口启动拉 WTN 音频/视频流功能后,通过此回调收到 WTN 流中的 SEI 消息。

传入参数

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

注意

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

onWTNDataMessageReceived:andMessage:andSourceType:

- (void)onWTNDataMessageReceived:(NSString* _Nonnull)streamId andMessage:(NSData* _Nonnull)message andSourceType:(ByteRTCDataMessageSourceType)sourceType;

Available since 3.60.

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

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

传入参数

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

注意

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

ByteRTCVideoSnapshotCallbackDelegate
BYTERTC_APPLE_EXPORT @protocol ByteRTCVideoSnapshotCallbackDelegate <NSObject>

截取视频画面回调类

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

成员函数

返回名称
voidonTakeLocalSnapshotResult:videoSource:image:errorCode:
voidonTakeRemoteSnapshotResult:streamId:info:image:errorCode:

函数说明

onTakeLocalSnapshotResult:videoSource:image:errorCode:

- (void)onTakeLocalSnapshotResult:(NSInteger) taskId
                      videoSource:(ByteRTCVideoSource* _Nullable)videoSource
                            image:(ByteRTCImage* _Nullable)image
                        errorCode:(NSInteger)errorCode;

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

传入参数

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

onTakeRemoteSnapshotResult:streamId:info:image:errorCode:

- (void)onTakeRemoteSnapshotResult:(NSInteger)taskId
                              streamId:(NSString*)streamId
                                  info:(ByteRTCStreamInfo* _Nonnull)info
                                 image:(ByteRTCImage* _Nullable)image
                             errorCode:(NSInteger)errorCode;

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

传入参数

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

ByteRTCAudioFrameObserver
@protocol ByteRTCAudioFrameObserver <NSObject>

音频数据回调观察者

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

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

成员函数

返回名称
voidonRecordAudioFrame:
voidonPlaybackAudioFrame:
voidonRemoteUserAudioFrame:info:audioFrame:
voidonMixedAudioFrame:
voidonCaptureMixedAudioFrame:

函数说明

onRecordAudioFrame:

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

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

传入参数

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

onPlaybackAudioFrame:

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

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

传入参数

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

onRemoteUserAudioFrame:info:audioFrame:

- (void)onRemoteUserAudioFrame:(NSString* _Nonnull)streamId
                          info:(ByteRTCStreamInfo* _Nonnull)info
                    audioFrame:(ByteRTCAudioFrame* _Nonnull)audioFrame;

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

传入参数

参数名类型说明
streamIdNSString*远端流对应的唯一标识
infoByteRTCStreamInfo*远端流详细信息,参看 ByteRTCStreamInfo
audioFrameByteRTCAudioFrame*音频数据,参看 ByteRTCAudioFrame

注意

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

onMixedAudioFrame:

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

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

传入参数

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

onCaptureMixedAudioFrame:

- (void)onCaptureMixedAudioFrame:(ByteRTCAudioFrame* _Nonnull)audioFrame;

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

传入参数

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

ByteRtcScreenCapturerExtDelegate
BYTE_RTC_EXPORT @protocol ByteRtcScreenCapturerExtDelegate <NSObject>

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

用户创建 extension 后生成的 SampleHandler 需继承此协议以实现屏幕共享相关能力。 

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

成员函数

返回名称
voidonQuitFromApp
voidonReceiveMessageFromApp:
voidonSocketDisconnect
voidonSocketConnect
voidonNotifyAppRunning

函数说明

onQuitFromApp

- (void)onQuitFromApp;

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

注意

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

onReceiveMessageFromApp:

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

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

传入参数

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

onSocketDisconnect

- (void)onSocketDisconnect;

Socket 连接断开时触发此回调

onSocketConnect

- (void)onSocketConnect;

Socket 连接成功时触发此回调

onNotifyAppRunning

- (void)onNotifyAppRunning;

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

ByteRTCAudioEffectPlayerEventHandler
@protocol ByteRTCAudioEffectPlayerEventHandler <NSObject>

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

成员函数

返回名称
voidonAudioEffectPlayerStateChanged:state:error:

函数说明

onAudioEffectPlayerStateChanged:state:error:

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

播放状态改变时回调。

传入参数

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

ByteRTCAudioFrameProcessor
@protocol ByteRTCAudioFrameProcessor <NSObject>

自定义音频处理器

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

成员函数

返回名称
intonProcessRecordAudioFrame:
intonProcessPlayBackAudioFrame:
intonProcessRemoteUserAudioFrame:info:audioFrame:
intonProcessEarMonitorAudioFrame:
intonProcessScreenAudioFrame:

函数说明

onProcessRecordAudioFrame:

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

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

传入参数

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

返回值

  • 0:成功。
  • < 0:失败。

注意

  • 完成自定义音频处理后,SDK 会对处理后的音频帧进行编码,并传输到远端。此音频处理不会影响软件耳返音频数据。
  • 要启用此回调,必须调用 enableAudioProcessor:audioFormat:,并在参数中选择本地采集的音频,每 10 ms 收到此回调。

onProcessPlayBackAudioFrame:

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

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

传入参数

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

注意

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

onProcessRemoteUserAudioFrame:info:audioFrame:

- (int)onProcessRemoteUserAudioFrame:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info audioFrame:(ByteRTCAudioFrame* _Nonnull)audioFrame;

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

传入参数

参数名类型说明
streamIdNSString*音频流对应的唯一标识
infoByteRTCStreamInfo*音频流详细信息,参看 ByteRTCStreamInfo
audioFrameByteRTCAudioFrame*音频帧地址,参看 ByteRTCAudioFrame

注意

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

onProcessEarMonitorAudioFrame:

- (int)onProcessEarMonitorAudioFrame:(ByteRTCAudioFrame* _Nonnull)audioFrame;

Available since 3.50

软件耳返音频数据的回调。你可根据此回调自定义处理音频。

软件耳返音频中包含通过调用 setVoiceReverbType: 和 setVoiceChangerType: 设置的音频特效。

传入参数

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

返回值

  • 0:成功。
  • < 0:失败。

注意

  • 此数据处理只影响软件耳返音频数据。
  • 要启用此回调,必须调用 enableAudioProcessor:audioFormat:,并选择耳返音频。每 10 ms 收到此回调。

onProcessScreenAudioFrame:

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

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

传入参数

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

注意

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

ByteRTCRoomDelegate
@protocol ByteRTCRoomDelegate <NSObject>

房间事件回调接口

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

成员函数

返回名称
voidrtcRoom:onRoomStateChanged:withUid:state:extraInfo:
voidrtcRoom:onLeaveRoom:
voidrtcRoom:onAVSyncStateChange:
voidrtcRoom:onVideoPublishStateChanged:info:state:reason:
voidrtcRoom:onAudioPublishStateChanged:info:state:reason:
voidrtcRoom:onVideoSubscribeStateChanged:info:state:reason:
voidrtcRoom:onAudioSubscribeStateChanged:info:state:reason:
voidrtcRoom:onRoomStats:
voidrtcRoom:onLocalStreamStats:info:stats:
voidrtcRoom:onRemoteStreamStats:info:stats:
voidrtcRoom:onUserJoined:
voidrtcRoom:onUserLeave:reason:
voidonTokenWillExpire:
voidonPublishPrivilegeTokenWillExpire:
voidonSubscribePrivilegeTokenWillExpire:
voidrtcRoom:onAVSyncEvent:userId:eventCode:
voidrtcRoom:onUserPublishStreamVideo:info:isPublish:
voidrtcRoom:onUserPublishStreamAudio:info:isPublish:
voidrtcRoom:onRoomMessageReceived:message:
voidrtcRoom:onRoomBinaryMessageReceived:message:
voidrtcRoom:onUserMessageReceived:message:
voidrtcRoom:onUserBinaryMessageReceived:message:
voidrtcRoom:onRoomMessageReceived:uid:message:
voidrtcRoom:onRoomBinaryMessageReceived:uid:message:
voidrtcRoom:onUserMessageReceived:uid:message:
voidrtcRoom:onUserBinaryMessageReceived:uid:message:
voidrtcRoom:onUserMessageSendResult:error:
voidrtcRoom:onRoomMessageSendResult:error:
voidrtcRoom:onSetRoomExtraInfoResult:result:
voidrtcRoom:onRoomExtraInfoUpdate:value:lastUpdateUserId:lastUpdateTimeMs:
voidrtcRoom:onRoomStreamExtraInfoUpdate:info:extraInfo:
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:onStreamStateChanged:withUid:state:extraInfo:
void[deprecated] rtcRoom:onStreamAdd:

函数说明

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;

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例
roomIdNSString*房间 ID。
uidNSString*用户 ID。
stateNSInteger房间状态码。
extraInfoNSString*额外信息,如 {"elapsed":1187,"join_type":0}。
join_type表示加入房间的类型,0为首次进房,1为重连进房。
elapsed表示加入房间耗时,即本地用户从调用 joinRoom:userInfo:userVisibility:roomConfig: 到加入房间成功所经历的时间间隔,单位为 ms。

rtcRoom:onLeaveRoom:

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

离开房间成功回调。

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

传入参数

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

注意

  • 用户调用 leaveRoom 方法离开房间后,如果立即调用 destroy 销毁房间实例或 destroyRTCEngine 方法销毁 RTC 引擎,则将无法收到此回调事件。
  • 离开房间结束通话后,如果 App 需要使用系统音视频设备,则建议在收到此回调后再初始化音视频设备,否则可能由于 SDK 占用了导致 App 初始化音视频设备失败。

rtcRoom:onAVSyncStateChange:

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

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

传入参数

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

rtcRoom:onVideoPublishStateChanged:info:state:reason:

- (void)rtcRoom:( ByteRTCRoom*_Nonnull)rtcRoom onVideoPublishStateChanged:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
           state:(ByteRTCPublishState)state
           reason:(ByteRTCPublishStateChangeReason)reason;

Available since 3.60. 自 3.60 起,该回调替代了 rtcRoom:onStreamStateChanged:withUid:state:extraInfo: 方法中的本地视频发布状态变更通知功能。如果你已升级至 3.60 及以上版本 SDK,且还在使用该方法,请迁移至该回调。

本地视频流发布状态改变回调。

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息。
stateByteRTCPublishState发布状态码,参看 ByteRTCPublishState。
reasonByteRTCPublishStateChangeReason本地视频流发布状态改变的具体原因,参看 ByteRTCPublishStateChangeReason。

rtcRoom:onAudioPublishStateChanged:info:state:reason:

- (void)rtcRoom:( ByteRTCRoom*_Nonnull)rtcRoom onAudioPublishStateChanged:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
           state:(ByteRTCPublishState)state
           reason:(ByteRTCPublishStateChangeReason)reason;

Available since 3.60. 自 3.60 起,该回调替代了 rtcRoom:onStreamStateChanged:withUid:state:extraInfo: 方法中的本地音频流发布状态变更通知功能。如果你已升级至 3.60 及以上版本 SDK,且还在使用该方法,请迁移至该回调。

本地音频流发布状态改变回调。

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息。
stateByteRTCPublishState发布状态码,参看 ByteRTCPublishState。
reasonByteRTCPublishStateChangeReason本地音频流发布状态改变的具体原因,参看 ByteRTCPublishStateChangeReason。

rtcRoom:onVideoSubscribeStateChanged:info:state:reason:

- (void)rtcRoom:( ByteRTCRoom*_Nonnull)rtcRoom onVideoSubscribeStateChanged:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
           state:(ByteRTCSubscribeState)state
           reason:(ByteRTCSubscribeStateChangeReason)reason;

Available since 3.60. 自 3.60 起,该回调替代了 rtcRoom:onStreamStateChanged:withUid:state:extraInfo: 和 rtcRoom:onStreamSubscribed:userId:subscribeConfig: 方法中的视频流订阅状态发生变更通知功能。如果你已升级至 3.60 及以上版本 SDK,且还在使用这两个方法,请迁移至该回调。

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息。
stateByteRTCSubscribeState订阅状态码,参看 ByteRTCSubscribeState。
reasonByteRTCSubscribeStateChangeReason视频订阅状态改变的具体原因,参看 ByteRTCSubscribeStateChangeReason。

注意

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

rtcRoom:onAudioSubscribeStateChanged:info:state:reason:

- (void)rtcRoom:( ByteRTCRoom*_Nonnull)rtcRoom onAudioSubscribeStateChanged:(NSString*_Nonnull)streamId
            info:(ByteRTCStreamInfo* _Nonnull)info
           state:(ByteRTCSubscribeState)state
           reason:(ByteRTCSubscribeStateChangeReason)reason;

Available since 3.60. 自 3.60 起,该回调替代了 rtcRoom:onStreamStateChanged:withUid:state:extraInfo: 和 rtcRoom:onStreamSubscribed:userId:subscribeConfig: 方法中的音频流订阅状态发生变更通知功能。如果你已升级至 3.60 及以上版本 SDK,且还在使用这两个方法,请迁移至该回调。

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息。
stateByteRTCSubscribeState订阅状态码,参看 ByteRTCSubscribeState。
reasonByteRTCSubscribeStateChangeReason音频流订阅状态改变的具体原因,参看 ByteRTCSubscribeStateChangeReason。

注意

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

rtcRoom:onRoomStats:

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

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

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

传入参数

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

rtcRoom:onLocalStreamStats:info:stats:

- (void)rtcRoom:( ByteRTCRoom*_Nonnull)rtcRoom onLocalStreamStats:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
          stats:(ByteRTCLocalStreamStats*_Nonnull)stats NS_SWIFT_NAME(rtcRoom(_:onLocalStreamStats:));

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

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

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

传入参数

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

rtcRoom:onRemoteStreamStats:info:stats:

- (void)rtcRoom:( ByteRTCRoom*_Nonnull)rtcRoom onRemoteStreamStats:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
          stats:(ByteRTCRemoteStreamStats*_Nonnull)stats NS_SWIFT_NAME(rtcRoom(_:onRemoteStreamStats:));

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

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

传入参数

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

rtcRoom:onUserJoined:

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

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

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

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

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

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
userInfoByteRTCUserInfo*用户信息,参看 ByteRTCUserInfo。

rtcRoom:onUserLeave:reason:

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

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

传入参数

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

onTokenWillExpire:

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

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例

注意

若 Token 进房权限过期且未及时更新:

onPublishPrivilegeTokenWillExpire:

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

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

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例

注意

Token 发布权限过期后:

onSubscribePrivilegeTokenWillExpire:

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

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

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例

注意

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

rtcRoom:onAVSyncEvent:userId:eventCode:

- (void)rtcRoom:( ByteRTCRoom*_Nonnull)rtcRoom onAVSyncEvent:(NSString*_Nonnull)roomId userId:(NSString*_Nonnull)userId eventCode:(ByteRTCAVSyncEvent)eventCode;

Available since 3.60.

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象
roomIdNSString*房间 ID。
userIdNSString*用户 ID。
eventCodeByteRTCAVSyncEvent音视频同步状态错误,参看 ByteRTCAVSyncEvent。

rtcRoom:onUserPublishStreamVideo:info:isPublish:

- (void)rtcRoom:(ByteRTCRoom* _Nonnull)rtcRoom onUserPublishStreamVideo:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info isPublish:(BOOL)isPublish;

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

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息。
isPublishBOOL流是否发布。
  • true:已发布。
  • false:已取消发布。

注意

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

rtcRoom:onUserPublishStreamAudio:info:isPublish:

- (void)rtcRoom:(ByteRTCRoom* _Nonnull)rtcRoom onUserPublishStreamAudio:(NSString* _Nonnull)streamId info:(ByteRTCStreamInfo* _Nonnull)info isPublish:(BOOL)isPublish;

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

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息。
isPublishBOOL流是否发布。
  • true:已发布。
  • false:已取消发布。

注意

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

rtcRoom:onRoomMessageReceived:message:

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

该接口将于 3.64 被 onRoomMessageReceived:uid:message: 代替。
收到房间中调用 sendRoomMessage: 发送的广播文本消息时,收到此回调。

传入参数

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

rtcRoom:onRoomBinaryMessageReceived:message:

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

该接口将于 3.64 被 onRoomBinaryMessageReceived:uid:message: 代替。
收到房间内广播二进制消息的回调。

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

传入参数

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

rtcRoom:onUserMessageReceived:message:

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

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

传入参数

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

rtcRoom:onUserBinaryMessageReceived:message:

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

该接口将于 3.64 被 onUserBinaryMessageReceived:uid:message: 代替。
收到来自房间中其他用户通过 sendUserBinaryMessage:message:config: 发来的点对点二进制消息时,会收到此回调。

传入参数

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

rtcRoom:onRoomMessageReceived:uid:message:

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

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

传入参数

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

rtcRoom:onRoomBinaryMessageReceived:uid:message:

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

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

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

传入参数

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

rtcRoom:onUserMessageReceived:uid:message:

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

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

传入参数

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

rtcRoom:onUserBinaryMessageReceived:uid:message:

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

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

传入参数

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

rtcRoom:onUserMessageSendResult:error:

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

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

传入参数

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

注意

rtcRoom:onRoomMessageSendResult:error:

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

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

传入参数

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

rtcRoom:onSetRoomExtraInfoResult:result:

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

Available since 3.52.

调用 setRoomExtraInfo:value: 结果回调。

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 对象。
taskIdNSInteger本次调用的任务编号。
resultByteRTCSetRoomExtraInfoResult设置房间附加信息结果,详见 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;

Available since 3.52.

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

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

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

传入参数

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

rtcRoom:onRoomStreamExtraInfoUpdate:info:extraInfo:

- (void)rtcRoom:( ByteRTCRoom*_Nonnull)rtcRoom onRoomStreamExtraInfoUpdate:(NSString*_Nonnull)streamId info:(ByteRTCStreamInfo*_Nonnull)streamInfo extraInfo:(NSString*_Nonnull)extraInfo;

Available since 3.54

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

传入参数

参数名类型说明
rtcRoomByteRTCRoom*ByteRTCRoom 实例
streamIdNSString*流附加信息的流 ID
streamInfoByteRTCStreamInfo*流附加信息的流信息
extraInfoNSString*流附加信息

rtcRoom:onUserVisibilityChanged:errorCode:

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

Available since 3.54

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

传入参数

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

rtcRoom:onVideoStreamBanned:isBanned:

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

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

传入参数

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

注意

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

rtcRoom:onAudioStreamBanned:isBanned:

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

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

传入参数

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

注意

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

rtcRoom:onForwardStreamStateChanged:

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

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

传入参数

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

rtcRoom:onForwardStreamEvent:

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

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

传入参数

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

rtcRoom:onNetworkQuality:remoteQualities:

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

加入房间并发布或订阅流后, 以每 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;

字幕状态发生改变回调。

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

传入参数

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

rtcRoom:onSubtitleMessageReceived:

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

字幕相关内容回调。

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

传入参数

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

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;

Deprecated since 3.60, refer to Upgrade Guide for more.

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

传入参数

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

rtcRoom:onStreamAdd:

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

Deprecated since 3.36 and will be deleted in 3.51, use rtcRoom:onUserPublishStreamVideo:info:isPublish:instead.

以下情况会触发此回调:

  • 房间内的用户发布新的音视频流时,房间内的其他用户会收到此回调通知。
  • 房间内的用户原音视频流被移出后,又重新发布音视频流时,房间内的其他用户会收到此回调通知。
  • 用户刚加入房间时,会收到此回调,包含房间中所有已发布的流。

传入参数

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

ByteRTCExternalVideoEncoderEventHandler
BYTERTC_APPLE_EXPORT @protocol ByteRTCExternalVideoEncoderEventHandler<NSObject>

自定义编码帧回调类

注意

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

成员函数

返回名称
voidonStart:info:
voidonStop:info:
voidonRateUpdate:info:withVideoIndex:withFps:withBitRate:
voidonRequestKeyFrame:info:withVideoIndex:
voidonActiveVideoLayer:info:withVideoIndex:withActive:

函数说明

onStart:info:

- (void)onStart:(NSString*)streamId info:(ByteRTCStreamInfo* _Nonnull)info;

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

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

传入参数

参数名类型说明
streamIdNSString*自定义编码流 ID
infoByteRTCStreamInfo*自定义编码流信息,参看 ByteRTCStreamInfo

onStop:info:

- (void)onStop:(NSString*)streamId info:(ByteRTCStreamInfo* _Nonnull)info;

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

传入参数

参数名类型说明
streamIdNSString*自定义编码流 ID
infoByteRTCStreamInfo*自定义编码流信息,参看 ByteRTCStreamInfo

onRateUpdate:info:withVideoIndex:withFps:withBitRate:

- (void)onRateUpdate:(NSString*)streamId info:(ByteRTCStreamInfo* _Nonnull)info
      withVideoIndex:(NSInteger)videoIndex
             withFps:(NSInteger)fps
         withBitRate:(NSInteger)bitRateKps;

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

传入参数

参数名类型说明
streamIdNSString*远端编码流 ID
infoByteRTCStreamInfo*远端编码流信息,参看 ByteRTCStreamInfo
videoIndexNSInteger对应编码流的下标
fpsNSInteger变化后的帧率,单位:fps
bitRateKpsNSInteger变化后的码率,单位:kbps

onRequestKeyFrame:info:withVideoIndex:

- (void)onRequestKeyFrame:(NSString*)streamId info:(ByteRTCStreamInfo* _Nonnull)info
           withVideoIndex:(NSInteger)videoIndex;

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

传入参数

参数名类型说明
streamIdNSString*远端编码流 ID
infoByteRTCStreamInfo*远端编码流信息,参看 ByteRTCStreamInfo
videoIndexNSInteger对应编码流的下标

onActiveVideoLayer:info:withVideoIndex:withActive:

- (void)onActiveVideoLayer:(NSString*)streamId info:(ByteRTCStreamInfo* _Nonnull)info
            withVideoIndex:(NSInteger)videoIndex
                withActive:(BOOL)active;

Available since 3.56

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

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

传入参数

参数名类型说明
streamIdNSString*自定义编码流 ID
infoByteRTCStreamInfo*自定义编码流信息,参看 ByteRTCStreamInfo
videoIndexNSInteger对应编码流的下标
activeBOOL该路流可发送状态

注意

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

ByteRTCVideoProcessorDelegate
BYTERTC_APPLE_EXPORT @protocol ByteRTCVideoProcessorDelegate <NSObject>

视频处理回调接口类

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

成员函数

返回名称
ByteRTCVideoFrameprocessVideoFrame:

函数说明

processVideoFrame:

- (id<ByteRTCVideoFrame> _Nullable)processVideoFrame:(id<ByteRTCVideoFrame> _Nonnull)srcFrame;

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

传入参数

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

返回值

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

注意

  • 如果需要取消视频前处理,可以将视频前处理器设置为 nullptr。
  • 应用层实现 processVideoFrame 接口时,可以直接修改 src_frame 的缓冲区,调用 addRef 方法将 src_frame 引用计数加一,然后将修改后的 src_frame 返回, 也可以创建一个新的视频帧并返回。
  • 对于 processVideoFrame 返回的视频帧,在 SDK 层消费完成后,SDK 内部总是调用这个视频帧的 releaseRef 方法。
ByteRTCMediaPlayerEventHandler
@protocol ByteRTCMediaPlayerEventHandler <NSObject>

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

成员函数

返回名称
voidonMediaPlayerStateChanged:state:error:
voidonMediaPlayerPlayingProgress:progress:
voidonMediaPlayerEvent:event:message:

函数说明

onMediaPlayerStateChanged:state:error:

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

播放状态改变时回调。

传入参数

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

onMediaPlayerPlayingProgress:progress:

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

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

传入参数

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

onMediaPlayerEvent:event:message:

-(void)onMediaPlayerEvent:(int)playerId event:(ByteRTCPlayerEvent)event message:(NSString*_Nullable)message;

Available since 3.59

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

传入参数

参数名类型说明
playerIdintByteRTCMediaPlayer 的 ID。通过 getMediaPlayer: 设置。
eventByteRTCPlayerEvent播放器事件。参看 ByteRTCPlayerEvent。
messageNSString*事件描述信息,可能为空。

ByteRTCGameRoomDelegate
@protocol ByteRTCGameRoomDelegate <NSObject>

游戏房间事件回调接口

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

成员函数

返回名称
voidrtcRoom:onRoomStateChanged:withUid:state:extraInfo:
voidrtcRoom:onStreamStateChanged:withUid:state:extraInfo:
voidrtcRoom:onLeaveRoom:
voidrtcRoom:onAVSyncStateChange:
voidrtcRoom:onVideoPublishStateChanged:info:state:reason:
voidrtcRoom:onAudioPublishStateChanged:info:state:reason:
voidrtcRoom:onScreenVideoPublishStateChanged:userId:state:reason:
voidrtcRoom:onScreenAudioPublishStateChanged:userId:state:reason:
voidrtcRoom:onVideoSubscribeStateChanged:info:state:reason:
voidrtcRoom:onAudioSubscribeStateChanged:info:state:reason:
voidrtcRoom:onScreenVideoSubscribeStateChanged:userId:state:reason:
voidrtcRoom:onScreenAudioSubscribeStateChanged:userId:state:reason:
voidrtcRoom:onRoomStats:
voidrtcRoom:onLocalStreamStats:info:stats:
voidrtcRoom:onRemoteStreamStats:info:stats:
voidrtcRoom:onUserJoined:
voidrtcRoom:onUserLeave:reason:
voidonTokenWillExpire:
voidonPublishPrivilegeTokenWillExpire:
voidonSubscribePrivilegeTokenWillExpire:
voidrtcRoom:onAVSyncEvent:userId:eventCode:
voidrtcRoom:onUserPublishStreamVideo:info:isPublish:
voidrtcRoom:onUserPublishStreamAudio:info:isPublish:
voidrtcRoom:onUserPublishScreenVideo:uid:isPublish:
voidrtcRoom:onUserPublishScreenAudio:uid:isPublish:
voidrtcRoom:onRoomMessageReceived:message:
voidrtcRoom:onRoomBinaryMessageReceived:message:
voidrtcRoom:onUserMessageReceived:message:
voidrtcRoom:onUserBinaryMessageReceived:message:
voidrtcRoom:onUserMessageSendResult:error:
voidrtcRoom:onRoomMessageSendResult:error:
voidrtcRoom:onSetRoomExtraInfoResult:result:
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:onStreamAdd:

函数说明

rtcRoom:onRoomStateChanged:withUid:state:extraInfo:

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
roomIdNSString*房间 ID。
uidNSString*用户 ID。
stateNSInteger房间状态码。
extraInfoNSString*额外信息,如 {"elapsed":1187,"join_type":0}。
join_type表示加入房间的类型,0为首次进房,1为重连进房。
elapsed表示加入房间耗时,即本地用户从调用 joinRoom:userInfo: 到加入房间成功所经历的时间间隔,单位为 ms。

rtcRoom:onStreamStateChanged:withUid:state:extraInfo:

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

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

传入参数

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

rtcRoom:onLeaveRoom:

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

离开游戏房间成功回调。

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
statsByteRTCRoomStats*保留参数,目前为空。

注意

  • 用户调用 leaveRoom 方法离开房间后,如果立即调用 destroy 销毁房间实例方法销毁 RTC 引擎,则将无法收到此回调事件。
  • 离开游戏房间结束通话后,如果 App 需要使用系统音视频设备,则建议在收到此回调后再初始化音视频设备,否则可能由于 SDK 占用了导致 App 初始化音视频设备失败。

rtcRoom:onAVSyncStateChange:

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

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

传入参数

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

rtcRoom:onVideoPublishStateChanged:info:state:reason:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onVideoPublishStateChanged:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
           state:(ByteRTCPublishState)state
           reason:(ByteRTCPublishStateChangeReason)reason;

视频发布状态改变回调。

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
streamIdNSString*视频流 ID。
infoByteRTCStreamInfo*视频流信息,参看 ByteRTCStreamInfo。
stateByteRTCPublishState发布状态码,参看 ByteRTCPublishState。
reasonByteRTCPublishStateChangeReason本端视频流发布状态改变的具体原因,参看 ByteRTCPublishStateChangeReason。

rtcRoom:onAudioPublishStateChanged:info:state:reason:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onAudioPublishStateChanged:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
           state:(ByteRTCPublishState)state
           reason:(ByteRTCPublishStateChangeReason)reason;

音频发布状态改变回调。

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
streamIdNSString*音频流 ID。
infoByteRTCStreamInfo*音频流信息,参看 ByteRTCStreamInfo。
stateByteRTCPublishState发布状态码,参看 ByteRTCPublishState。
reasonByteRTCPublishStateChangeReason本端音频流发布状态改变的具体原因,参看 ByteRTCPublishStateChangeReason。

rtcRoom:onScreenVideoPublishStateChanged:userId:state:reason:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onScreenVideoPublishStateChanged:(NSString*_Nonnull)roomId
             userId:(nonnull NSString*)uid
              state:(ByteRTCPublishState)state
             reason:(ByteRTCPublishStateChangeReason)reason;

屏幕流视频发布状态改变回调。

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
roomIdNSString*房间 ID。
uidNSString*用户 ID。
stateByteRTCPublishState发布状态码,参看 ByteRTCPublishState。
reasonByteRTCPublishStateChangeReason屏幕流视频发布状态改变的具体原因,参看 ByteRTCPublishStateChangeReason。

rtcRoom:onScreenAudioPublishStateChanged:userId:state:reason:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onScreenAudioPublishStateChanged:(NSString*_Nonnull)roomId
             userId:(nonnull NSString*)uid
              state:(ByteRTCPublishState)state
             reason:(ByteRTCPublishStateChangeReason)reason;

屏幕流音频发布状态改变回调。

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
roomIdNSString*房间 ID。
uidNSString*用户 ID。
stateByteRTCPublishState发布状态码,参看 ByteRTCPublishState。
reasonByteRTCPublishStateChangeReason屏幕流音频发布状态改变的具体原因,参看 ByteRTCPublishStateChangeReason。

rtcRoom:onVideoSubscribeStateChanged:info:state:reason:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onVideoSubscribeStateChanged:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
           state:(ByteRTCSubscribeState)state
           reason:(ByteRTCSubscribeStateChangeReason)reason;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
streamIdNSString*视频流 ID。
infoByteRTCStreamInfo*视频流信息,参看 ByteRTCStreamInfo。
stateByteRTCSubscribeState订阅状态码,参看 ByteRTCSubscribeState。
reasonByteRTCSubscribeStateChangeReason视频订阅状态改变的具体原因,参看 ByteRTCSubscribeStateChangeReason。

rtcRoom:onAudioSubscribeStateChanged:info:state:reason:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onAudioSubscribeStateChanged:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
           state:(ByteRTCSubscribeState)state
           reason:(ByteRTCSubscribeStateChangeReason)reason;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
streamIdNSString*音频流 ID.
infoByteRTCStreamInfo*音频流信息,参看 ByteRTCStreamInfo。
stateByteRTCSubscribeState订阅状态码,参看 ByteRTCSubscribeState。
reasonByteRTCSubscribeStateChangeReason音频订阅状态改变的具体原因,参看 ByteRTCSubscribeStateChangeReason。

rtcRoom:onScreenVideoSubscribeStateChanged:userId:state:reason:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onScreenVideoSubscribeStateChanged:(NSString*_Nonnull)roomId
             userId:(nonnull NSString*)uid
              state:(ByteRTCSubscribeState)state
             reason:(ByteRTCSubscribeStateChangeReason)reason;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
roomIdNSString*房间 ID。
uidNSString*用户 ID。
stateByteRTCSubscribeState订阅状态码,参看 ByteRTCSubscribeState。
reasonByteRTCSubscribeStateChangeReason屏幕流视频订阅状态改变的具体原因,参看 ByteRTCSubscribeStateChangeReason。

rtcRoom:onScreenAudioSubscribeStateChanged:userId:state:reason:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onScreenAudioSubscribeStateChanged:(NSString*_Nonnull)roomId
             userId:(nonnull NSString*)uid
              state:(ByteRTCSubscribeState)state
             reason:(ByteRTCSubscribeStateChangeReason)reason;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
roomIdNSString*房间 ID。
uidNSString*用户 ID。
stateByteRTCSubscribeState订阅状态码,参看 ByteRTCSubscribeState。
reasonByteRTCSubscribeStateChangeReason屏幕流音频订阅状态改变的具体原因,参看 ByteRTCSubscribeStateChangeReason。

rtcRoom:onRoomStats:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onRoomStats:(ByteRTCRoomStats*_Nonnull)stats NS_SWIFT_NAME(rtcRoom(_:onRoomStats:));

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
statsByteRTCRoomStats*当前 ByteRTCGameRoom 统计数据,详见:ByteRTCRoomStats。

rtcRoom:onLocalStreamStats:info:stats:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onLocalStreamStats:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info stats:(ByteRTCLocalStreamStats*_Nonnull)stats NS_SWIFT_NAME(rtcRoom(_:onLocalStreamStats:));

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

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息,参看 ByteRTCStreamInfo。
statsByteRTCLocalStreamStats*当前房间本地流数据统计。详见:ByteRTCLocalStreamStats

rtcRoom:onRemoteStreamStats:info:stats:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onRemoteStreamStats:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info stats:(ByteRTCRemoteStreamStats*_Nonnull)stats NS_SWIFT_NAME(rtcRoom(_:onRemoteStreamStats:));

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息,参看 ByteRTCStreamInfo。
statsByteRTCRemoteStreamStats*当前房间本地流数据统计。 详见:ByteRTCRemoteStreamStats

rtcRoom:onUserJoined:

- (void)rtcRoom:(ByteRTCGameRoom*_Nonnull)rtcRoom onUserJoined:(ByteRTCUserInfo*_Nonnull)userInfo;

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

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
userInfoByteRTCUserInfo*用户信息,参看 ByteRTCUserInfo。

rtcRoom:onUserLeave:reason:

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

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

传入参数

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

onTokenWillExpire:

- (void)onTokenWillExpire:(ByteRTCGameRoom*_Nonnull)rtcRoom;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例

onPublishPrivilegeTokenWillExpire:

- (void)onPublishPrivilegeTokenWillExpire:( ByteRTCGameRoom*_Nonnull)rtcRoom;

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例

注意

Token 发布权限过期后:

onSubscribePrivilegeTokenWillExpire:

- (void)onSubscribePrivilegeTokenWillExpire:( ByteRTCGameRoom*_Nonnull)rtcRoom;

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例

注意

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

rtcRoom:onAVSyncEvent:userId:eventCode:

- (void)rtcRoom:( ByteRTCGameRoom*_Nonnull)rtcRoom onAVSyncEvent:(NSString*_Nonnull)roomId userId:(NSString*_Nonnull)userId eventCode:(ByteRTCAVSyncEvent)eventCode;

Available since 3.60.

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
roomIdNSString*房间 ID。
userIdNSString*用户 ID。
eventCodeByteRTCAVSyncEvent音视频同步状态错误,参看 ByteRTCAVSyncEvent。

rtcRoom:onUserPublishStreamVideo:info:isPublish:

- (void)rtcRoom:(ByteRTCGameRoom* _Nonnull)rtcRoom onUserPublishStreamVideo:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
      isPublish:(BOOL)isPublish;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息,参看 ByteRTCStreamInfo。
isPublishBOOL流是否发布。
  • true:已发布。
  • false:已取消发布。

rtcRoom:onUserPublishStreamAudio:info:isPublish:

- (void)rtcRoom:(ByteRTCGameRoom* _Nonnull)rtcRoom onUserPublishStreamAudio:(NSString*_Nonnull)streamId
           info:(ByteRTCStreamInfo* _Nonnull)info
      isPublish:(BOOL)isPublish;

房间内远端音频流发布回调。

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
streamIdNSString*流 ID。
infoByteRTCStreamInfo*流信息,参看 ByteRTCStreamInfo。
isPublishBOOL流是否发布。
  • true:已发布。
  • false:已取消发布。

rtcRoom:onUserPublishScreenVideo:uid:isPublish:

- (void)rtcRoom:(ByteRTCGameRoom* _Nonnull)rtcRoom onUserPublishScreenVideo:(NSString* _Nonnull)roomId uid:(NSString* _Nonnull)uid isPublish:(BOOL)isPublish;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
roomIdNSString*房间 ID。
uidNSString*远端流发布用户的用户 ID。
isPublishBOOL为 true 代表已发布,为 false 代表已取消发布。

rtcRoom:onUserPublishScreenAudio:uid:isPublish:

- (void)rtcRoom:(ByteRTCGameRoom* _Nonnull)rtcRoom onUserPublishScreenAudio:(NSString* _Nonnull)roomId uid:(NSString* _Nonnull)uid isPublish:(BOOL)isPublish;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
roomIdNSString*房间 ID。
uidNSString*远端流发布用户的用户 ID。
isPublishBOOL为 true 代表已发布,为 false 代表已取消发布。

rtcRoom:onRoomMessageReceived:message:

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

广播文本消息回调。

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
uidNSString*消息发送者 ID。
messageNSString*收到的文本消息内容。

rtcRoom:onRoomBinaryMessageReceived:message:

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
uidNSString*消息发送者 ID 。
messageNSData*收到的二进制消息内容。

rtcRoom:onUserMessageReceived:message:

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
uidNSString*消息发送者的用户 ID。
messageNSString*收到的文本消息内容。

rtcRoom:onUserBinaryMessageReceived:message:

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
uidNSString*消息发送者的用户 ID。
messageNSData*收到的二进制消息内容。

rtcRoom:onUserMessageSendResult:error:

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
msgidNSInteger本条消息的 ID。
errorByteRTCUserMessageSendResult消息发送结果,详见 ByteRTCUserMessageSendResult

rtcRoom:onRoomMessageSendResult:error:

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
msgidNSInteger本条消息的 ID。
errorByteRTCRoomMessageSendResult消息发送结果,详见 ByteRTCRoomMessageSendResult

rtcRoom:onSetRoomExtraInfoResult:result:

- (void)rtcRoom:( ByteRTCGameRoom*_Nonnull)rtcRoom onSetRoomExtraInfoResult:(NSInteger)taskId result:(ByteRTCSetRoomExtraInfoResult)result;

Available since 3.52.

发送附加信息结果回调。

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
taskIdNSInteger本次调用的任务编号。
resultByteRTCSetRoomExtraInfoResult房间附加信息设置结果,详见 ByteRTCSetRoomExtraInfoResult

rtcRoom:onRoomExtraInfoUpdate:value:lastUpdateUserId:lastUpdateTimeMs:

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

Available since 3.52.

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

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

传入参数

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

rtcRoom:onUserVisibilityChanged:errorCode:

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

Available since 3.54

设置用户可见性的回调。

传入参数

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

rtcRoom:onVideoStreamBanned:isBanned:

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

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

传入参数

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

注意

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

rtcRoom:onAudioStreamBanned:isBanned:

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

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

传入参数

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

注意

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

rtcRoom:onForwardStreamStateChanged:

- (void)rtcRoom:( ByteRTCGameRoom*_Nonnull)rtcRoom onForwardStreamStateChanged:(NSArray<ByteRTCForwardStreamStateInfo*>* _Nonnull)infos;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
infosNSArray<ByteRTCForwardStreamStateInfo*>*跨房间媒体流转发目标房间信息数组,详见 ByteRTCForwardStreamStateInfo

rtcRoom:onForwardStreamEvent:

- (void)rtcRoom:( ByteRTCGameRoom* _Nonnull)rtcRoom onForwardStreamEvent:(NSArray<ByteRTCForwardStreamEventInfo*>* _Nonnull)infos;

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
infosNSArray<ByteRTCForwardStreamEventInfo*>*跨房间媒体流转发目标房间事件数组,详见 ByteRTCForwardStreamEventInfo

rtcRoom:onNetworkQuality:remoteQualities:

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

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
localQualityByteRTCNetworkQualityStats*本端网络质量,详见 ByteRTCNetworkQualityStats。
remoteQualitiesNSArray<ByteRTCNetworkQualityStats*>*已订阅用户的网络质量,详见 ByteRTCNetworkQualityStats。

注意

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

rtcRoom:onSubtitleStateChanged:errorCode:errorMessage:

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

字幕状态发生改变回调。

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

传入参数

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

rtcRoom:onSubtitleMessageReceived:

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

字幕相关内容回调。

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
subtitlesNSArray<ByteRTCSubtitleMessage*>*字幕消息内容。参看 ByteRTCSubtitleMessage。

rtcRoom:onRoomWarning:

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

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

发生警告回调。

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

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
warningCodeByteRTCWarningCode警告码,详见枚举类型 ByteRTCWarningCode 。

rtcRoom:onStreamAdd:

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

Deprecated since 3.36 and will be deleted in later version, use rtcRoom:onUserPublishStreamAudio:info:isPublish:, rtcRoom:onUserPublishStreamVideo:info:isPublish:, rtcRoom:onUserPublishScreenVideo:uid:isPublish:, and rtcRoom:onUserPublishScreenAudio:uid:isPublish: instead.

以下情况会触发此回调:

  • 房间内的用户发布新的音视频流时,房间内的其他用户会收到此回调通知。
  • 房间内的用户原音视频流被移出后,又重新发布音视频流时,房间内的其他用户会收到此回调通知。
  • 用户刚加入房间时,会收到此回调,包含房间中所有已发布的流。

传入参数

参数名类型说明
rtcRoomByteRTCGameRoom*ByteRTCGameRoom 实例。
streamid<ByteRTCStream>流属性,参看 ByteRTCStream 。

ByteRTCRTSRoomDelegate
@protocol ByteRTCRTSRoomDelegate <NSObject>

RTS 房间事件回调接口

成员函数

返回名称
voidrtsRoom:onRoomStateChanged:withUid:state:extraInfo:
voidrtsRoom:onLeaveRoom:
voidrtsRoom:onUserJoined:
voidrtsRoom:onUserLeave:reason:
voidrtsRoom:onRoomMessageReceived:message:
voidrtsRoom:onRoomBinaryMessageReceived:message:
voidrtsRoom:onRoomMessageSendResult:error:
voidrtsRoom:onUserMessageReceived:message:
voidrtsRoom:onUserBinaryMessageReceived:message:
voidrtsRoom:onRoomMessageReceived:uid:message:
voidrtsRoom:onRoomBinaryMessageReceived:uid:message:
voidrtsRoom:onUserMessageReceived:uid:message:
voidrtsRoom:onUserBinaryMessageReceived:uid:message:
voidrtsRoom:onUserMessageSendResult:error:

函数说明

rtsRoom:onRoomStateChanged:withUid:state:extraInfo:

- (void)rtsRoom:(ByteRTCRTSRoom* _Nonnull)rtsRoom onRoomStateChanged:(NSString* _Nonnull)roomId
        withUid:(nonnull NSString*)uid state:(NSInteger)state
       extraInfo:(nonnull NSString*)extraInfo;

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

传入参数

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

rtsRoom:onLeaveRoom:

- (void)rtsRoom:( ByteRTCRTSRoom*_Nonnull)rtsRoom onLeaveRoom:(ByteRTCRoomStats*_Nonnull)stats;

离开 RTS 房间成功回调。

用户调用 leaveRoom 方法后,SDK 会停止房间内消息的收发,并在释放所有相关资源后,通过此回调通知用户离开房间成功。

传入参数

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

注意

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

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

rtsRoom:onUserJoined:

- (void)rtsRoom:(ByteRTCRTSRoom* _Nonnull)rtsRoom onUserJoined:(ByteRTCUserInfo*_Nonnull)userInfo;

远端用户首次进房,或断网后重新连入房间时,房间内其他用户将收到该事件。

传入参数

参数名类型说明
rtsRoomByteRTCRTSRoom*ByteRTCRTSRoom 对象。
userInfoByteRTCUserInfo*用户信息,参看 ByteRTCUserInfo。

rtsRoom:onUserLeave:reason:

- (void)rtsRoom:(ByteRTCRTSRoom* _Nonnull)rtsRoom onUserLeave:(NSString* _Nonnull)uid
         reason:(ByteRTCUserOfflineReason)reason;

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

传入参数

参数名类型说明
rtsRoomByteRTCRTSRoom*ByteRTCRTSRoom 对象。
uidNSString*离开房间的远端用户 ID 。
reasonByteRTCUserOfflineReason用户离开房间的原因,参看 ByteRTCUserOfflineReason。

rtsRoom:onRoomMessageReceived:message:

- (void)rtsRoom:(ByteRTCRTSRoom* _Nonnull)rtsRoom onRoomMessageReceived:(NSString* _Nonnull)uid
        message:(NSString* _Nonnull)message;

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

传入参数

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

rtsRoom:onRoomBinaryMessageReceived:message:

- (void)rtsRoom:(ByteRTCRTSRoom* _Nonnull)rtsRoom onRoomBinaryMessageReceived:(NSString* _Nonnull)uid
        message:(NSData* _Nonnull)message;

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

传入参数

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

rtsRoom:onRoomMessageSendResult:error:

- (void)rtsRoom:(ByteRTCRTSRoom* _Nonnull)rtsRoom onRoomMessageSendResult:(NSInteger)msgid
          error:(ByteRTCRoomMessageSendResult)error;

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

传入参数

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

注意

rtsRoom:onUserMessageReceived:message:

- (void)rtsRoom:( ByteRTCRTSRoom*_Nonnull)rtsRoom onUserMessageReceived:(NSString*_Nonnull)uid
               message:(NSString*_Nonnull)message;

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

传入参数

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

rtsRoom:onUserBinaryMessageReceived:message:

- (void)rtsRoom:( ByteRTCRTSRoom*_Nonnull)rtsRoom onUserBinaryMessageReceived:(NSString*_Nonnull)uid
               message:(NSData*_Nonnull)message;

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

传入参数

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

rtsRoom:onRoomMessageReceived:uid:message:

- (void)rtsRoom:( ByteRTCRTSRoom*_Nonnull)rtsRoom onRoomMessageReceived:(NSInteger)msgid uid:(NSString*_Nonnull)uid
        message:(NSString*_Nonnull)message;

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

传入参数

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

rtsRoom:onRoomBinaryMessageReceived:uid:message:

- (void)rtsRoom:( ByteRTCRTSRoom*_Nonnull)rtsRoom onRoomBinaryMessageReceived:(NSInteger)msgid uid:(NSString*_Nonnull)uid
        message:(NSData*_Nonnull)message;

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

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

传入参数

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

rtsRoom:onUserMessageReceived:uid:message:

- (void)rtsRoom:( ByteRTCRTSRoom*_Nonnull)rtsRoom onUserMessageReceived:(NSInteger)msgid uid:(NSString*_Nonnull)uid
               message:(NSString*_Nonnull)message;

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

传入参数

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

rtsRoom:onUserBinaryMessageReceived:uid:message:

- (void)rtsRoom:( ByteRTCRTSRoom*_Nonnull)rtsRoom onUserBinaryMessageReceived:(NSInteger)msgid uid:(NSString*_Nonnull)uid
               message:(NSData*_Nonnull)message;

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

传入参数

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

rtsRoom:onUserMessageSendResult:error:

- (void)rtsRoom:( ByteRTCRTSRoom*_Nonnull)rtsRoom onUserMessageSendResult:(NSInteger)msgid error:(ByteRTCUserMessageSendResult)error;

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

传入参数

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

注意

ByteRTCLocalEncodedVideoFrameObserver
BYTERTC_APPLE_EXPORT @protocol ByteRTCLocalEncodedVideoFrameObserver<NSObject>
 @optional

本地视频帧监测器

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

成员函数

返回名称
voidonLocalEncodedVideoFrame:Frame:

函数说明

onLocalEncodedVideoFrame:Frame:

- (void)onLocalEncodedVideoFrame:(ByteRTCVideoSource* _Nullable)videoSource
                           Frame:(ByteRTCEncodedVideoFrame* _Null_unspecified)frame;

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

传入参数

参数名类型说明
videoSourceByteRTCVideoSource*预留参数
frameByteRTCEncodedVideoFrame*_Null_unspecified本地视频帧信息,参看 ByteRTCEncodedVideoFrame

ByteRTCRemoteEncodedVideoFrameObserver
BYTERTC_APPLE_EXPORT @protocol ByteRTCRemoteEncodedVideoFrameObserver<NSObject>

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

注意

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

成员函数

返回名称
voidonRemoteEncodedVideoFrame:info:withEncodedVideoFrame:

函数说明

onRemoteEncodedVideoFrame:info:withEncodedVideoFrame:

- (void)onRemoteEncodedVideoFrame:(NSString*)streamId info:(ByteRTCStreamInfo* _Nonnull)info
                   withEncodedVideoFrame:(ByteRTCEncodedVideoFrame* _Nonnull)videoFrame;

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

传入参数

参数名类型说明
streamIdNSString*收到的远端流 ID
infoByteRTCStreamInfo*收到的远端流信息,参看 ByteRTCStreamInfo
videoFrameByteRTCEncodedVideoFrame*收到的远端视频帧信息,参看 ByteRTCEncodedVideoFrame

ByteRTCMediaPlayerCustomSourceProvider
BYTERTC_APPLE_EXPORT @protocol ByteRTCMediaPlayerCustomSourceProvider <NSObject>

内存播放数据源回调

成员函数

返回名称
intonReadData:bufferSize:
int64_tonSeek:whence:

函数说明

onReadData:bufferSize:

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

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;

Available since 3.53

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

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

传入参数

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

返回值

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

定位失败,返回 -1。

最近更新时间:2026.08.05 15:06:59
这个页面对您有帮助吗?
有用
有用
无用
无用