版本記錄
| 版本號(hào) | 時(shí)間 |
|---|---|
| V1.0 | 2018.06.23 |
前言
AudioUnit框架作為您的應(yīng)用程序添加復(fù)雜的音頻操作和處理功能。 創(chuàng)建在主機(jī)應(yīng)用程序中生成或修改音頻的音頻單元擴(kuò)展。接下來(lái)幾篇我們就一起看一下這個(gè)框架,感興趣的看上面幾篇文章。
1. AudioUnit框架詳細(xì)解析(一) —— 基本概覽
1. About Audio Unit Hosting - 關(guān)于Audio Unit Hosting
iOS提供的音頻處理插件支持混合,均衡,格式轉(zhuǎn)換以及錄制,回放,離線(xiàn)渲染和實(shí)時(shí)對(duì)話(huà)(如VoIP(互聯(lián)網(wǎng)語(yǔ)音協(xié)議))的實(shí)時(shí)輸入/輸出。 您可以從您的iOS應(yīng)用程序動(dòng)態(tài)加載并使用 - 即host - 這些功能強(qiáng)大且靈活的插件(稱(chēng)為audio units)。
Audio units通常在稱(chēng)為audio processing graph音頻處理圖的封閉對(duì)象的上下文中工作,如圖所示。 在本例中,您的應(yīng)用通過(guò)一個(gè)或多個(gè)回調(diào)函數(shù)向音頻圖表中的第一個(gè)音頻單元發(fā)送音頻,并對(duì)每個(gè)音頻單元進(jìn)行單獨(dú)控制。 I / O單元的輸出 - 這個(gè)或任何音頻處理圖形中的最后一個(gè)音頻單元 - 直接連接到輸出硬件。

At a Glance - 概要
由于音頻單元構(gòu)成iOS音頻堆棧中最低的編程層,因此要有效使用它們需要比您需要其他iOS音頻技術(shù)更深的理解。 除非您需要實(shí)時(shí)播放合成聲音,低延遲I / O(輸入和輸出)或特定音頻單元功能,否則請(qǐng)首先查看Media Player,AV Foundation,OpenAL或Audio Toolbox框架。 這些更高級(jí)別的技術(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(fǎng)問(wèn)音頻單元渲染回調(diào)函數(shù)中的實(shí)時(shí)優(yōu)先級(jí)線(xiàn)程,所以您的音頻代碼盡可能接近metal。 合成音樂(lè)工具和實(shí)時(shí)同步語(yǔ)音I / O直接使用音頻單元最有利。
動(dòng)態(tài)重新配置。 以
AUGraph不透明類(lèi)型為基礎(chǔ)構(gòu)建的音頻處理圖processing graph API允許您以線(xiàn)程安全的方式動(dòng)態(tài)組裝,重新配置和重新排列復(fù)雜的音頻處理鏈,而這一切都是在處理音頻的同時(shí)進(jìn)行的。 這是iOS中唯一提供此功能的音頻API。
音頻單元audio unit的生命周期如下所示:
- 1)在運(yùn)行時(shí),獲取對(duì)動(dòng)態(tài)鏈接庫(kù)的引用,該庫(kù)定義要使用的音頻單元。
- 2)實(shí)例化音頻單元。
- 3)按照其類(lèi)型的需要配置音頻單元,以適應(yīng)您的應(yīng)用程序的意圖。
- 4)初始化音頻單元以準(zhǔn)備處理音頻。
- 5)開(kāi)始音頻流。
- 6)控制音頻單元。
- 7)完成后,銷(xiāo)毀音頻單元。
音頻單元提供非常有用的單個(gè)功能,如立體聲聲像,混音,音量控制和音頻電平測(cè)量。 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è)接受來(lái)自輸入硬件的音頻,一個(gè)將音頻發(fā)送到輸出硬件。 每個(gè)設(shè)計(jì)模式都指示您應(yīng)該啟用哪個(gè)或哪些元素。
- 在音頻處理圖表
audio processing graph中,您必須指定音頻數(shù)據(jù)流格式。 您必須正確指定支持音頻流的格式。 - 在哪里建立音頻單元連接以及附加渲染回調(diào)函數(shù)的位置。 音頻單元連接是一種正式的結(jié)構(gòu),其將流格式從一個(gè)音頻單元的輸出傳播到另一個(gè)音頻單元的輸入。 渲染回調(diào)使您可以將音頻饋送到圖表中,或者在圖表中的單個(gè)樣本級(jí)別處理音頻。
無(wú)論您選擇哪種設(shè)計(jì)模式,構(gòu)建音頻單元hosting應(yīng)用程序的步驟基本相同:
- 1)配置您的應(yīng)用程序音頻會(huì)話(huà),以確保您的應(yīng)用程序在系統(tǒng)和設(shè)備硬件環(huán)境中正常工作。
- 2)構(gòu)建音頻處理圖。 這個(gè)多步驟過(guò)程利用您在
Audio Unit Hosting Fundamentals中學(xué)到的所有知識(shí)。 - 3)提供用于控制圖形音頻單元的用戶(hù)界面。
熟悉這些步驟,以便將它們應(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ù)類(lèi)型,到正確行為所需的配置。 了解每個(gè)音頻單元的使用細(xì)節(jié)和特定功能,例如,何時(shí)使用3D Mixer單元以及何時(shí)使用多聲道混音Multichannel Mixer。
后記
本篇主要講述了
Audio Unit的基本概覽,感興趣的給個(gè)贊或者關(guān)注~~~~
