版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2017.08.08 |
前言
AVFoundation
框架是ios中很重要的框架,所有與視頻音頻相關(guān)的軟硬件控制都在這個(gè)框架里面,接下來這幾篇就主要對(duì)這個(gè)框架進(jìn)行介紹和講解。
框架概覽
下面看一下該框架的基本信息。
下面看一下該框架的基本結(jié)構(gòu)。
我們先看一下這個(gè)框架在ios整個(gè)系統(tǒng)中的位置。
AVFoundation位置
我們使用這個(gè)框架,需要先引入頭文件。
#import <AVFoundation/AVFoundation.h>
下面我們就看一下這個(gè)框架里面的所有文件。
#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
動(dòng)畫類 -
AVAsset
資產(chǎn)類可通過這個(gè)類獲得圖片、文件、媒體庫 -
AssetDownloadTask
資源下載任務(wù) -
AVAssetExportSession
資源導(dǎo)出會(huì)話:是一個(gè)通過資源文件對(duì)象去創(chuàng)建一個(gè)指定預(yù)設(shè)的輸出的轉(zhuǎn)碼內(nèi)容會(huì)話 -
AVAssetImageGenerator
用于截取視頻某幀的畫面 -
AVAssetReader
從資源讀取音視頻數(shù)據(jù) -
AVAssetReaderOutput
讀取資源文件輸出類 -
AVAssetResourceLoader
資源文件的加載器會(huì)從AVURLAsset
和代理方法得到加載的內(nèi)容 -
AVAssetTrack
資源的分軌 -
AVAssetTrackGroup
這里面封裝了一組資源的分軌 -
AVAssetTrackSegment
表示資源分軌的一段 -
AVAssetWriter
資源文件寫入類 -
AVAssetWriterInput
寫入文件的輸入類 -
AVAssetDownloadTask
資源文件下載任務(wù) -
AVCaptureDevice
硬件捕獲設(shè)備類 -
AVCaptureInput
從硬件捕獲設(shè)備獲得輸入的數(shù)據(jù) -
AVCaptureOutput
獲得輸出的數(shù)據(jù) -
AVCaptureSession
用于調(diào)配音視頻輸入與輸出之間的數(shù)據(jù)流 -
AVCaptureVideoPreviewLayer
捕獲的視頻數(shù)據(jù)的預(yù)覽圖層 -
AVMetadataObject
音視頻元數(shù)據(jù)是一個(gè)基類里面包含面部檢測的元數(shù)據(jù)和二維碼的元數(shù)據(jù) -
AVPlayer
音視頻播放器 -
AVPlayerItem
音視頻播放的元素 -
AVPlayerItemMediaDataCollector
音視頻播放器元素媒體數(shù)據(jù)收集器 -
AVPlayerItemOutput
播放器元素輸出類 -
AVPlayerItemTrack
播放器元素的分軌 -
AVPlayerLayer
播放器的圖層 -
AVPlayerMediaSelectionCriteria
播放器媒體選擇的規(guī)范 -
AVSampleBufferDisplayLayer
用來顯示壓縮或解壓的視頻幀 -
AVSynchronizedLayer
同步動(dòng)畫圖層 -
AVTextStyleRule
文本樣式的規(guī)范 -
AVVideoCompositing
視頻合成的協(xié)議 -
AVAudioSettings
音頻的配置信息 -
AVAudioEngine
音頻引擎 -
AVAudioNode
音頻節(jié)點(diǎn) -
AVAudioTime
音頻時(shí)間類 -
AVMIDIPlayer MIDI
播放器 -
AVAudioSession
音頻會(huì)話
框架說明
主要有下面幾種應(yīng)用方向。
- 音頻的錄制、播放
- 視頻的播放
- 媒體文件檢查
- 媒體捕捉
- 媒體編輯
- 媒體處理
- 媒體采樣
- 媒體壓縮
- 音頻編解碼
- 視頻編解碼
- 音頻的音效處理
下面找?guī)讉€(gè)有代表性的說一下。
1. 視頻流處理
先看幾個(gè)重要的類。
-
AVCaptureDevice
代表了輸入設(shè)備,例如攝像頭與麥克風(fēng)。 -
AVCaptureInput
代表了輸入數(shù)據(jù)源 -
AVCaptureOutput
代表了輸出數(shù)據(jù)源 -
AVCaptureSession
用于協(xié)調(diào)輸入與輸出之間的數(shù)據(jù)流
下面看一下原理圖。
視頻流處理原理圖
2. 音頻處理
可以做聲音的錄制以及其他與聲音相關(guān)的操作,主要的類就是AVAudioSession
等。
參考文章
1. AVFoundation Programming Guide(官方文檔翻譯1)About AVFoundation - AVFoundation概述
2. AVFoundation連續(xù)系列之一音頻錄制
后記
未完,待續(xù)~~~
金秋