iOS视频捕获入门篇

本文介绍了iOS和OSX系统中用于媒体处理的AVFoundation框架,重点讲解了视频捕捉的相关概念,包括AVCaptureSession、AVCaptureDevice、AVCaptureDeviceInput、AVCaptureOutput等核心类的使用,以及AVCaptureMovieFileOutput、AVCaptureVideoDataOutput和AVCapturePhotoOutput在视频录制和实时视频处理中的应用。此外,还提到了权限验证和设备属性配置等关键操作,为实现视频拍摄和照片捕获奠定了基础。

1. AVFoundation简介

AVFoundation 是 OSX 系统和 iOS 系统中用于处理基于时间的媒体数据的高级框架,AVFoundation的设计过程高度依赖多线程机制,充分利用多核硬件优势,大量使用 Block 和 GCD 机制将运算任务放在子线程,且提供硬件加速确保最佳性能。
简单说如果你的应用程序需要使用到高级媒体捕捉、媒体编辑可以使用 AVFoundation 来完成。
AVFoundation 框架在iOS的架构如下:
iv_avf_ios_framework

使用AVKit框架即可实现简单的视频文件播放。
UIImagePickerController可以实现简单的拍照以及视频录制。

2. 视频捕捉

AVFoundation框架内容比较多的,这里通过视频捕捉来入门AVFoundation。如果想深入学习,可以进入官网:
苹果官方AVFoundation框架介绍
AVFoundation框架
推荐阅读《AVFoundation 开发秘籍》

视频流捕捉框架图如下:
iv_avf_capture_framework
整体由输入、输出、会话层、连接、设备组成。对于每一个部分都有相应的类,下面分别介绍这几个类,后面会有实践。

3. AVCaptureSession

AVCaptureSession 是视频捕获的核心类,对应于框架中的capture session。它主用于管理输入输出,开始和停止捕获等,同时还可以设置输出数据的质量与格式。常用的方法和属性如下:

// 设置预设值
@property(nonatomic, copy) AVCaptureSessionPreset sessionPreset;
// 是否可以设置该预设值
// AVCaptureSessionPreset
// 有: 高分辨率图片、720P、1080P等
- (BOOL)canSetSessionPreset:(AVCaptureSessionPreset)preset;

// 当前所有的输入
@property(nonatomic, readonly) NSArray<__kindof AVCaptureInput *> *inputs;
// 是否可以添加输入,返回YES才能添加
- (BOOL)canAddInput:(AVCaptureInput *)input;
// canAddInput返回YES后添加输入
- (void)addInput:(AVCaptureInput *)input;
// 移除一个输入
- (void)removeInput:(AVCaptureInput *)input;

// 当前所有的输出
@property(nonatomic, readonly) NSArray<__kindof AVCaptureOutput *> *outputs;
// 是否可以添加输出,返回YES才能添加
- 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值