一:AVFoundation
AVFoundation是可以用它來播放和創(chuàng)建基于時間的視聽媒體的幾個框架之一,它提供了基于時間的視聽數(shù)據(jù)的詳細(xì)界別上的OC接口??梢杂盟鼇頇z查、創(chuàng)建、編輯、重新編碼媒體文件。也可以從設(shè)備得到輸入流和實時捕捉回放過程中操控視頻
1、音頻播放和記錄。播放音頻文件可以使用AVAudioPlayer,錄制音頻文件可以使用AVAudioRecorder。還可以使用AVAudioSession來配置應(yīng)用程序的音頻行為。
2、媒體文件檢查。提供檢查正在使用的媒體文件的功能??梢圆榭疵襟w資源信息,比如是否可以回放、編輯、導(dǎo)出等,可以獲取相關(guān)技術(shù)參數(shù),比如內(nèi)容持續(xù)時間,創(chuàng)建日期、播放音量等,此外還基于AVMetadataItem類提供功能強(qiáng)大的元數(shù)據(jù)支持。允許開發(fā)者讀取關(guān)于媒體資源的描述信息。
3、視頻播放。AV提供可以播放從本地或者遠(yuǎn)程流中獲取的視頻資源,并對視頻播放和內(nèi)容的展示進(jìn)行控制。核心類是AVPlayer和AVPlayerItem,此外還可以整合其他更高級的功能,如控制子標(biāo)題和章節(jié)信息等。
4、媒體捕捉。核心類是AVCaptureSession,作為所有活動的匯集點來接受攝像頭設(shè)備由各路流反過來的電影和圖片。是用來管理數(shù)據(jù)捕捉的中央?yún)f(xié)調(diào)對象,使用一個實例來協(xié)調(diào)從AV輸入設(shè)備到輸出的數(shù)據(jù)流。
5、媒體編輯。對媒體資源的整合和編輯提供了強(qiáng)有力的支持。允許修改和編輯獨立的媒體片段、隨時修改音頻文件的參數(shù)以及添加動畫標(biāo)題和場景切換效果。
6、媒體處理。當(dāng)需要執(zhí)行更高級的媒體處理任務(wù)是,可以用AVAssetReader和AVAssetWriter類來實現(xiàn)這些功能。這些類提供了直接訪問視頻幀和音頻樣本的功能,可以對媒體資源進(jìn)行任何更高級的處理。
二:FFmpeg
FFmpeg是一套可以用來記錄、處理數(shù)字音頻、視頻,并將其轉(zhuǎn)換為流的開源框架,采用LPL或GPL許可證,提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。它的可移植性或者說跨平臺特性非常強(qiáng)大,可以用在Linux服務(wù)器、PC(包括Windows、Mac OS X等)、移動端設(shè)備(Android、iOS等移動設(shè)備)等平臺。名稱中的mpeg來自視頻編碼標(biāo)準(zhǔn)MPEG,而前綴FF是Fast Forward的首字母縮寫
三:VideoToolbox
在iOS 8.0以后,系統(tǒng)提供了VideoToolbox編碼API,該API可以充分使用硬件來做編碼工作以提升性能和編碼速度。本節(jié)就來講解一下如何將一系列連續(xù)的紋理,利用VideoToolbox編碼成一段H264的數(shù)據(jù)。首先來介紹VideoToolbox如何將一幀視頻幀數(shù)據(jù)編碼為H264的壓縮數(shù)據(jù),并把它封裝到H264HWEncoderImpl類中,然后再將封裝好的這個類集成進(jìn)6.2.2節(jié)的預(yù)覽系統(tǒng)中,集成進(jìn)去之后,對于原來僅僅是預(yù)覽的項目,也可以將其保存到一個H264文件中了。使用VideoToolbox可以為系統(tǒng)帶來以下幾個優(yōu)點,提高編碼性能(使得CPU的使用率大大降低),增加編碼效率(使得編碼一幀的時間縮短),延長電量使用(耗電量大大降低),而VideoToolbox是iOS 8.0以后才公開的API,既可以做編碼又可以做解碼工作。