QNRTCSessionDelegate
QNRTCSessionDelegate 提供连麦相关的所有回调,包括但不限于远端连麦者加入(离开)房间、发布(取消发布)音视频以及连麦状态等回调
roomStateDidChange:
定义
- (void)RTCSession:(QNRTCSession *)session roomStateDidChange:(QNRoomState)roomState;
说明
房间状态变化的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession |
roomState | 房间状态 |
房间状态参考roomState
属性
@property (nonatomic, assign, readonly) QNRoomState roomState;
QNRoomState
状态说明如下:
状态 | 说明 |
---|---|
QNRoomStateIdle | 空闲状态、初始状态或者退出房间后 |
QNRoomStateConnecting | 正在加入房间的状态 |
QNRoomStateConnected | 已加入房间的状态 |
QNRoomStateReconnecting | 正在重连的状态 |
sessionDidPublishLocalMedia:
定义
- (void)sessionDidPublishLocalMedia:(QNRTCSession *)session;
说明
发布本地音视频回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
didJoinOfRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didJoinOfRemoteUserId:(NSString *)userId;
说明
远端用户加入房间的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
userId | 远端用户 Id |
didLeaveOfRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didLeaveOfRemoteUserId:(NSString *)userId;
说明
远端用户离开房间的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
userId | 远端用户 Id |
didPublishOfRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didPublishOfRemoteUserId:(NSString *)userId;
说明
远端用户发布音视频的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
userId | 远端用户 Id |
didUnpublishOfRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didUnpublishOfRemoteUserId:(NSString *)userId;
说明
远端用户取消发布音视频的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
userId | 远端用户 Id |
didSubscribeUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didSubscribeUserId:(NSString *)userId;
说明
订阅远端用户的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
userId | 远端用户 Id |
didAudioMuted:byRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didAudioMuted:(BOOL)muted byRemoteUserId:(NSString *)userId;
说明
远端用户音频状态变更为 muted 的回调,可实时更新远端用户的音视频状态
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
muted | 音频静音 |
userId | 远端用户 Id |
didVideoMuted:byRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didVideoMuted:(BOOL)muted byRemoteUserId:(NSString *)userId;
说明
远端用户视频状态变更为 muted 的回调,可实时更新远端用户的音视频状态
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
muted | 视频关闭 |
userId | 远端用户 Id |
didVideoMuted:byRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didKickoutByUserId:(NSString *)userId;
说明
本人被 userId 踢出房间的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
userId | 远端用户 Id |
didFailWithError:
定义
- (void)RTCSession:(QNRTCSession *)session didFailWithError:(NSError *)error;
说明
SDK 运行过程中发生错误会通过该方法回调,具体错误码的含义可以见 QNTypeDefines.h 文件
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
error | 错误信息 |
firstVideoDidDecodeOfRemoteUserId:
定义
- (QNVideoRender *)RTCSession:(QNRTCSession *)session firstVideoDidDecodeOfRemoteUserId:(NSString *)userId;
说明
远端用户视频首帧解码后的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
userId | 远端用户 Id |
注意:如果需要渲染,则需要返回一个带 renderView 的 QNVideoRender 对象,这里的 renderView 是 QNVideoView。
didDetachRenderView:ofRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didDetachRenderView:(UIView *)renderView ofRemoteUserId:(NSString *)userId;
说明
远端用户取消渲染到 renderView 上的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
userId | 远端用户 Id |
cameraSourceDidGetSampleBuffer:
定义
- (void)RTCSession:(QNRTCSession *)session cameraSourceDidGetSampleBuffer:(CMSampleBufferRef)sampleBuffer;
说明
获取到摄像头原数据时的回调,便于开发者做滤镜等处理
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
sampleBuffer | 摄像头原数据 |
注意:这个回调在 camera 数据的输出线程,请不要做过于耗时的操作,否则可能会导致编码帧率下降
microphoneSourceDidGetAudioBuffer:
定义
- (void)RTCSession:(QNRTCSession *)session microphoneSourceDidGetAudioBuffer:(AudioBuffer *)audioBuffer;
说明
获取到本地麦克风原始数据时的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
audioBuffer | 本地麦克风的原始数据 |
注意:这个回调在 AU Remote IO 线程,请不要做过于耗时的操作,否则可能阻塞该线程影响音频输出或其他未知问题
didGetPixelBuffer:ofRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didGetPixelBuffer:(CVPixelBufferRef)pixelBuffer ofRemoteUserId:(NSString *)userId;
说明
获取到远端用户视频数据时的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
pixelBuffer | 远端用户的视频数据 |
userId | 远端用户 Id |
注意:回调远端用户视频数据会带来一定的性能消耗,如果没有相关需求,请不要实现该回调
didGetAudioBuffer:bitsPerSample:sampleRate:ofRemoteUserId:
定义
- (void)RTCSession:(QNRTCSession *)session
didGetAudioBuffer:(AudioBuffer *)audioBuffer
bitsPerSample:(NSUInteger)bitsPerSample
sampleRate:(NSUInteger)sampleRate
ofRemoteUserId:(NSString *)userId;
说明
获取到远端用户音频数据时的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
audioBuffer | 远端用户的音频数据(PCM 格式) |
bitsPerSample | PCM 数据的位宽 |
sampleRate | 音频数据的采样率 |
userId | 远端用户 Id |
注意:回调远端用户音频数据会带来一定的性能消耗,如果没有相关需求,请不要实现该回调
didGetStatistic:ofUserId:
定义
- (void)RTCSession:(QNRTCSession *)session didGetStatistic:(NSDictionary *)statistic ofUserId:(NSString *)userId;
说明
统计信息的回调
参数
参数名 | 描述 |
---|---|
session | QNRTCSession 的实例 |
statistic | 统计信息 |
userId | 远端用户的 Id |
统计信息回调的时间间隔
@property (nonatomic, assign) NSUInteger statisticInterval;
注意:统计信息的回调,由 statisticInterval
参数决定, statisticInterval
默认为 0,即不回调统计信息****注意:这个回调在 camera 数据的输出线程,请不要做过于耗时的操作,否则可能会导致推流帧率下降