本文实例为大家分享了iOS自定义相机实现拍照、录制视频的具体代码,供大家参考,具体内容如下
使用AVFoundation框架。
首先声明以下对象:
#import "CustomeCameraViewController.h"
#import
#import
@interface CustomeCameraViewController ()
{
// AVCaptureSession对象来执行输入设备和输出设备之间的数据传递
AVCaptureSession *iSession;
//当前设备
AVCaptureDevice *iDevice;
//输入设备
AVCaptureDeviceInput *iDeviceInput;
//照片输出流
AVCaptureStillImageOutput *iStillImageOutput;
//预览图层
AVCaptureVideoPreviewLayer *iPreviewLayer;
}
初始化各对象:
- (void)viewDidLoad {
[super viewDidLoad];
//点击屏幕对焦
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(focusTap:)];
[self.view addGestureRecognizer:tap];
iSession = [[AVCaptureSession alloc]init];
NSArray *deviceArray = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in deviceArray) {
//AVCaptureDevicePositionBack 后置摄像头
//AVCaptureDevicePositionFront 前置摄像头
if (device.position == AVCaptureDevicePositionBack) {
iDevice = device;
}
}
iSession.sessionPreset = [self getSessionPresetForDevice:iDevice];
iDeviceInput = [[AVCaptureDeviceInput alloc]initWithDevice:iDevice error:nil];
输出设置。AVVideoCodecJPEG 输出jpeg格式图片
iStillImageOutput = [[AVCaptureStillImageOutput alloc]init];
NSDictionary *outputDic = [NSDictionary dictionaryWithObjectsAndKeys:AVVideoCodecJPEG,AVVideoCodecKey, nil];
[iStillImageOutput setOutputSettings:outputDic];
//更改这个设备设置的时候必须先锁定设备,修改完后再解锁,否则崩