初识AVFoundation框架1

一.基本概念

感谢http://www.jianshu.com/p/f7146092e640等博主的技术分享。

AVCaptureSession:媒体(音、视频)捕获会话,负责把捕获的音视频数据输出到输出设备中。一个AVCaptureSession可以有多个输入输出。它用于协调输入与输出之间的数据流。

AVCaptureDevice:输入设备,包括麦克风、摄像头,通过该对象可以设置物理设备的一些属性(例如相机聚焦、白平衡等),也就是物理输入设备,例如摄像头与麦克风。

AVCaptureDeviceInput:设备输入数据管理对象,可以根据AVCaptureDevice创建对应的AVCaptureDeviceInput对象,该对象将会被添加到AVCaptureSession中管理。代表了AVCaptureDevice采集的输入数据源。

AVCaptureOutput:输出数据管理对象,用于接收各类输出数据,通常使用对应的子类,其代表了输出数据源。

AVCaptureAudioDataOutput、

AVCaptureStillImageOutput、

AVCaptureVideoDataOutput、

AVCaptureFileOutput,

该对象将会被添加到AVCaptureSession中管理。注意:前面几个对象的输出数据都是NSData类型,而AVCaptureFileOutput代表数据以文件形式输出,类似的,AVCcaptureFileOutput也不会直接创建使用,通常会使用其子类:AVCaptureAudioFileOutput、

AVCaptureMovieFileOutput。

AVCaptureVideoPreviewLayer:相机拍摄预览图层,是CALayer的子类,使用该对象可以实时查看拍照或视频录制效果,创建该对象需要指定对应的AVCaptureSession对象

使用AVFoundation拍照和录制视频的一般步骤:

(1)创建AVCaptureSession对象。

(2)使用AVCaptureDevice的静态方法获得需要使用的设备,例如拍照和录像就需要获得摄像头设备,录音就要获得麦克风设备。

(3)利用输入设备AVCaptureDevice初始化AVCaptureDeviceInput对象。

(4)初始化输出数据管理对象,如果要拍照就初始化AVCaptureStillImageOutput对象;如果拍摄视频就初始化AVCaptureMovieFileOutput对象。

(5)将数据输入对象AVCaptureDeviceInput、数据输出对象AVCaptureOutput添加到媒体会话管理对象AVCaptureSession中。

(6)创建视频预览图层AVCaptureVideoPreviewLayer并指定媒体会话,添加图层到 显示容器中,调用AVCaptureSession的startRuning方法开始捕获。

(7)将捕获的音频或视频数据输出到指定文件。

你可能感兴趣的:(初识AVFoundation框架1)