前言:
咱們?nèi)绻M4嫦聛?lái)的文件是帶有音效的音頻文件芽丹,那就需要把原聲和音效同時(shí)錄制下來(lái),咱們先來(lái)張圖看下。
通過(guò)圖咱們可以直觀的看到如果想要錄制帶有音效文件的步驟尾菇,咱們第三步,錄制那步囚枪,其實(shí)就是咱們混音的那一步派诬。
這季咱們就主要講混音這一塊。
混音:AVAudioMixerNode
簡(jiǎn)介:
音頻混音節(jié)點(diǎn)链沼,主要用于將同一音頻引擎上的音頻混合成一軌音頻默赂。他沒(méi)有實(shí)際效果的作用,可以理解成他是一個(gè)工具類(lèi)括勺。
混音節(jié)點(diǎn)是一個(gè)遵守了混音協(xié)議(AVAudioMixing)的音頻節(jié)點(diǎn),那咱們?cè)诳椿煲艄?jié)點(diǎn)之前先了解下混音協(xié)議缆八。
AVAudioMixing音頻混合協(xié)議繼承了兩個(gè)協(xié)議,分別是AVAudioStereoMixing疾捍、AVAudio3DMixing奈辰。
這個(gè)協(xié)議定義了輸入總線(xiàn)可用屬性的混合器節(jié)點(diǎn)。
它可以改變?cè)谒霈F(xiàn)之前所有的節(jié)點(diǎn)乱豆。
AVAudioStereoMixing:音頻立體聲混合協(xié)議 里面定義了關(guān)于左右聲道平衡方法奖恰。
AVAudio3DMixing:3D音頻環(huán)境混合協(xié)議 ?里面包含了音頻環(huán)境的枚舉 音頻的播放速率 ?混響的比例 ?聲音穿透的阻礙力度 ?音頻吸收的比例 發(fā)聲點(diǎn)的中心點(diǎn)
咱們的混音協(xié)議可以調(diào)控輸出音頻的大小。他又繼承上面的兩個(gè)協(xié)議,所以他也就具備了上面的功能瑟啃。
如果你需要更細(xì)微的調(diào)節(jié)音頻趾徽,可以使用協(xié)議里面的方法。比如你去做一個(gè)更專(zhuān)業(yè)的音頻制作軟件翰守,需要調(diào)節(jié)幾軌音頻更精準(zhǔn)的聲道位置孵奶、或者調(diào)節(jié)某一個(gè)樂(lè)器發(fā)生的位置,就需要繼續(xù)去研究這些協(xié)議了蜡峰。當(dāng)然你最好有一定的電子音樂(lè)編曲的功底了袁。
混音節(jié)點(diǎn)又是一個(gè)音頻節(jié)點(diǎn),他繼承自AVAudioNode,音頻節(jié)點(diǎn)具備錄制湿颅、檢測(cè)载绿、觀察輸出音頻節(jié)點(diǎn)的功能,咱們就可以使用這個(gè)功能來(lái)把帶有音效的音頻錄制下來(lái)油航。
直接上代碼:
mixer.installTap(onBus:0, bufferSize:8192, format: input.inputFormat(forBus:0)) { (buffer, when)in
try! audioFile.write(from: buffer)
}
這基本就搞定了崭庸,但有一點(diǎn)特別需要注意,就是在錄制完成之后谊囚,需要把tap移除掉
mixer.removeTap(onBus:0)
這樣咱們錄制帶有音效的音頻就搞定了怕享!
剩下的結(jié)合咱們之前講過(guò)的內(nèi)容和Demo來(lái)看吧!
如果轉(zhuǎn)載需要經(jīng)過(guò)我的同意镰踏!