当前通话信息

本章节主要介绍在通话过程中,您可能要用到的各种通话信息。包括:当前通话标识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];
}

自己当前音量回调

自己当前音量回调

@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];
    }
}