AVFoundation框架解析看这里(1)- 概论

2020-12-23 09:59:16 浏览数 (1)

前言

AVFoundation框架是ios中很重要的框架,所有与视频音频相关的软硬件控制都在这个框架里面,接下来这几篇就主要对这个框架进行介绍和讲解。 便于读者查阅这个AVFoundation框架系列,在此提供目录直通车。 AVFoundation框架解析目录 AVFoundation框架解析目录 AVFoundation框架解析目录

  • 本系列创作时间为2019年11月;
  • Xcode版本Version 11.2 (11B52)
  • 当前最高系统iOS13.2
  • 语言:Swift
  • 在整个系列的讲解中,我尽量以最小的需求单元为出发点,详细介绍对应的知识点,这样让读者能更清楚AVFoundation的功能。

Tips:AVFoundation 提供了大量的Demo,其中有些会依赖于自己封装的LEKit,并没有开源,读者在阅读或改写的时候需要注意。 Tips:AVFoundation 提供了大量的Demo,其中有些会依赖于自己封装的LEKit,并没有开源,读者在阅读或改写的时候需要注意。 Tips:AVFoundation 提供了大量的Demo,其中有些会依赖于自己封装的LEKit,并没有开源,读者在阅读或改写的时候需要注意。

框架概览

  • 框架在iOS系统中的位置

AVFoundation.jpg

注意,AVFoundation是您可以用来播放和创建基于时间的视听媒体的几个框架之一,它提供了一个Objective-C接口,你可以使用这个接口用于基于时间的视听数据的详细级别。在我们实际开发过程中,我们应该通常使用可用的最高级别抽象,而不应该选择最深的实现方案。例如:

  • 如果你只是想播放视频,那么应该使用AVKit框架
  • 如果你只需要最少的格式控制时录制视频,请使用UIKit框架
  • 基本信息速览

基本信息速览.png

  • 框架结构速览

框架结构速览.png

  • 重要的头文件
代码语言:javascript复制
import AVFoundation.AVAnimation
import AVFoundation.AVAsset
import AVFoundation.AVAssetCache
import AVFoundation.AVAssetDownloadStorageManager
import AVFoundation.AVAssetDownloadTask
import AVFoundation.AVAssetExportSession
import AVFoundation.AVAssetImageGenerator
import AVFoundation.AVAssetReader
import AVFoundation.AVAssetReaderOutput
import AVFoundation.AVAssetResourceLoader
import AVFoundation.AVAssetTrack
import AVFoundation.AVAssetTrackGroup
import AVFoundation.AVAssetTrackSegment
import AVFoundation.AVAssetWriter
import AVFoundation.AVAssetWriterInput
import AVFoundation.AVAsynchronousKeyValueLoading
import AVFoundation.AVAudioMix
import AVFoundation.AVAudioProcessingSettings
import AVFoundation.AVBase
import AVFoundation.AVCameraCalibrationData
import AVFoundation.AVCaptureAudioDataOutput
import AVFoundation.AVCaptureAudioPreviewOutput
import AVFoundation.AVCaptureDataOutputSynchronizer
import AVFoundation.AVCaptureDepthDataOutput
import AVFoundation.AVCaptureDevice
import AVFoundation.AVCaptureFileOutput
import AVFoundation.AVCaptureInput
import AVFoundation.AVCaptureMetadataOutput
import AVFoundation.AVCaptureOutput
import AVFoundation.AVCaptureOutputBase
import AVFoundation.AVCapturePhotoOutput
import AVFoundation.AVCaptureSession
import AVFoundation.AVCaptureSessionPreset
import AVFoundation.AVCaptureStillImageOutput
import AVFoundation.AVCaptureSystemPressure
import AVFoundation.AVCaptureVideoDataOutput
import AVFoundation.AVCaptureVideoPreviewLayer
import AVFoundation.AVComposition
import AVFoundation.AVCompositionTrack
import AVFoundation.AVCompositionTrackSegment
import AVFoundation.AVContentKeySession
import AVFoundation.AVDepthData
import AVFoundation.AVError
import AVFoundation.AVFAudio
import AVFoundation.AVMediaFormat
import AVFoundation.AVMediaSelection
import AVFoundation.AVMediaSelectionGroup
import AVFoundation.AVMetadataFormat
import AVFoundation.AVMetadataIdentifiers
import AVFoundation.AVMetadataItem
import AVFoundation.AVMetadataObject
import AVFoundation.AVMovie
import AVFoundation.AVMovieTrack
import AVFoundation.AVOutputSettingsAssistant
import AVFoundation.AVPlayer
import AVFoundation.AVPlayerItem
import AVFoundation.AVPlayerItemMediaDataCollector
import AVFoundation.AVPlayerItemOutput
import AVFoundation.AVPlayerItemTrack
import AVFoundation.AVPlayerLayer
import AVFoundation.AVPlayerLooper
import AVFoundation.AVPlayerMediaSelectionCriteria
import AVFoundation.AVTimedMetadataGroup
import AVFoundation.AVUtilities
import AVFoundation.AVVideoCompositing
import AVFoundation.AVVideoComposition
import AVFoundation
import AVFoundation.AVPortraitEffectsMatte
import AVFoundation.AVQueuedSampleBufferRendering
import AVFoundation.AVRouteDetector
import AVFoundation.AVSampleBufferAudioRenderer
import AVFoundation.AVSampleBufferDisplayLayer
import AVFoundation.AVSampleBufferRenderSynchronizer
import AVFoundation.AVSemanticSegmentationMatte
import AVFoundation.AVSynchronizedLayer
import AVFoundation.AVTextStyleRule
import AVFoundation.AVTime
import AVFoundation.AVVideoSettings

简单说明:

  • AVAnimation动画类
  • AVAsset资产类可通过这个类获得图片、文件、媒体库
  • 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音频会话

框架功能

AV Foundation框架包括两个部分,一部分是与视频有关的API,另外一个部分是只与音频有关的API,旧的与音频相关的类提供了处理音频的很好的方式。框架功能和应用方向会在后面的章节中穿插讲解及实现,在此大概分为以下功能:

采集 AVCapture
  • 媒体捕捉
  • 视频拍摄
  • 图片拍摄
录制AVRecorder
  • 音频录制
  • 视频录制
播放
  • 音频播放
  • 视频播放
媒体文件处理AVAsset
  • 媒体文件检查
  • 媒体编辑
  • 媒体处理
  • 媒体采样
  • 媒体压缩
  • 音频的音效处理
编解码
  • 音频编解码
  • 视频编解码

如果喜欢,请帮忙点赞。支持转载,转载请附原文链接。

0 人点赞