版本記錄
版本號 | 時(shí)間 |
---|---|
V1.0 | 2018.06.23 |
前言
AudioUnit框架作為您的應(yīng)用程序添加復(fù)雜的音頻操作和處理功能娶聘。 創(chuàng)建在主機(jī)應(yīng)用程序中生成或修改音頻的音頻單元擴(kuò)展煮剧。接下來幾篇我們就一起看一下這個(gè)框架斥滤,感興趣的看上面幾篇文章将鸵。
1. AudioUnit框架詳細(xì)解析(一) —— 基本概覽
1. About Audio Unit Hosting - 關(guān)于Audio Unit Hosting
iOS提供的音頻處理插件支持混合,均衡佑颇,格式轉(zhuǎn)換以及錄制顶掉,回放,離線渲染和實(shí)時(shí)對話(如VoIP(互聯(lián)網(wǎng)語音協(xié)議))的實(shí)時(shí)輸入/輸出挑胸。 您可以從您的iOS應(yīng)用程序動(dòng)態(tài)加載并使用 - 即host
- 這些功能強(qiáng)大且靈活的插件(稱為audio units
)痒筒。
Audio units
通常在稱為audio processing graph
音頻處理圖的封閉對象的上下文中工作,如圖所示茬贵。 在本例中簿透,您的應(yīng)用通過一個(gè)或多個(gè)回調(diào)函數(shù)向音頻圖表中的第一個(gè)音頻單元發(fā)送音頻,并對每個(gè)音頻單元進(jìn)行單獨(dú)控制解藻。 I / O單元的輸出 - 這個(gè)或任何音頻處理圖形中的最后一個(gè)音頻單元 - 直接連接到輸出硬件老充。
At a Glance - 概要
由于音頻單元構(gòu)成iOS音頻堆棧中最低的編程層,因此要有效使用它們需要比您需要其他iOS音頻技術(shù)更深的理解螟左。 除非您需要實(shí)時(shí)播放合成聲音蚂维,低延遲I / O(輸入和輸出)或特定音頻單元功能,否則請首先查看Media Player
路狮,AV Foundation
,OpenAL
或Audio Toolbox
框架蔚约。 這些更高級別的技術(shù)以您的名義使用audio units
奄妨,并提供重要的附加功能,如Multimedia Programming Guide
中所述苹祟。
1. Audio Units Provide Fast, Modular Audio Processing - 音頻單元提供快速的模塊化音頻處理
直接使用音頻單元audio units
的兩大優(yōu)點(diǎn)是:
卓越的響應(yīng)能力砸抛。 因?yàn)槟梢栽L問音頻單元渲染回調(diào)函數(shù)中的實(shí)時(shí)優(yōu)先級線程,所以您的音頻代碼盡可能接近metal树枫。 合成音樂工具和實(shí)時(shí)同步語音I / O直接使用音頻單元最有利直焙。
動(dòng)態(tài)重新配置。 以
AUGraph
不透明類型為基礎(chǔ)構(gòu)建的音頻處理圖processing graph API
允許您以線程安全的方式動(dòng)態(tài)組裝砂轻,重新配置和重新排列復(fù)雜的音頻處理鏈奔誓,而這一切都是在處理音頻的同時(shí)進(jìn)行的。 這是iOS中唯一提供此功能的音頻API搔涝。
音頻單元audio unit
的生命周期如下所示:
- 1)在運(yùn)行時(shí)厨喂,獲取對動(dòng)態(tài)鏈接庫的引用,該庫定義要使用的音頻單元庄呈。
- 2)實(shí)例化音頻單元蜕煌。
- 3)按照其類型的需要配置音頻單元,以適應(yīng)您的應(yīng)用程序的意圖诬留。
- 4)初始化音頻單元以準(zhǔn)備處理音頻斜纪。
- 5)開始音頻流贫母。
- 6)控制音頻單元。
- 7)完成后盒刚,銷毀音頻單元腺劣。
音頻單元提供非常有用的單個(gè)功能,如立體聲聲像伪冰,混音誓酒,音量控制和音頻電平測量。 Hosting音頻單元可讓您將這些功能添加到您的應(yīng)用中贮聂。 但是靠柑,要獲得這些好處,您必須獲得一系列基本概念吓懈,包括音頻數(shù)據(jù)流格式歼冰,渲染回調(diào)函數(shù)和音頻單元架構(gòu)。
2. Choosing a Design Pattern and Constructing Your App - 選擇設(shè)計(jì)模式并構(gòu)建您的應(yīng)用程序
hosting設(shè)計(jì)模式的音頻單元提供靈活的藍(lán)圖耻警,以根據(jù)您的應(yīng)用的具體情況進(jìn)行自定義隔嫡。 每種模式都表示:
- 如何配置I / O單元。 I / O單元有兩個(gè)獨(dú)立的元件甘穿,一個(gè)接受來自輸入硬件的音頻腮恩,一個(gè)將音頻發(fā)送到輸出硬件。 每個(gè)設(shè)計(jì)模式都指示您應(yīng)該啟用哪個(gè)或哪些元素温兼。
- 在音頻處理圖表
audio processing graph
中秸滴,您必須指定音頻數(shù)據(jù)流格式。 您必須正確指定支持音頻流的格式募判。 - 在哪里建立音頻單元連接以及附加渲染回調(diào)函數(shù)的位置荡含。 音頻單元連接是一種正式的結(jié)構(gòu),其將流格式從一個(gè)音頻單元的輸出傳播到另一個(gè)音頻單元的輸入届垫。 渲染回調(diào)使您可以將音頻饋送到圖表中释液,或者在圖表中的單個(gè)樣本級別處理音頻。
無論您選擇哪種設(shè)計(jì)模式装处,構(gòu)建音頻單元hosting應(yīng)用程序的步驟基本相同:
- 1)配置您的應(yīng)用程序音頻會(huì)話误债,以確保您的應(yīng)用程序在系統(tǒng)和設(shè)備硬件環(huán)境中正常工作。
- 2)構(gòu)建音頻處理圖妄迁。 這個(gè)多步驟過程利用您在
Audio Unit Hosting Fundamentals
中學(xué)到的所有知識找前。 - 3)提供用于控制圖形音頻單元的用戶界面。
熟悉這些步驟判族,以便將它們應(yīng)用于自己的項(xiàng)目躺盛。
3. Get the Most Out of Each Audio Unit - 充分利用每個(gè)音頻單元
本文檔的大部分內(nèi)容都告訴你,所有的iOS音頻單元都有共同的重要屬性形帮。 例如槽惫,這些屬性包括您的應(yīng)用程序需要在運(yùn)行時(shí)指定和加載音頻單元周叮,然后正確指定其音頻流格式。
同時(shí)界斜,每個(gè)音頻單元都有一些獨(dú)特的功能和要求仿耽,從使用正確的音頻采樣數(shù)據(jù)類型,到正確行為所需的配置各薇。 了解每個(gè)音頻單元的使用細(xì)節(jié)和特定功能项贺,例如,何時(shí)使用3D Mixer
單元以及何時(shí)使用多聲道混音Multichannel Mixer
峭判。
后記
本篇主要講述了
Audio Unit
的基本概覽开缎,感興趣的給個(gè)贊或者關(guān)注~~~~