AV Foundation 是 OSX 系統(tǒng)和 iOS 系統(tǒng)中用于處理基于時(shí)間的媒體數(shù)據(jù)的高級(jí) objectivec 框架凄吏,其設(shè)計(jì)過(guò)程高度依賴(lài)多線(xiàn)程機(jī)制,充分利用了多核硬件優(yōu)勢(shì)当娱,大量使用 Block 和 GCD 機(jī)制已维。AVFoundation 能與高層級(jí)框架無(wú)縫銜接知给,也能提供低層級(jí)框架的功能和性能皇钞。
1. AVFoundation 核心功能
AVFoundation 提供的核心功能如下所示
- 音頻播放和記錄——AVAudioPlayer 和 AVAudioRecorder
- 媒體文件檢查——AVMetadataItem
- 視頻播放——AVPalyer 和 AVPlayerItem
- 媒體捕捉——AVCaptureSession
- 媒體編輯
- 媒體處理——AVAssetReader悼泌、AVAssetWriter
2. 數(shù)字媒體
2.1 數(shù)字媒體采樣
將現(xiàn)實(shí)世界的模擬信號(hào)轉(zhuǎn)換為能夠被計(jì)算機(jī)存儲(chǔ)和傳輸?shù)臄?shù)字信號(hào),需要經(jīng)過(guò)模擬-數(shù)字轉(zhuǎn)換過(guò)程鹅士,也稱(chēng)為采樣券躁。數(shù)字化采樣有兩種方式,一種是時(shí)間采樣掉盅,即捕捉一個(gè)信號(hào)周期內(nèi)的變化,一種是空間采樣以舒,一般用于圖片數(shù)字化和其他可視化媒體內(nèi)容數(shù)字化上趾痘,它對(duì)一個(gè)圖片在一定分辨率下捕捉其亮度和色度,進(jìn)而創(chuàng)建出由該圖片的像素點(diǎn)數(shù)據(jù)所構(gòu)成的數(shù)字化結(jié)果蔓钟。視頻既有空間屬性又有時(shí)間屬性永票,所以數(shù)字化時(shí)都可以使用。
2.2 音頻采樣
對(duì)于一個(gè)音頻滥沫,麥克風(fēng)負(fù)責(zé)將物理振動(dòng)轉(zhuǎn)化為相同頻率和振幅的電流信號(hào)侣集,之后通過(guò)線(xiàn)性脈沖編碼調(diào)制(LPCM)進(jìn)行編碼。LPCM 采樣或測(cè)量一個(gè)固定的音頻信號(hào)兰绣,其周期率被稱(chēng)為采樣率世分。采樣頻率達(dá)到奈奎斯特頻率(采樣對(duì)象最高頻率的 2 倍)時(shí)即可準(zhǔn)確表現(xiàn)原始信號(hào)的信息。另一方面編碼字節(jié)數(shù)(也稱(chēng)位元深度)表現(xiàn)了采樣精度缀辩,如位元深度為 8 位的編碼能夠提供 256 個(gè)離散級(jí)別的數(shù)據(jù)臭埋,CD 音質(zhì)位元深度為 16。
3. 數(shù)字媒體壓縮
原始臀玄、未壓縮的數(shù)字化媒體數(shù)據(jù)需要大量的存儲(chǔ)空間瓢阴,因此需要進(jìn)行壓縮。
3.1 色彩二次抽樣
由于人類(lèi)的眼睛對(duì)亮度的敏感度高于顏色的敏感度妖异,因此可以大幅降低存儲(chǔ)在每個(gè)像素中的顏色信息翘悉,而不至于圖片質(zhì)量嚴(yán)重受損春锋,這一過(guò)程稱(chēng)為色彩二次采樣。
視頻數(shù)據(jù)都使用 YCbCr 顏色模式叠穆,也稱(chēng)為 YUV 模式,與 RGB 視頻信號(hào)傳輸相比畦浓,它最大的優(yōu)點(diǎn)在于只需占用極少的頻寬痹束。其中 “Y” 表示明亮度(Luminance或Luma),也就是灰階值讶请;而 “U” 和 “V” 表示的則是色度祷嘶。
色彩二次抽樣通常用一個(gè)三分比值表示屎媳,J:a:b(例如4:2:2),形容一個(gè)以J個(gè)像素寬及兩個(gè)像素高的概念上區(qū)域:
J:水平抽樣參照(概念上區(qū)域的寬度)论巍。通常為4
a:在J個(gè)像素第一行中的色度抽樣數(shù)目(Cr, Cb)
b:在J個(gè)像素第二行中的額外色度抽樣數(shù)目(Cr, Cb)
下面是抽樣示意圖
4:4:4 比例下全彩色信息都可被保存烛谊,在 4:2:2 比例下色彩信息為每?jī)蓚€(gè)水平像素的平均值,在 4:2:0 比例下色彩信息為水平和垂直 4 個(gè)像素的平均值嘉汰。
3.2 編解碼器壓縮
編解碼器使用高級(jí)壓縮算法對(duì)需要保存或發(fā)送的音頻或視頻數(shù)據(jù)進(jìn)行壓縮和編碼丹禀,同時(shí)可以將壓縮文件解碼成適合播放和編輯的媒體資源文件。編解碼器分無(wú)損壓縮和有損壓縮鞋怀,zip 和 gzip 就是無(wú)損壓縮双泪。
3.3 視頻編解碼器
AVFoundation 只提供 H.264 和 Apple ProRes 兩種媒體類(lèi)型的支持,但 iOS 只支持 H.264密似。
3.3.1 H.264
H.264 規(guī)范是 Motion Picture Experts Group(MPEG)定義的 PMEG-4 的一部分焙矛,與其他 MPEG 壓縮一樣,H.264 通過(guò)下面兩個(gè)維度來(lái)壓縮視頻文件尺寸:
- 空間:壓縮獨(dú)立視頻幀残腌,被稱(chēng)為幀內(nèi)壓縮
- 時(shí)間:以組為單位壓縮視頻幀冗余數(shù)據(jù)村斟,稱(chēng)為幀間壓縮
幀內(nèi)壓縮通過(guò)消除包含在每個(gè)獨(dú)立視頻幀內(nèi)的色彩及結(jié)構(gòu)中的冗余信息來(lái)進(jìn)行壓縮,因此可以在不降低圖片質(zhì)量情況下盡可能縮小尺寸抛猫,這一過(guò)程創(chuàng)建的幀稱(chēng)為 I-frames蟆盹。
幀間壓縮將很多幀組合為一組圖片(簡(jiǎn)稱(chēng) GOP),對(duì)于 GOP 所存在的時(shí)間維度的冗余可以被消除闺金。GOP 存儲(chǔ)三種不同類(lèi)型的幀:
- I-frames:關(guān)鍵幀逾滥,創(chuàng)建完整圖片所需要的所有數(shù)據(jù),尺寸大但解壓快
- P-frames:預(yù)測(cè)幀掖看,基于最近的 I-frames 或 P-frames 的可預(yù)測(cè)圖片進(jìn)行編碼得到
- B-frames:雙向幀匣距,基于使用之前和之后的幀信息編碼得到的幀,解壓過(guò)程費(fèi)時(shí)
3.4 音頻解碼器
AVFoundation 廣泛使用 AAC(高級(jí)音頻編碼) 作為音頻解碼器哎壳,它是 H.264 標(biāo)準(zhǔn)相應(yīng)的音頻處理方式毅待,優(yōu)于 MP3 格式。