自定义相机 提供两个链接:
第一种:使用iOS系统自带相机。
//判断是否可以打开相机,模拟器此功能无法使用
//拍摄完成后,要执行的方法
//判断是否可以打开相机,模拟器此功能无法使用 //拍摄完成后,要执行的方法 用于拍照时,图片存入相册 在AVFoundation框架下使用自定义照相需要的属性 //AVCaptureSession对象来执行输入设备和输出设备之间的数据传递 //预览图层,来显示照相机拍摄到的画面 //切换前后镜头的按钮 //放置预览图层的View //初始化自定义相机的各实例 初始化自定义照相的相关实例 //03 创建输出设备 // 这是输出流的设置参数AVVideoCodecJPEG参数表示以JPEG的图片格式输出图片 //如果不允许相机拍照,则返回关于iOS调用摄像机来获取照片,通常我们都会调用UIImagePickerController来调用系统提供的相机来拍照,这个控件非常好用。但是有时UIImagePickerController控件无法满足我们的需求,例如我们需要更加复杂的OverlayerView,这时候我们就要自己构造一个摄像机控件了。
媒体采集需要的几个对象:
2、AVCaptureInput: 代表输入设备(可以是它的子类),它配置抽象硬件设备的ports。
那么存在一个问题了:视频输入(input)就对应视频的输出(output),而音频输入就对应音频的输出,因而需要建立对应的Connections,来各自连接它们。而这样的连接对象,是由AVCaptureSession来持有的,这个对象叫AVCaptureConnection。
这里表明了,需要create一个session,然后发running消息给它,它会自动跑起来,把输入设备的东西,提交到输出设备中。
若想在一个已经使用上的session中(已经startRunning了)做更换新的device、删除旧的device等一系列的操作,那么就需要使用如下方法:
Reference中的Notifications中找到相应的情况),而session如果出现相应问题的时候,它会post出来,此时我们就可以处理了。
那么显然,我们可以通过AVCaptureDevice的类方法devices或devicesWithMediaType去获取全部或局部设备列表。(当然也可以检测相应的设备是否可以使用,这里注意有设备抢占问题,当前是否可用)
相机设备可以用下面的方法判断设备是否支持相关属性(property),比如对焦方式或者对焦状态Focus modes。
1. 前置和后置摄像头
创建并配置输入设备
// 添加input到session的模式是(检查可否添加到session,然后根据情况添加或者不添加)
第一个是输出成movie文件,第二个适用于逐个Frame的处理,第三个适用于声音采集,第四个是still image(静态图像<拍照>)相关。
// AVCaptureSession对象来执行输入设备和输出设备之间的数据传递
// 预览图层,来显示照相机拍摄到的画面
// 切换前后镜头的按钮
// 用来展示拍照获取的照片
// 这是获取前后摄像头对象的方法
UIView的clipsToBounds属性和CALayer的setMasksToBounds属性表达的意思是一致的,决定子视图的显示范围。当取值为YES的时候,剪裁超出父视图范围的子视图部分,当取值为NO时,不剪裁子视图。
// 这是拍照按钮的方法
// 这是切换镜头的按钮方法
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。