iOS音视频开发——视频采集

本文详细介绍了iOS音视频开发中的AVCapture系列,包括AVCaptureDevice、AVCaptureInput、AVCaptureOutput、AVCaptureSession、AVCaptureConnection和AVCapturePreviewLayer的使用。讲解了如何设置输入设备、输出设备、视频采集参数,并提供了开始和停止采集的方法。最后提到了数据采集回调的实现,是iOS视频采集的全面指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.认识 AVCapture 系列


AVCapture 系列是 AVFoundation 框架为我们提供的用于管理输入设备、采集、输出、预览等一系列接口,其工作原理如下:

\1. AVCaptureDevice: 信号采集硬件设备(摄像头、麦克风、屏幕等)AVCaptureDevice 代表硬件设备,并且为 AVCaptureSession 提供 input,要想使用 AVCaptureDevice,应该先将设备支持的 device 枚举出来, 根据摄像头的位置( 前置或者后置摄像头 )获取需要用的那个摄像头, 再使用;如果想要对 AVCaptureDevice 对象的一些属性进行设置,应该先调用 lockForConfiguration: 方法, 设置结束后,调用 unlockForConfiguration 方法;

[self.device lockForConfiguration:&error];

// 设置 ***

[self.device unlockForConfiguration];

2. AVCaptureInput: 输入数据管理


AVCaptureInput 继承自 NSObject,是向 AVCaptureSession 提供输入数据的对象的抽象超类;要将 AVCaptureInput 对象与会话 AVCaptureSession 关联,需要 AVCaptureSession实例调用 -addInput: 方法。由于 AVCaptureInput 是个抽象类,无法直接使用,所以我们一般使用它的子类类管理输入数据。我们常用的 AVCaptureInput 的子类有三个:

AVCaptureDeviceInput:用于从 AVCaptureDevice 对象捕获数据;AVCaptureScreenInput:从 macOS 屏幕上录制的一种捕获输入;AVCaptureMetadataInput:它为 AVCaptureSession 提供 AVMetadataItems。

3. AVCaptureOutput:输出数据管理


AVCaptureOutput 继承自 NSObject,是输出数据管理,该对象将会被添加到会话AVCaptureSession中,用于接收会话AVCaptureSession各类输出数据; AVCaptureOutput提供了一个抽象接口,用于将捕获输出数据(如文件和视频预览)连接到捕获会话AVCaptureSession的实例,捕获输出可以有多个由AVCaptureConnection对象表示的连接,一个连接对应于它从捕获输入(AVCaptureInput的实例)接收的每个媒体流,捕获输出在首次创建时没有任何连接,当向捕获会话添加输出时,将创建连接,将该会话的输入的媒体数据映射到其输出,调用AVCaptureSession的-addOutput:方法将AVCaptureOutput与AVCaptureSession关联。AVCaptureOutput 是个抽象类,我们必须使用它的子类,常用的 AVCaptureOutput的子类如下所示:

AVCaptureAudioDataOutput:一种捕获输出,用于记录音频,并在录制音频时提供对音频样本缓冲区的访问;AVCaptureAudioPreviewOutput :一种捕获输出,与一个核心音频输出设备相关联、可用于播放由捕获会话捕获的音频;AVCaptureDepthDataOutput :在兼容的摄像机设备上记录场景深度信息的捕获输出;AVCaptureMetadataOutput :用于处理捕获会话 AVCaptureSession 产生的定时元数据的捕获输出;AVCaptureStillImageOutput:在macOS中捕捉静止照片的捕获输出。该类在 iOS 10.0 中被弃用,并且不支持新的相机捕获功能,例如原始图像输出和实时照片,在 iOS 10.0 或更高版本中,使用 AVCapturePhotoOutput 类代替;AVCapturePhotoOutput :静态照片、动态照片和其他摄影工作流的捕获输出;AVCaptureVideoDataOutput :记录视频并提供对视频帧进行处理的捕获输出;AVCaptureFileOutput:用于捕获输出的抽象超类,可将捕获数据记录到文件中;AVCaptureMovieFileOutput :继承自 AVCapture

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值