隨著移動技術(shù)的成熟和即將到來的5G時代,越來越多的公司開始開發(fā)移動視頻軟件來占領(lǐng)市場,隨著抖音的登場,視頻APP現(xiàn)已是火海一片,連BAT也按奈不住紛紛入場。
AVFoundation
在開發(fā)領(lǐng)域AVFoundation框架是iOS開發(fā)視頻的必用框架。該框架包含的類超過100個、大量協(xié)議的集合及許多不同的功能和常量。在第一次遇到這些問題時,看似掌握這個框架有一定的難度, 但是如果你將這個框架仔細(xì)地按功能單元進(jìn)行分解,就會變得比較容易理解。下面就看一下AVFoundation所提供的一些核心功能。
音頻播放和記錄
AVAudioPlayer和AVAudioRecorder可以在應(yīng)用程序中提供一種更簡單的整合音頻播放和記錄的功能。這些方法并不是AVFoundation用于播放和記錄音頻的唯一方式,卻是學(xué)習(xí)起來最簡單并且功能最強(qiáng)大的方法
媒體文件檢查
AVFoundation提供檢查正在使用的媒體文件的功能。可以查看這些媒體資源來確定是否適合一些特定的任務(wù),比如是否可以用于回放或其是否可以被編輯和導(dǎo)出。還可以獲取該媒體資源相關(guān)的技術(shù)參數(shù),比如內(nèi)容持續(xù)時間 創(chuàng)建日期或首選播放音量等。此外,該框架還基于AVMetadataItem類提供功能強(qiáng)大的元數(shù)據(jù)支持。這就允許開發(fā)者讀寫關(guān)于媒體資源的描述信息。
視頻播放
AVFoundation框架可以讓你播放從本地文件或遠(yuǎn)程流中獲取的視頻資源,并對視頻播放和內(nèi)容展示進(jìn)行控制。這一部分的核心類是AVPlayer和AVPlayerItem,正是這兩個類讓你能夠?qū)Y源的播放進(jìn)行控制,此外它還可以整合其他更高級的功能,如控制子標(biāo)題和章節(jié)信息等。或者讓你鏈接訪問音頻和視頻這兩個不同的資源。
媒體捕捉
AVFoundation提供了一個豐富的API集來讓你可以對這些設(shè)備進(jìn)行精密控制。攝像頭捕捉的核心類是AVCaptureSession,其作為所有活動的匯集點(diǎn)來接收攝像頭設(shè)備由各路流發(fā)過來的電影和圖片。這也是AVFoundation框架的一個可靠功能。
媒體編輯
AVFoundation框架語允許創(chuàng)建可以將多個音頻和視頻資源進(jìn)行組合的應(yīng)用程序,允許修改和編輯獨(dú)立的媒體片段,隨時修改音頻文件的參數(shù)以及添加動畫標(biāo)題和場景切換效果。
AVFoundation有關(guān)資源組合的功能源于AVAsset的子類AVComposition。AVComposition中的軌道都是AVAssetTrack的子類AVCompositionTrack。一個組合軌跡本身由一個或多個媒體片斷組成,由AVCompositionTrackSegment類定義,代表這個組合中的實(shí)際媒體區(qū)域 。
描述如下圖所示:
AVComposition和AVCompositionTrack都是不可變對象,提供對資源的只讀操作。這些對象提供了一個合適的接口讓應(yīng)用程序的一部分可以進(jìn)行播放或處理。但當(dāng)需要創(chuàng)建自己的組合時,就需要使用AVMutableComposition和AVMutableCompositionTrack所提供的可變子類。要創(chuàng)建自定義組合,需指定在將要添加到組合的源媒體的時間范圍,還要指定要添加片段的每個軌道的位置。
媒體處理
雖然通過AVFoundation框架可以在不通過對媒體資源字節(jié)一級進(jìn)行操作的前提下實(shí)現(xiàn)大量功能,但有時你可能還是需要訪問更底層的數(shù)據(jù)并對其進(jìn)行操作。幸運(yùn)的是,當(dāng)需要執(zhí)行更高級的媒體處理任務(wù)時,可以使用AVAssetReader和AVAssetWriter類來實(shí)現(xiàn)這些功能。這些類提供直接訪問視頻幀和音頻樣本的功能,所以可以對媒體資源進(jìn)行任何更高級的處理。
-
iOS
+關(guān)注
關(guān)注
8文章
3396瀏覽量
150805 -
視頻開發(fā)
+關(guān)注
關(guān)注
0文章
6瀏覽量
5836
發(fā)布評論請先 登錄
相關(guān)推薦
評論