3 分鐘就能掌握的影片 / 音訊最佳化技巧!

侑虎科技發表於2020-10-16

節前,我們已經將【效能黑榜】上的Top10規則均做了詳細的解讀(可戳文末相關連結回顧)。無論是大家在開發時的疏忽,還是相關知識點的缺失,這些問題的積累最終都會反映到專案的效能表現上。為此,我們將這些規則曝光出來,並且以一個個知識點的形式逐一解讀。

今天,我們來繼續剖析【UWA本地資源檢測】中和音訊視訊相關的規則。我們將力圖以淺顯易懂的表達,讓職場萌新或優化萌新深入理解。


1、未使用Streaming載入的長音訊

3 分鐘就能掌握的影片 / 音訊最佳化技巧!

這裡我們先了解一下Unity裡音訊載入的三種方式:

Decompress On Load
音訊檔案以壓縮形式儲存在磁碟上,載入時直接解壓放到記憶體中。這種方式在記憶體佔用上沒有優勢,但在後續播放時對CPU的計算需求是最小的。一般來講這種方式更適用於短小的音訊。

Compressed In Memory
音訊檔案以壓縮形式存放在記憶體裡,使用時再解壓。這意味著會有更多的CPU開銷,但是在載入速度和記憶體佔用上具有優勢。這種情況適用於大型音訊檔案。

Streaming
音訊檔案存放在磁碟中,載入時迴圈以下操作:“從磁碟讀取一部分,解壓到記憶體中,播放,解除安裝”。這種方式在記憶體佔用上相較而言是最小的,但在CPU的消耗上是最不具優勢的。

3 分鐘就能掌握的影片 / 音訊最佳化技巧!

而在音訊的實際運用中,背景音樂的使用是普遍存在的。幾乎所有遊戲都會使用BGM以增強對遊戲氛圍和環境的渲染。結合以上關於音訊載入方式的描述可以看出,採用Streaming方式去載入背景音樂,可以有效減少記憶體佔用和載入時間,從而降低Audio資源對專案總體記憶體和載入時間的影響。

因此,UWA使用這條規則,找出非Streaming載入的音訊,再由開發團隊依據這些音訊的具體使用場合,去決定最適合的載入方式。


2、未使用PCM格式的音訊

3 分鐘就能掌握的影片 / 音訊最佳化技巧!

這條規則面向的是音訊壓縮時的編碼方式。Unity支援的音訊壓縮方式有如下三種:

3 分鐘就能掌握的影片 / 音訊最佳化技巧!

PCM
全稱是Pulse-Code Modulation。屬於脈衝調製編碼,它將模擬訊號轉換為數字訊號,實質上沒有經過編碼,沒有進行壓縮,所以在音質上是屬於完全無損的原始音訊。而且相較於原生的模擬訊號,它的抗干擾能力更強,保真效果更好。

Vorbis
應該叫做OGG Vorbis。類似mp3格式,但這是一種免費開發的非商業壓縮格式。屬於有失真壓縮。

ADPCM
Adaptive Differential Pulse Code Modulation,自適應差分脈衝編碼調製。是一種基於PCM的優化壓縮方式,但也屬於有失真壓縮。

未使用 PCM 格式的音訊可能存在音質問題,所以我們將這些音訊篩選出來,以供開發團隊進行進一步的檢查,去考慮音訊格式和原音訊的質量是否符合預期的使用需求。


3、雙聲道的音訊

3 分鐘就能掌握的影片 / 音訊最佳化技巧!

在匯入音訊檔案時,我們可以發現,有些音訊檔案是多聲道的(我們常見的是左右雙聲道),如下圖:

3 分鐘就能掌握的影片 / 音訊最佳化技巧!

在Android裝置上,雙聲道音訊對聲音的效果提升不大,但是會佔用雙倍記憶體。所以建議使用單聲道的音訊。

而對於這些原本就是雙聲道的音訊,可以考慮開啟Force To Mono:

3 分鐘就能掌握的影片 / 音訊最佳化技巧!

勾選Force To Mono的情況下,Unity會將音訊合併成單聲道,從而節約記憶體。

所以在本條規則篩選出這些雙聲道音訊後,開發團隊可以結合音訊的實際表現效果去決定是否要對音訊進行設定上的修改。


4、尺寸過大的視訊資源

3 分鐘就能掌握的影片 / 音訊最佳化技巧!

大尺寸的視訊資源在表現效果上會更好,但是如果超過了目標裝置群體的效能範圍,那不僅提升效果有限,而且還會導致記憶體上的額外佔用。

根據UWA對大資料的分析,在當前裝置的效能範圍內,512的視訊尺寸能夠保證在大部分的裝置上達到所需的表現效果,同時不會對裝置效能造成額外的壓力。

需要說明的是,每一項檢測規則的閾值都可以由開發團隊依據自身專案的實際需求去設定合適的閾值範圍,這也是本地資源檢測的一大特點。同時,也歡迎大家來使用UWA推出的本地資源檢測服務,可幫助大家儘早對專案建立科學的美術規範。

3 分鐘就能掌握的影片 / 音訊最佳化技巧!

萬行程式碼屹立不倒,全靠基礎掌握得好!

效能黑榜相關閱讀

《那些年給效能埋過的坑,你跳了嗎?》
《那些年給效能埋過的坑,你跳了嗎?(第二彈)》
《掌握了這些規則,你已經戰勝了80%的對手!》

相關文章