视频开发基础概念知识二

2019-06-10  本文已影响0人  woniu

一、基本概念

AVCaptureSession

苹果为了管理从摄像头、麦克风等设备捕获到的信息,写了一个AVCaptureSession的类来对输入和输出数据进行管理。AVFoundation官方文档

二、详细对象的介绍

1、AVCaptureSession

AVCaptureSession对象是用来管理采集和输出数据的,它负责协调从哪里采集数据,之后再输出到哪里。

2、 AVCaptureDevice

一个AVCaptureDevice对象代表一个物理采集设备,我们可以通过该对象来设置物理设备的属性。

3、AVCaptureInput

AVCaptureInput是AVCaptureSession的一个抽象类,AVCaptureSession的输入端必须是AVCaptureInput的实现类。这里我们用到的AVCaptureDeviceInput,作为采集设备输入端。

4、AVCaptureOutput

AVCaptureOutput是AVCaptureSession的一个抽象类,AVCaptureSession的输出端必须是AVCaptureOutput的实现类。这里我们用到的AVCaptureVideoDataOutput,作为视频数据的输出端。

5、AVCaptureConnection

AVCaptureConnection是AVCaptureSession用来建立和维护AVCaptureInput和AVCaptureOutput之间的连接的。

6、 AVCaptureVideoPreviewLayer

AVCaptureVideoPreviewLayer是AVCaptureSession的一个属性,集成自CALayer,通过类名我们可以知道这个layer是用来预览采集到的视频图像的,直接把这个layer加到UIView上面就可以实现采集道德视频实时预览了哦。_

三、视频采集の步骤

1、建立并初始化输入AVCaptureInput和AVCaptureOutput。
2、创建并初始化AVCaptureSession,然后把AVCaptureInput、AVCaptureOutput添加到AVCaptureSession中。
3、调用AVCaptureSession的startRunning开始采集。

四、初始化输入(摄像头camera)

通过AVCaptureDevice的devicesWithMediaType:方法获取摄像头,iPhone有前后摄像头,此处获取的是一个设备的数组,然后从数组里面拿到我们想要的前后摄像头,然后再将AVCaptureDevice转化为AVCaptureDeviceInput,用于添加到AVCaptureSession中。

// 获取所有摄像头
NSArray *cameras= [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
// 获取前置摄像头
NSArray *captureDeviceArray = [cameras filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"position == %d", AVCaptureDevicePositionFront]];
if (!captureDeviceArray.count)
{
    NSLog(@"获取前置摄像头失败");
    return;
}
// 转化为输入设备 
AVCaptureDevice *camera = captureDeviceArray.firstObject;
NSError *errorMessage = nil;
self.captureDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:camera error:&errorMessage];
if (errorMessage)
{
    NSLog(@"AVCaptureDevice转AVCaptureDeviceInput失败");
    return;
}

注释:
1、captureDeviceArray.firstObject第一个数据就是前置摄像头,如果是lastObject那么就是后置摄像头。
2、errorMessage用于获取异常。

五、初始化输出

1、初始化视频输出,设置视频数据格式,设置采集数据的回调线程。
2、下面视频输出格式选的是kCVPixelFormatType_420YpCbCr8BiPlanarFullRange,YUV数据格式。

重要单词:
Capture 英['kæptʃə] 美 ['kæptʃɚ] n.捕获、俘虏 vt.俘获、获得

上一篇 下一篇

猜你喜欢

热点阅读