文章規(guī)劃
iOS 音視頻開發(fā)(一)常用音視頻框架介紹(本篇)
iOS 音視頻開發(fā)(二)AVAudioRecorder實(shí)現(xiàn)錄音功能
iOS 音視頻開發(fā)(三)MediaPlayer播放本地、遠(yuǎn)程音頻
iOS 音視頻開發(fā)(四)MediaPlayer播放本地、遠(yuǎn)程視頻
iOS 音視頻開發(fā)(五)AVAudioPlayer/AVPlayer播放本地、遠(yuǎn)程音頻
iOS 開發(fā)中常用的音視頻框架有五個:
- MediaPlayer
- AudioToolbox
- AVFoundation
- AudioUnit
- VideoToolbox
下面簡單介紹一下各個框架:
MediaPlayer 框架
MediaPlayer 框架是 iOS 平臺上一個用于音頻和視頻播放的高層級接口,它包含了用戶界面。你可以使用它來播放用戶在 iPod 庫中的項(xiàng)目,或者播放本地文件以及網(wǎng)絡(luò)文件。
另外,這個框架也包括了查找用戶媒體庫中內(nèi)容的 API,同時還可以配置像是在鎖屏界面或者控制中心里的音頻控件。
AudioToolbox框架
AudioToolbox 這個庫是C的接口,偏向于底層,用于在線流媒體音樂的播放,可以調(diào)用該庫的相關(guān)接口自己封裝一個在線播放器類。
AVFoundation框架
是蘋果的現(xiàn)代媒體框架,它包含了一些不同的用途的 API 。其中有一些是現(xiàn)代 Objective-C 對于底層 C 語言接口的封裝。除了少數(shù)的例外情況,AVFoundation 可以同時在 iOS 和 OS X 中使用。
AudioUnit 框架
Audio Unit 框架是一個底層的 API。所有 iOS 中的音頻技術(shù)都構(gòu)建在 Audio Unit 這個框架之上。音頻單元是用來加工音頻數(shù)據(jù)的插件。一個音頻單元鏈叫做音頻處理圖。
如果你需要非常低的延遲 (如 VoIP 或合成樂器)、回聲消除、混音或者音調(diào)均衡的話,你可能需要直接使用音頻單元,或者自己寫一個音頻單元。但是其中的大部分工作可以使用 AVFoundation 的 AVAudioEngine 的 API 來完成。如果你不得不寫自己的音頻單元的話,你可以將它們與 AVAudioUnit 節(jié)點(diǎn)一起集成在 AVAudioEngine 處理圖中。
跨應(yīng)用程序音頻:Audio Unit 的 API 可以在 iOS 中進(jìn)行跨應(yīng)用音頻。音頻流 (和 MIDI 命令) 可以在應(yīng)用程序之間發(fā)送。比如說:一個應(yīng)用程序可以提供音頻的效果器或者濾波器。另一個應(yīng)用程序可以將它的音頻發(fā)送到第一個應(yīng)用程序中,并使用其中的音頻效果器處理音頻。被過濾的音頻又會被實(shí)時地發(fā)送回原來的應(yīng)用程序中。 CoreAudioKit 提供了一個簡單的跨應(yīng)用程序的音頻界面。
VideoToolbox 框架
常用于流媒體直播,推流時對視頻進(jìn)行H264編解、解碼。