当前通话信息

本章节主要介绍在通话过程中,您可能要用到的各种通话信息。包括:当前通话标识ID、远程画面就绪通知、自己和正在说话的用户的音量汇报。在这里需要明确几个概念:

通话标识ID:通话标识ID又称频道id或channel id,是用来唯一标识某一通通话的id,该id是全局唯一的,建议开发者自己维护

获取当前通话标识 ID

获取正在进行中的网络通话call id

@protocol NIMNetCallManager <NSObject>
/**
 *  获取正在进行中的网络通话call id
 *
 *  @return call id, 如果没有正在进行中的通话则返回0
 */
- (UInt64)currentCallID;
@end
//获取当前通话 ID
UInt64 currentNetcall = [[NIMAVChatSDK sharedSDK].netCallManager currentCallID];

远程视频 YUV 数据就绪

每获取到一帧对端画面都会回调,其中yuvData是紧凑的 YUV 数据 (stride 与画面宽度相同)。

可以通过user区分不同的对端用户。

@protocol NIMNetCallManagerDelegate <NSObject>
/**
 *  远程视频YUV数据就绪
 *
 *  @param yuvData  远程视频YUV数据, 紧凑型 (stride 等于 width)
 *  @param width    远程视频画面宽度
 *  @param height   远程视频画面长度
 *  @param user     远程视频画面属于的用户
 *
 *  @discussion 将YUV数据直接渲染在OpenGL上比UIImageView贴图占用更少的cpu
 */
- (void)onRemoteYUVReady:(NSData *)yuvData
                   width:(NSUInteger)width
                  height:(NSUInteger)height
                    from:(NSString *)user;
@end
参数 类型 说明
yuvData NSData 远程视频YUV数据, 紧凑型 (stride 等于 width)
width NSUInteger 远程视频画面宽度
height NSUInteger 远程视频画面长度
user NSString 远程视频画面属于的用户
//远程YUV数据就绪回调
- (void)onRemoteYUVReady:(NSData *)yuvData
                   width:(NSUInteger)width
                  height:(NSUInteger)height
                    from:(NSString *)user
{
    //_remoteGLView 是 NTESGLView 类型  DEMO 提供 NTESGLView 类来渲染yuv数据  
    [_remoteGLView render:yuvData width:width height:height];
}

远程视频 渲染视图就绪

当有新用户开始渲染时会触发该回调,远程渲染视图内部会在用户离开后不再持有,在与远程视频YUV数据就绪 onRemoteYUVReady回调中可以任选一种回调进行远端渲染视图的展示。

/**
 *  远端渲染就绪
 *
 *  @param displayView 远端视频预览层
 */
- (void)onRemoteDisplayviewReady:(UIView *)displayView user:(NSString *)user;
参数 类型 说明
displayView UIView 远程视频渲染视图
user NSString 远程视频画面属于的用户

获得当前视频通话 远端渲染层

根据用户id 查询对应的视频渲染层,在onRemoteDisplayviewReady:user:回调后可以正常查询

/**
 * 获得当前视频通话远端渲染层
 *
 * @param uid 被设置的用户id
 * @return 渲染层
 */
- (nullable UIView *)remoteDisplayViewWithUid:(NSString *)uid;
参数 类型 说明
uid NSString 用户ID

设置当前视频通话 远端渲染层显示模式

设置对应用户的远端渲染层的显示模式,拉伸、等比例缩放等

/**
 *  指定某用户的远端渲染模式
 *
 *  @param model 渲染模式
 *  @param uid  用户 uid
 *
 *  @return 是否设置成功. 如果用户尚未加入, 则无法设置
 */
- (BOOL)setRemoteRenderModel:(NIMNetCallRenderMode *)model forUser:(NSString *)uid;
参数 类型 说明
model NIMNetCallRenderMode 渲染模式
uid NSString 用户ID

自己当前音量回调

自己当前音量回调

@protocol NIMNetCallManagerDelegate <NSObject>
/**
 *  自己当前音量
 *
 *  @param volume 音量
 */
-(void)onMyVolumeUpdate:(UInt16)volume;
@end
参数 类型 说明
volume UInt16 音量
//音量回调
-(void)onMyVolumeUpdate:(UInt16)volume
{
    //刷新音量UI
}

正在说话的用户信息汇报

正在说话的用户信息汇报

@protocol NIMNetCallManagerDelegate <NSObject>
/**
 *  正在说话的用户信息汇报
 *
 *  @param report 用户信息,包含音量,如果为空,表示没有说话的人
 */
- (void)onSpeakingUsersReport:(nullable NSArray<NIMNetCallUserInfo *> *)report;
@end
参数 类型 说明
report nullable NSArray 用户信息,包含音量,如果为空,表示没有说话的人
//正在说话的用户信息汇报
- (void)onSpeakingUsersReport:(nullable NSArray<NIMNetCallUserInfo *> *)report
{
     //刷新列表UI
    for (NIMNetCallUserInfo *userInfo in report)
    {
        [cell refreshWidthVolume:userInfo.volume];
    }
}