Unity音頻基礎知識
前言
之前一直沒有細研究過Unity的音頻策略和優化機制,在此學習完過后作下筆記,
基礎知識
所謂音頻采樣率,即每秒采樣多少次,人們常說的音頻音質就是采樣率,采樣率越高,音質越好,大小越大,一般來說,CD的采樣率/音質是44100HZ,
所謂音頻采樣精度,即每次采樣的結果用多少位存盤,最常見的是用16位,即2個位元組來存盤,
所謂音頻采樣時間,即音頻的播放時間,
所謂音頻聲道,即采樣的位置數量,從幾個位置進行采樣就是幾聲道,
所謂音頻解碼,即壓縮音頻的解壓縮,音頻必須解碼之后才能進行播放,
所謂碼率,即采樣率 * 采樣精度 * 通道數,
一個未壓縮的音頻大小在記憶體中所占 = 采樣率 * 采樣精度 * 通道數 * 采樣時間 = 碼率 * 采樣時間
音頻格式
Unity支持以下四種音頻格式:
.aif:蘋果開發的一種音頻格式,
.wav:Windows開發的一種音頻格式,
.mp3:一種有損壓縮音頻格式,
.ogg:一種有損壓縮音頻格式,
音頻設定
Force To Mono:將多聲道的音頻在打包前強制混合成為單聲道,為什么要強制混合成單聲道呢?官方的解釋是:混合的程序一般會產生更安靜的信號,因此峰值歸一化的信號給了更多調整音量大小的空間,但是我覺得更多的應該是極大程度上減少了音頻檔案的大小,試想一下,直接從雙聲道減少一個聲道變為單聲道,可以減少多少資料,
Normalize:在Force To Mono的混合程序中使用音頻標準化,所謂的音頻標準化可以參考wiki,
Load In Background:音頻加載時將在單獨的執行緒上延遲進行,不會阻止主執行緒,即異步加載音頻,可能會導致播放音頻出現細微的延遲,默認情況下是關閉的,
Preload Audio Data:音頻會在加載場景之前進行加載,默認情況下是打開的,所以說,如果音頻檔案設定是Unity默認的狀態,即打開Preload Audio Data,關閉Load In Background,那么當場景加載完成時,場景中所需要的音頻檔案就已經完全加載完成了,但是需要注意的是,只有Unity知道的需要用到的音頻,也就是場景中參考到的音頻,才能采取上述的預加載機制,對于那些沒有進底包,放在AB包中動態加載的音頻,Unity沒法幫使用者自動加載,如果是關閉的狀態,音頻資料只有在呼叫播放介面前或者主動加載才會進行加載,
Ambisonic:環繞立體混響聲,即開啟3D音頻,
壓縮格式
PCM:無壓縮,速度最快,適合小音頻,
ADPCM:壓縮率小,速度較快,適合需要大量播放的不追求品質的音頻,
Mp3:壓縮率較大,速度較慢,
Vorbis:壓縮率大,速度最慢,適合中長音頻,在Unity中可以自主調節壓縮率,
采樣率設定
Preserve Sample Rate:原始采樣率,
Optimize Sample Rate:自動優化設定采樣率,
Override Sample Rate:手動設定采樣率,
加載方式
Decompress On Load:整個音頻檔案加載到記憶體中后對其立即進行解壓,最終記憶體占用為解壓后的音頻大小,即未壓縮的音頻大小,播放的時候沒有延遲,但是一般來說,大音頻檔案由于未壓縮版本占用記憶體過大,所以盡可能地減少對大音頻檔案應用此機制,
Compressed In Memory:整個音頻檔案加載到記憶體中后不立即進行解壓,當音頻播放的時候進行解壓,最終記憶體占用的是壓縮后的音頻大小,但是相比上面一種機制來說,這種機制在播放時會有一丟丟延遲,解壓速度不同,播放的延遲也就不同,所以說這種機制應用于大音頻檔案是比較合適的,既不會占用過多記憶體,又能接受解壓帶來的CPU開銷和細微播放延遲,
Streaming:直讀直放的模式,這種模式使用盡可能小的記憶體來快取從磁盤中逐漸讀取的資料,并且立刻解碼播放音頻,播放完后及時釋放,但是這種模式的CPU開銷是最高的,音頻的播放延遲取決于頻繁I/O的開銷,所以說算是CPU換記憶體的一種方式,所以說,對記憶體壓力比較大的專案,首選這種模式是不錯的選擇,除此之外,這種模式也比較適合大音頻,或者只需要播放一次的音頻,
音頻優化
如果沒有必要使用多聲道,請一定要勾選強制轉換為單聲道的選項,這會使得音頻大小減少很多,
如果對音效質量要求沒有那么高,那么采樣率可以適當降低一點,壓縮格式可以選擇壓縮率高的選項,
如果對播放延遲特別敏感,那么最好選擇Decompress On Load機制,雖然記憶體占用會大一點,但是一般來說需要無延遲播放的音效都不會很大,可以接受延遲的話,就最好選擇Compressed In Memory來減小記憶體開銷,
雖然不太建議使用Streaming方式,如果專案的記憶體是主要問題的話,嘗試使用Streaming方式用CPU換記憶體也是不錯的選擇,
音頻引擎
待補充…
小結
音頻雖然在一個專案中看上去微不足道,但是音頻優化確實還是有很多東西可以學習和了解的,比如對記憶體、對CPU等,
最近家里添了新成員,耽誤了一會學習,
總之,學就完事了,
參考
https://docs.unity3d.com/cn/2020.2/Manual/class-AudioClip.html
https://blog.csdn.net/chenfujun818/article/details/81710895
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290367.html
標籤:其他
