美文网首页
iOS音视频二: AVFoundation框架总览

iOS音视频二: AVFoundation框架总览

作者: 司空123 | 来源:发表于2019-05-14 22:19 被阅读0次

    一 、AVFoundation简介:

    AVFoundation是可以用来播放和创建基于时间的视听媒体的几个框架之一。它提供了一个Objective-C接口,您可以使用它在基于时间的视听数据的详细级别上工作。例如,您可以使用它来检查、创建、编辑或重新编码媒体文件。您还可以从设备获取输入流,并在实时捕获和回放期间操作视频。

    AVFoundation 在iOS上的体系结构:


    frameworksBlockDiagram_2x.png

    AVFoundation 在Mac OS上的体系结构:


    frameworksBlockDiagramOSX_2x.png

    二 、AVFoundation主要功能:

    音频的录制、播放
    视频的播放
    媒体文件检查
    媒体捕捉
    媒体编辑
    媒体处理
    媒体采样
    媒体压缩
    音频编解码
    视频编解码
    音频的音效处理

    三 、AVFoundation主要类及功能:

    #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>
    // 资源文件的加载器会从AVURLAsset和代理方法得到加载的内容
    #import <AVFoundation/AVAssetResourceLoader.h>
    //用于创建和跟踪媒体数据的解密密钥
    #import <AVFoundation/AVContentKeySession.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>
    // 存储AVAudioMixInputParameters
    #import <AVFoundation/AVAudioMix.h>
    //音量变化的描述类,它同一个音频的 track 相关联
    #import <AVFoundation/AVAudioProcessingSettings.h>
    
    #if TARGET_OS_IPHONE
    #if __has_include(<AVFoundation/AVAssetDownloadTask.h>)
    //资源下载任务
    #import <AVFoundation/AVAssetDownloadTask.h>
    #endif
    #if __has_include(<AVFoundation/AVAssetDownloadStorageManager.h>)
    #import <AVFoundation/AVAssetDownloadStorageManager.h>
    #endif
    #endif
    
    #if (TARGET_OS_IPHONE || defined(__MAC_10_7))
    #import <AVFoundation/AVCaptureDataOutputSynchronizer.h>
    //硬件捕获设备类
    #import <AVFoundation/AVCaptureDevice.h>
    //从硬件捕获设备获得输入的数据
    #import <AVFoundation/AVCaptureInput.h>
    //获得输出的数据
    #import <AVFoundation/AVCaptureOutput.h>
    //媒体捕捉会话.用于连接输入输出设备
    #import <AVFoundation/AVCaptureSession.h>
    //获取系统压力
    #import <AVFoundation/AVCaptureSystemPressure.h>
    //捕获的视频数据的预览图层
    #import <AVFoundation/AVCaptureVideoPreviewLayer.h>
    #endif
    
    //AVCompositionTrack的合集
    #import <AVFoundation/AVComposition.h>
    //媒体轨道片段集合,由 AVCompositionTrackSegment 类进行描述。
    #import <AVFoundation/AVCompositionTrack.h>
    //组合轨道段
    #import <AVFoundation/AVCompositionTrackSegment.h>
    #import <AVFoundation/AVDepthData.h>
    #import <AVFoundation/AVPortraitEffectsMatte.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/AVQueuedSampleBufferRendering.h>
    #import <AVFoundation/AVRouteDetector.h>
    #import <AVFoundation/AVSampleBufferAudioRenderer.h>
    //用来显示压缩或解压的视频帧
    #import <AVFoundation/AVSampleBufferDisplayLayer.h>
    #import <AVFoundation/AVSampleBufferRenderSynchronizer.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
    #if TARGET_OS_TV
    #import <AVFoundation/AVDisplayCriteria.h>
    #endif
    

    相关文章

      网友评论

          本文标题:iOS音视频二: AVFoundation框架总览

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