美文网首页
AVFoundation框架解析看这里(1)- 概论

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

作者: sweetpf | 来源:发表于2019-11-15 15:21 被阅读0次

    前言

    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
    • 重要的头文件

    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
    • 媒体文件检查
    • 媒体编辑
    • 媒体处理
    • 媒体采样
    • 媒体压缩
    • 音频的音效处理
    编解码
    • 音频编解码
    • 视频编解码

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

    相关文章

      网友评论

          本文标题:AVFoundation框架解析看这里(1)- 概论

          本文链接:https://www.haomeiwen.com/subject/rdpjictx.html