当前通话信息
本章节主要介绍在通话过程中,您可能要用到的各种通话信息。包括:当前通话标识ID、远程画面就绪通知、自己和正在说话的用户的音量汇报。在这里需要明确几个概念:
通话标识ID:通话标识ID又称频道id或channel id,是用来唯一标识某一通通话的id,该id是全局唯一的,建议开发者自己维护
获取当前通话标识 ID
- API介绍
获取正在进行中的网络通话call id
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 获取正在进行中的网络通话call id
*
* @return call id, 如果没有正在进行中的通话则返回0
*/
- (UInt64)currentCallID;
@end
参数说明
无
示例
//获取当前通话 ID
UInt64 currentNetcall = [[NIMAVChatSDK sharedSDK].netCallManager currentCallID];
远程视频 YUV 数据就绪
- API介绍
每获取到一帧对端画面都会回调,其中yuvData
是紧凑的 YUV 数据 (stride 与画面宽度相同)。
可以通过user
区分不同的对端用户。
- API原型
@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];
}
远程视频 渲染视图就绪
- API介绍
当有新用户开始渲染时会触发该回调,远程渲染视图内部会在用户离开后不再持有,在与远程视频YUV数据就绪 onRemoteYUVReady
回调中可以任选一种回调进行远端渲染视图的展示。
- API原型
/**
* 远端渲染就绪
*
* @param displayView 远端视频预览层
*/
- (void)onRemoteDisplayviewReady:(UIView *)displayView user:(NSString *)user;
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
displayView | UIView | 远程视频渲染视图 |
user | NSString | 远程视频画面属于的用户 |
获得当前视频通话 远端渲染层
- API 介绍
根据用户id 查询对应的视频渲染层,在onRemoteDisplayviewReady:user:回调后可以正常查询
- API原型
/**
* 获得当前视频通话远端渲染层
*
* @param uid 被设置的用户id
* @return 渲染层
*/
- (nullable UIView *)remoteDisplayViewWithUid:(NSString *)uid;
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
uid | NSString | 用户ID |
设置当前视频通话 远端渲染层显示模式
- API 介绍
设置对应用户的远端渲染层的显示模式,拉伸、等比例缩放等
- API 原型
/**
* 指定某用户的远端渲染模式
*
* @param model 渲染模式
* @param uid 用户 uid
*
* @return 是否设置成功. 如果用户尚未加入, 则无法设置
*/
- (BOOL)setRemoteRenderModel:(NIMNetCallRenderMode *)model forUser:(NSString *)uid;
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
model | NIMNetCallRenderMode | 渲染模式 |
uid | NSString | 用户ID |
自己当前音量回调
- API介绍
自己当前音量回调
- API原型
@protocol NIMNetCallManagerDelegate <NSObject>
/**
* 自己当前音量
*
* @param volume 音量
*/
-(void)onMyVolumeUpdate:(UInt16)volume;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
volume | UInt16 | 音量 |
- 示例
//音量回调
-(void)onMyVolumeUpdate:(UInt16)volume
{
//刷新音量UI
}
正在说话的用户信息汇报
- API介绍
正在说话的用户信息汇报
- API原型
@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];
}
}
音视频连接状态查询
- API介绍
查询当前音视频连接状态
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 当前音视频连接状态查询接口
*
* @return 连接状态
*/
- (NIMNetCallConnectStatus)getConnectStatus;
@end
- 示例
//查询当前音视频连接状态
NIMNetCallConnectStatus status = [[NIMAVChatSDK sharedSDK].netCallManager getConnectStatus];
NSLog(@"[connect] status %zd.", status);
本篇文档内容是否对您有帮助?
有帮助
我要吐槽
此文档对你是否有帮助
×
有帮助
我要吐槽
×