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

使用AVKit框架即可实现简单的视频文件播放。
UIImagePickerController可以实现简单的拍照以及视频录制。
2. 视频捕捉
AVFoundation框架内容比较多的,这里通过视频捕捉来入门AVFoundation。如果想深入学习,可以进入官网:
苹果官方AVFoundation框架介绍
AVFoundation框架
推荐阅读《AVFoundation 开发秘籍》
视频流捕捉框架图如下:

整体由输入、输出、会话层、连接、设备组成。对于每一个部分都有相应的类,下面分别介绍这几个类,后面会有实践。
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才能添加
-

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

被折叠的 条评论
为什么被折叠?



