采集
本章节主要介绍音视频数据采集相关的功能。默认是SDK接管采集,开发者也可以选择自己控制采集也就是自定义音视频数据输入。
清晰度档位支持
清晰度设置默认是480P
支持的清晰度设置包括:720P
、540P
、480P
、360P
、352*288
、176*144
帧率档位支持
帧率设置默认是15fps
支持的帧率设置包括:5fps
、10fps
、15fps
、20fps
、25fps
本地摄像头预览就绪回调
- API介绍
本地摄像头预览就绪回调,通过此接口进行本地预览显示
- API原型
@protocol NIMNetCallManagerDelegate <NSObject>
/**
* 本地摄像头预览就绪
*
* @param displayView 本地摄像头预览层
*/
- (void)onLocalDisplayviewReady:(UIView *)displayView;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
displayView | UIView | 本地摄像头预览层 |
- 示例
- (void)onLocalDisplayviewReady:(UIView *)displayView
{
if (self.localPreView) {
[self.localPreView removeFromSuperview];
}
self.localPreView = displayView;
displayView.frame = self.localVideoView.bounds;
[self.localVideoView addSubview:displayView];
}
获取本地摄像头预览层
- API介绍
主动获取本地摄像头预览层
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 获得当前视频通话的本地预览层
*
* @return 预览层
*/
- (nullable UIView *)localPreview;
@end
参数说明
无
示例
UIView *preview = [[NIMAVChatSDK sharedSDK].netCallManager localPreview];
开始视频采集
- API介绍
打开摄像头,开始采集
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 开始视频采集。用于需要在开始音视频通话之前开启视频采集的场景
*
* @param param 视频采集参数
*
* @return 开始是否成功
*
* @discussion 视频采集开始以后无法再调用该接口进行更新设置。需要先停止采集以后才能再次开始
*/
- (BOOL)startVideoCapture:(NIMNetCallVideoCaptureParam *)param;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
param | NIMNetCallVideoCaptureParam | 视频采集参数 |
- 示例
//初始化采集参数
_videoParam = [[NIMNetCallVideoCaptureParam alloc]init];
//开始采集
[[NIMAVChatSDK sharedSDK].netCallManager startVideoCapture:_videoParam];
开始自定义视频采集
- API 介绍
开始自定义采集,可以在SDK和自定义采集中切换
- API 原型
@protocol NIMNetCallManager <NSObject>
/**
* 开始自定义采集。
*
* @param param 自定义视频参数
*
* @return 开始是否成功
*/
- (BOOL)startCustomVideo:(NIMNetCallCustomVideoParam *)param;
@end
- 参数介绍
参数 | 类型 | 说明 |
---|---|---|
videoFrameRate | NSUInteger | 编码帧率 |
provideVideoProcess | BOOL | 提供对自定义输入视频的前处理功能 |
- 示例
NIMNetCallCustomVideoParam *customParam = [NIMNetCallCustomVideoParam alloc] init];
customParam.videoFrameRate = 15;
[[NIMAVChatSDK sharedSDK].netCallManager startCustomVideo:customParam];
停止视频采集
- API介绍
关闭摄像头,停止采集
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 停止视频采集。用于在网络通话的自动停止视频采集选项 stopVideoCaptureOnLeave 未开启时主动管理采集的关闭操作
*/
- (void)stopVideoCapture;
@end
参数说明
无
示例
//停止采集
[[NIMAVChatSDK sharedSDK].netCallManager stopVideoCapture];
视频采集参数
在发起、接受和加入音视频时,通过 NIMNetCallVideoCaptureParam
设置采集相关的参数
- 参数列表
参数 | 类型 | 说明 |
---|---|---|
preferredVideoQuality | NIMNetCallVideoQuality | 期望的发送视频质量, SDK 可能会根据具体机型运算性能和协商结果调整为更合适的清晰度,导致该设置无效(该情况通常发生在通话一方有低性能机器时) |
previewVideoQuality | NIMNetCallVideoQuality | 预览视频质量, 默认 480P SDK内部最低480P等级预览 ,设置该参数将进入预览分辨率与发送分辨率分开设置的模式,此模式表示将通过各自独立的接口来设置分辨率,请见切换预览视频质量 方法介绍。 |
videoCrop | NIMNetCallVideoCrop | 视频裁剪, 可以指定为 16:9、4:3 和 1:1 裁剪,默认 16:9 |
format | NIMNetCallVideoCaptureFormat | 视频采集画面格式, 默认是 420f, 支持 yuv (420f 和 420v) 和 ARGB,如果需要 SDK 回调采集到的视频数据并且对数据格式有要求,可以设置该参数 |
startWithBackCamera | BOOL | 使用后置摄像头开始视频, 默认是 前置 |
startWithCameraOn | BOOL | 初始打开摄像头, 默认是 YES, 如果你希望在开始视频采集以后 SDK 不开始运行摄像头,然后再通过摄像头开关接口单独开启摄像头,可以把该参数指定为 NO |
videoCaptureOrientation | NIMVideoOrientation | 视频采集方向. 该设置会改变采集到的视频画面的角度, 主要用于支持互动直播时的横屏直播: 主播以各种角度手持设备直播, 并设置为该角度的 '视频采集方向', 拉流播放器就可以以正常的角度观看直播 |
videoFrameRate | NIMNetCallVideoFrameRate | 视频发送帧率 默认是 15 FPS , 用于开发者不满足于默认视频帧率时传入更期望的帧率 |
videoHandler | NIMNetCallVideoSampleBufferHandler | 本地采集的视频数据回调,供上层实现美颜等图像处理相关功能 |
isSupportedManualFocusFrame | BOOL | 设置默认的手动对焦框 |
videoProcessorParam | NIMNetCallVideoProcessorParam | 视频前处理参数,如需开启前处理请指定该参数,不指定将不开启前处理 |
切换预览视频质量
- API介绍
可以在视频通话过程中实时切换预览视频质量,第一次切换后将进入预览分辨率与发送分辨率分开设置的模式。
发送分辨率的切换请见switchVideoQuality
方法。
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 通话中切换预览视频质量
*
* @param quality 预览视频质量
*
* @return 是否设置成功. 如果用户尚未加入, 则无法设置
*/
- (BOOL)switchPreviewVideoQuality:(NIMNetCallVideoQuality)quality;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
quality | NIMNetCallVideoQuality | 预览视频质量 |
- 示例
//切换视频质量
[[NIMAVChatSDK sharedSDK].netCallManager switchPreviewVideoQuality:previewVideoQuality];
切换视频质量
- API介绍
可以在视频通话过程中实时切换视频质量,在预览分辨率与发送分辨率分开设置模式中,该方法表示切换发送的视频质量,否则两者一起切换。
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 通话中切换视频质量
*
* @param quality 期望的视频质量
*
* @return 是否设置成功. 如果用户尚未加入, 则无法设置
*/
- (BOOL)switchVideoQuality:(NIMNetCallVideoQuality)quality;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
quality | NIMNetCallVideoQuality | 期望的视频质量 |
- 示例
//切换视频质量
[[NIMAVChatSDK sharedSDK].netCallManager switchVideoQuality:preferredVideoQuality];
动态设置采集方向
- API介绍
动态设置采集方向
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 设置视频采集方向
*
* @param orientation 需要设置的方向
*
* @return 设置是否成功
*
* @discussion 用于互动直播场景。只能在开始视频采集以后调用
*/
- (BOOL)setVideoCaptureOrientation:(NIMVideoOrientation)orientation;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
orientation | NIMVideoOrientation | 需要设置的方向 |
- 示例
//改变视频采集方向
[[NIMAVChatSDK sharedSDK].netCallManager setVideoCaptureOrientation:newOrientation];
动态设置摄像头开关
API介绍
动态设置摄像头开关
API原型
@protocol NIMNetCallManager <NSObject>
/**
* 设置摄像头关闭
*
* @param disable 是否关闭
*
* @return 设置是否成功
*
* @discussion 仅支持当前为视频模式时进行此设置, 切换网络通话类型将丢失该设置
*/
- (BOOL)setCameraDisable:(BOOL)disable;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
disable | BOOL | 是否关闭 |
- 示例
//打开摄像头
[[NIMAVChatSDK sharedSDK].netCallManager setCameraDisable:NO];
动态切换前后摄像头
- API介绍
动态切换前后摄像头
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 切换网络通话摄像头
*
* @param camera 选择的摄像头
*
* @discussion 切换网络通话类型将丢失该设置
*/
- (void)switchCamera:(NIMNetCallCamera)camera;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
camera | NIMNetCallCamera | 选择的摄像头 |
- 示例
//切换为前摄像头
[[NIMAVChatSDK sharedSDK].netCallManager switchCamera:NIMNetCallCameraFront];
动态开关闪光灯
- API介绍
动态开关闪光灯
- API原型
@protocol NIMNetCallManager <NSObject>
/**
设置闪光灯开关
@param isFlashOn 是否开启闪光灯
*/
- (void)setCameraFlash:(BOOL)isFlashOn;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
isFlashOn | BOOL | 是否开启闪光灯 |
- 示例
//打开闪光灯
[[NIMAVChatSDK sharedSDK].netCallManager setCameraFlash:YES];
动态调节摄像头焦距
- API介绍
动态调节摄像头焦距
- API原型
@protocol NIMNetCallManager <NSObject>
/**
改变焦距 实际放大倍数
@param scale 放大倍数
*/
- (void)changeLensPosition:(float)scale;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
scale | float | 放大倍数 |
- 示例
//放大2倍
[[NIMAVChatSDK sharedSDK].netCallManager changeLensPosition:2.0];
获取摄像头放大倍数
- API介绍
获取摄像头放大倍数
- API原型
@protocol NIMNetCallManager <NSObject>
/**
获取摄像头支持的最大放大倍数
* @return 放大倍数
*/
- (CGFloat)getMaxZoomScale;
@end
参数说明
无
示例
//获取摄像头支持的最大放大倍数
CGFloat maxZoomScale = [[NIMAVChatSDK sharedSDK].netCallManager getMaxZoomScale];
动态切换对焦模式
- API介绍
动态切换对焦模式
- API原型
@protocol NIMNetCallManager <NSObject>
/**
设置对焦模式
@param mode 对焦模式
*/
- (void)setFocusMode:(NIMNetCallFocusMode)mode;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
mode | NIMNetCallFocusMode | 对焦模式 |
- 示例
//切换为自动对焦模式
[[NIMAVChatSDK sharedSDK].netCallManager setFocusMode:NIMNetCallFocusModeAuto];
设置对焦点
- API介绍
手动对焦,设置对焦点。
- API原型
@protocol NIMNetCallManager <NSObject>
/**
手动对焦 设置对焦点
@param devicePoint 点
*/
- (void)changeNMCVideoPreViewManualFocusPoint:(CGPoint)devicePoint;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
devicePoint | CGPoint | 对焦点坐标(触摸点与预览view宽高的比例) |
- 示例
//假设触摸点相对于预览 view 的坐标是 x = 50; y =100; 预览 view 的 size 为 self.view.frame.size
//触摸点
CGFloat x = 50;
CGFloat y = 100;
//获取对焦点坐标
CGPoint devicePoint = CGPointMake(x/self.view.frame.size.width, y/self.view.frame.size.height);
//对焦
[[NIMAVChatSDK sharedSDK].netCallManager changeNMCVideoPreViewManualFocusPoint:devicePoint];
设置曝光兴趣点
- API介绍
设置曝光兴趣点。
- API原型
@protocol NIMNetCallManager <NSObject>
/**
设置曝光兴趣点
@param devicePoint 点
*/
-(void)changeNMCVideoExposurePointOfInterestPoint:(CGPoint)devicePoint;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
devicePoint | CGPoint | 曝光兴趣点(触摸点与预览view宽高的比例) |
- 示例
//假设触摸点相对于预览 view 的坐标是 x = 50; y =100; 预览 view 的 size 为 self.view.frame.size
//触摸点
CGFloat x = 50;
CGFloat y = 100;
//获取对焦点坐标
CGPoint devicePoint = CGPointMake(x/self.view.frame.size.width, y/self.view.frame.size.height);
//对焦
[[NIMAVChatSDK sharedSDK].netCallManager changeNMCVideoExposurePointOfInterestPoint:devicePoint];
摄像头切换完成回调
- API介绍
摄像头切换完成回调
- API原型
@protocol NIMNetCallManagerDelegate <NSObject>
/**
* 摄像头方向切换完成回调
*
* @param cameraType 摄像头方向
*/
-(void)onCameraTypeSwitchCompleted:(NIMNetCallCamera)cameraType;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
cameraType | NIMNetCallCamera | 摄像头方向 |
- 示例
- (void)onCameraTypeSwitchCompleted:(NIMNetCallCamera)cameraType
{
//前置摄像头
if (cameraType == NIMNetCallCameraFront){
//刷新UI or 其他操作...
}
//后置摄像头
else{
//刷新UI or 其他操作...
}
}
清晰度切换完成回调
- API介绍
清晰度切换完成回调
- API原型
@protocol NIMNetCallManagerDelegate <NSObject>
/**
* 视频清晰度切换完成回调
*
* @param videoQuality 清晰度
*/
- (void)onCameraQualitySwitchCompleted:(NIMNetCallVideoQuality)videoQuality;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
videoQuality | NIMNetCallVideoQuality | 清晰度 |
- 示例
- (void)onCameraQualitySwitchCompleted:(NIMNetCallVideoQuality)videoQuality
{
// 刷新UI or 其他操作...
}
采集方向切换完成回调
- API介绍
采集方向切换完成回调
- API原型
@protocol NIMNetCallManagerDelegate <NSObject>
/**
* 本地视频采集方向切换完成回调
*
* @param orientation 采集方向
*/
-(void)onCameraOrientationSwitchCompleted:(NIMVideoOrientation)orientation;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
orientation | NIMVideoOrientation | 采集方向 |
- 示例
- (void)onCameraOrientationSwitchCompleted:(NIMVideoOrientation)orientation
{
// 刷新UI or 其他操作...
}
本篇文档内容是否对您有帮助?
有帮助
我要吐槽
此文档对你是否有帮助
×
有帮助
我要吐槽
×