AVFoundation框架解析(一)—— 基本概览
2017-08-08 本文已影响570人
刀客传奇
版本记录
版本号 | 时间 |
---|---|
V1.0 | 2017.08.08 |
前言
AVFoundation
框架是ios中很重要的框架,所有与视频音频相关的软硬件控制都在这个框架里面,接下来这几篇就主要对这个框架进行介绍和讲解。
框架概览
下面看一下该框架的基本信息。
下面看一下该框架的基本结构。
我们先看一下这个框架在ios整个系统中的位置。
AVFoundation位置我们使用这个框架,需要先引入头文件。
#import <AVFoundation/AVFoundation.h>
下面我们就看一下这个框架里面的所有文件。
#import <TargetConditionals.h>
#if TARGET_OS_WATCH
#if ! __has_include(<AVFoundation/AVAnimation.h>)
#define AVF_IS_WATCHOS_SDK 1
#endif
#endif
#import <AVFoundation/AVBase.h>
#if ! AVF_IS_WATCHOS_SDK
#import <AVFoundation/AVAnimation.h>
#import <AVFoundation/AVAsset.h>
#import <AVFoundation/AVAssetCache.h>
#import <AVFoundation/AVAssetExportSession.h>
#import <AVFoundation/AVAssetImageGenerator.h>
#import <AVFoundation/AVAssetReader.h>
#import <AVFoundation/AVAssetReaderOutput.h>
#import <AVFoundation/AVAssetResourceLoader.h>
#import <AVFoundation/AVAssetTrack.h>
#import <AVFoundation/AVAssetTrackGroup.h>
#import <AVFoundation/AVAssetTrackSegment.h>
#import <AVFoundation/AVAssetWriter.h>
#import <AVFoundation/AVAssetWriterInput.h>
#import <AVFoundation/AVAsynchronousKeyValueLoading.h>
#import <AVFoundation/AVAudioMix.h>
#import <AVFoundation/AVAudioProcessingSettings.h>
#if TARGET_OS_IPHONE
#import <AVFoundation/AVAssetDownloadTask.h>
#endif
#if (TARGET_OS_IPHONE || defined(__MAC_10_7))
#import <AVFoundation/AVCaptureDevice.h>
#import <AVFoundation/AVCaptureInput.h>
#import <AVFoundation/AVCaptureOutput.h>
#import <AVFoundation/AVCaptureSession.h>
#import <AVFoundation/AVCaptureVideoPreviewLayer.h>
#endif
#import <AVFoundation/AVComposition.h>
#import <AVFoundation/AVCompositionTrack.h>
#import <AVFoundation/AVCompositionTrackSegment.h>
#import <AVFoundation/AVError.h>
#endif
#import <AVFoundation/AVFAudio.h>
#if ! AVF_IS_WATCHOS_SDK
#import <AVFoundation/AVMediaFormat.h>
#import <AVFoundation/AVMediaSelection.h>
#import <AVFoundation/AVMediaSelectionGroup.h>
#import <AVFoundation/AVMetadataFormat.h>
#import <AVFoundation/AVMetadataIdentifiers.h>
#import <AVFoundation/AVMetadataItem.h>
#import <AVFoundation/AVMetadataObject.h>
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
#import <AVFoundation/AVMovie.h>
#import <AVFoundation/AVMovieTrack.h>
#endif
#import <AVFoundation/AVOutputSettingsAssistant.h>
#import <AVFoundation/AVPlayer.h>
#import <AVFoundation/AVPlayerItem.h>
#import <AVFoundation/AVPlayerItemMediaDataCollector.h>
#import <AVFoundation/AVPlayerItemOutput.h>
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
#import <AVFoundation/AVPlayerItemProtectedContentAdditions.h>
#endif
#import <AVFoundation/AVPlayerItemTrack.h>
#import <AVFoundation/AVPlayerLayer.h>
#import <AVFoundation/AVPlayerLooper.h>
#import <AVFoundation/AVPlayerMediaSelectionCriteria.h>
#import <AVFoundation/AVSampleBufferDisplayLayer.h>
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
#import <AVFoundation/AVSampleBufferGenerator.h>
#import <AVFoundation/AVSampleCursor.h>
#endif
#import <AVFoundation/AVSynchronizedLayer.h>
#import <AVFoundation/AVTextStyleRule.h>
#import <AVFoundation/AVTime.h>
#import <AVFoundation/AVTimedMetadataGroup.h>
#import <AVFoundation/AVUtilities.h>
#import <AVFoundation/AVVideoCompositing.h>
#import <AVFoundation/AVVideoComposition.h>
#import <AVFoundation/AVVideoSettings.h>
#endif
下面看一下框架中主要得类和功能。
-
AVAnimation
动画类 -
AVAsset
资产类可通过这个类获得图片、文件、媒体库 -
AssetDownloadTask
资源下载任务 -
AVAssetExportSession
资源导出会话:是一个通过资源文件对象去创建一个指定预设的输出的转码内容会话 -
AVAssetImageGenerator
用于截取视频某帧的画面 -
AVAssetReader
从资源读取音视频数据 -
AVAssetReaderOutput
读取资源文件输出类 -
AVAssetResourceLoader
资源文件的加载器会从AVURLAsset
和代理方法得到加载的内容 -
AVAssetTrack
资源的分轨 -
AVAssetTrackGroup
这里面封装了一组资源的分轨 -
AVAssetTrackSegment
表示资源分轨的一段 -
AVAssetWriter
资源文件写入类 -
AVAssetWriterInput
写入文件的输入类 -
AVAssetDownloadTask
资源文件下载任务 -
AVCaptureDevice
硬件捕获设备类 -
AVCaptureInput
从硬件捕获设备获得输入的数据 -
AVCaptureOutput
获得输出的数据 -
AVCaptureSession
用于调配音视频输入与输出之间的数据流 -
AVCaptureVideoPreviewLayer
捕获的视频数据的预览图层 -
AVMetadataObject
音视频元数据是一个基类里面包含面部检测的元数据和二维码的元数据 -
AVPlayer
音视频播放器 -
AVPlayerItem
音视频播放的元素 -
AVPlayerItemMediaDataCollector
音视频播放器元素媒体数据收集器 -
AVPlayerItemOutput
播放器元素输出类 -
AVPlayerItemTrack
播放器元素的分轨 -
AVPlayerLayer
播放器的图层 -
AVPlayerMediaSelectionCriteria
播放器媒体选择的规范 -
AVSampleBufferDisplayLayer
用来显示压缩或解压的视频帧 -
AVSynchronizedLayer
同步动画图层 -
AVTextStyleRule
文本样式的规范 -
AVVideoCompositing
视频合成的协议 -
AVAudioSettings
音频的配置信息 -
AVAudioEngine
音频引擎 -
AVAudioNode
音频节点 -
AVAudioTime
音频时间类 -
AVMIDIPlayer MIDI
播放器 -
AVAudioSession
音频会话
框架说明
主要有下面几种应用方向。
- 音频的录制、播放
- 视频的播放
- 媒体文件检查
- 媒体捕捉
- 媒体编辑
- 媒体处理
- 媒体采样
- 媒体压缩
- 音频编解码
- 视频编解码
- 音频的音效处理
下面找几个有代表性的说一下。
1. 视频流处理
先看几个重要的类。
-
AVCaptureDevice
代表了输入设备,例如摄像头与麦克风。 -
AVCaptureInput
代表了输入数据源 -
AVCaptureOutput
代表了输出数据源 -
AVCaptureSession
用于协调输入与输出之间的数据流
下面看一下原理图。
视频流处理原理图2. 音频处理
可以做声音的录制以及其他与声音相关的操作,主要的类就是AVAudioSession
等。
参考文章
1. AVFoundation Programming Guide(官方文档翻译1)About AVFoundation - AVFoundation概述
2. AVFoundation连续系列之一音频录制
后记
金秋未完,待续~~~