初识AVFoundation框架1

一.基本概念

感谢//www.greatytc.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)将捕获的音频或视频数据输出到指定文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容