关于AVCaptureDevice的理解手机av「关于AVCaptureDevice的理解」

   日期:2025-01-28    作者:wwpgx 移动:http://article6.kub2b.com/mobile/quote/1263.html

AVCaptureDevice 主要是用来获取手机相机的属性 
使用的时候必须引用AVFoundation.framework包,导入头文件 
当要生成二维码时,需要对 info.plist文件中添加相应的key和value 
这里写图片描述
也可右键点击以 Source Code形式打开,添加如下

权限的说明 
这里写图片描述
部分属性的理解

1.前置和后置摄像头 
typedef NS_ENUM(NSInteger, AVCaptureDevicePosition) { 
AVCaptureDevicePositionUnspecified = 0, 
AVCaptureDevicePositionBack = 1, 
AVCaptureDevicePositionFront = 2 
} NS_AVAILABLE(10_7, 4_0);

2.闪光灯开关 
typedef NS_ENUM(NSInteger, AVCaptureFlashMode) { 
AVCaptureFlashModeOff = 0, 
AVCaptureFlashModeOn = 1, 
AVCaptureFlashModeAuto = 2 
} NS_AVAILABLE(10_7, 4_0);

3.手电筒开关–其实就是相机的闪光灯 
typedef NS_ENUM(NSInteger, AVCaptureTorchMode) { 
AVCaptureTorchModeOff = 0, 
AVCaptureTorchModeOn = 1, 
AVCaptureTorchModeAuto = 2, 
} NS_AVAILABLE(10_7, 4_0);

4.焦距模式调整 
typedef NS_ENUM(NSInteger, AVCaptureFocusMode) { 
AVCaptureFocusModeLocked = 0, 
AVCaptureFocusModeAutoFocus = 1, 
AVCaptureFocusModeContinuousAutoFocus = 2, 
} NS_AVAILABLE(10_7, 4_0);

5.曝光量调节 
typedef NS_ENUM(NSInteger, AVCaptureExposureMode) { 
AVCaptureExposureModeLocked = 0, 
AVCaptureExposureModeAutoExpose = 1, 
AVCaptureExposureModeContinuousAutoExposure = 2, 
AVCaptureExposureModeCustom NS_ENUM_AVAILABLE_IOS(8_0) = 3, 
} NS_AVAILABLE(10_7, 4_0);

6.白平衡 
typedef NS_ENUM(NSInteger, AVCaptureWhiteBalanceMode) { 
AVCaptureWhiteBalanceModeLocked = 0, 
AVCaptureWhiteBalanceModeAutoWhiteBalance = 1, 
AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance = 2, 
} NS_AVAILABLE(10_7, 4_0);

7.距离调整 
typedef NS_ENUM(NSInteger, AVCaptureAutoFocusRangeRestriction) { 
AVCaptureAutoFocusRangeRestrictionNone = 0, 
AVCaptureAutoFocusRangeRestrictionNear = 1, 
AVCaptureAutoFocusRangeRestrictionFar = 2, 
} NS_AVAILABLE_IOS(7_0);

AVCaptureDevice //硬件设备 
AVCaptureInput //输入的设备 
AVCaptureOutput //输出的数据 
AVCaotureSession //协助input和output的数据传输

关系: 
有很多Device的input和很多类型的Output,都通过一个CaptureSession来控制进行传输,即:CaputureDevice适配AVCaptureInput,通过Session来输入到AVCaptureOutput中,这样就达到了从设备到文件等持久传输的目的(如从相机设备采集图像到UIImage中

那么如果视频输入(input)和对应的视频输出(output),音频对应音频,因而需要建立对应的Connections(连接),来各自连接它们,这个连接对象是由AVCaptureSession持有的,这个对象为 AVCaptureConnection,可以控制input和output的数据传输(通过各种的input port,都可以获取到相应的数据

需要创建一个session,发running消息,响应,就把输入设备的东西,提交到输出设备中。

如果想在一个已经使用session中(已经startRunning)更换新的device,删除旧的,方法

Device是对硬件的一对一的表示,一个AVCaptureDevice对象,对应一个实际的硬件设备 

然后添加input到session的模式(检查是否可添加

iOS中,分为MovieFile(输出成movie文件)、VideoData(适用各个Frame的处理)、AudioData(声音采集)、StillImage(静态图像拍照)几种output,它们都继承与AVCaptureOutput


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号