前言
AVFoundation框架是iOS中很重要的框架,所有与音视频相关的软硬件控制都在这个框架里。本文主要介绍iOS媒体捕捉和视频采集。
媒体捕捉流程
媒体捕捉(网侵删).png
简单介绍
- AVCaptureSession:媒体捕获会话(包括音频和视频),负责把捕获的音视频数据输出到输出设备中,一个AVCaptureSession可以有多个输入输出。
在视频或音频捕捉时,客户端可以实例AVCaptureSession,添加适当的AVCaptureInputs、AVCaptureDeviceInput和输出。 - AVCaptureInput和AVCaptureDevice:设备输入数据管理对象,可以根据AVCaptureDevice创建对应AVCaptureDeviceInput对象,该对象将会被添加到AVCaptureSession中管理。
- AVCaptureOutput:设备输出数据管理对象。
- AVCaptureVideoPreviewLayer和AVSampleBufferDisplayLayer,相机拍摄预览图层,是CALayer的子类,前者创建需要AVCaptureSession对象,后者可以直接创建,添加CMSampleBufferRef进行展示。
相关代码展示
- (void)configureCamera{
/// 参数设置
// 默认后置摄像头
AVCaptureDevicePosition position = AVCaptureDevicePositionBack;
// 帧率
int frameRate = 25;
// 显色方案
OSType videoFormat = kCVPixelFormatType_32BGRA;
// 分辨率高
int resolutionHeight = 720;
/// 创建AVCaptureSession对象
AVCaptureSession *session = [[AVCaptureSession alloc] init];
/// 设置分辨率
session.sessionPreset = AVCaptureSessionPreset