Source starvation(源干涸)與內(nèi)存優(yōu)化思路

當流數(shù)據(jù)未在規(guī)定截止時間內(nèi)發(fā)送到 Stream Manager 時,就會發(fā)生源(I/O)干涸。
產(chǎn)生原因:
wwise工程設(shè)置問題:
互動音樂:Interactive Music 層級結(jié)構(gòu)的流對象在事先預定,需要流數(shù)據(jù)及時準備就緒。此預讀時間為每個音樂軌的屬性。如果互動音樂發(fā)生干涸,可能是因為您指定的 Look-ahead Time(預讀時間)不夠大造成的。
零延遲流:如果您在聲音和音樂軌屬性中選擇“Zero Latency”選項,流文件的開頭將存儲在 SoundBank 中。發(fā)布播放事件時,會使用存儲在 SoundBank 中的數(shù)據(jù)(預取數(shù)據(jù))立即開始播放。但是,如果在文件的后續(xù)部分從磁盤流播放之前就已經(jīng)處理完預讀數(shù)據(jù),即會發(fā)生源干涸。在這種情況下,請增加預讀長度。Actor-mixer(角色混音器)層級結(jié)構(gòu)中,未標記為“零延遲”的聲音絕不會在達到其目標緩沖長度之前開始播放。達到目標緩沖所需的時間即為聲音的初始延遲。因此如果這些聲音發(fā)生干涸,可能是由于 I/O 條件有誤或失衡造成的。
I/O 設(shè)置問題:https://www.audiokinetic.com/zh/library/edge/?source=SDK&id=streamingmanager_tips.html

內(nèi)存優(yōu)化思路
從wav文件本身入手
編碼格式
采樣率
聲道數(shù):雙聲道的體積是單聲道的兩倍,因為雙聲道的聲音發(fā)送到左右兩個揚聲器的信號是不同的。
棄用沒必要的文件。
啟用流播放:不把整個文件一次性加載到游戲系統(tǒng)的內(nèi)存中。直接從存儲介質(zhì)播放音頻。(缺點:不適用于即時切換的聲音,適用于較長的聲音如環(huán)境音與音樂。)
細分Soundbank。
業(yè)務(wù)邏輯層面:使用AkBank組件中的Save decoded bank選項,當對Soundbank解碼時,它會將解碼后的Soundbank資源保存在本地DecodedBanks文件夾中,以便下次加載時,不用額外對資源進行解碼,這種方法對使用了Vorbis高壓縮的編碼格式效果顯著,前提是對游戲解包安裝后的本地存儲容量無要求。
