Android音訊視覺化操作

山有木xi發表於2021-03-28

在我們使用各大音樂軟體時,會發現,很多軟體都會有一個音訊的特效——鯨雲特效,而鯨雲特效,實際上就是對音訊的一種視覺化處理。

音訊視覺化,顧名思義就是將聲音以視覺的方式呈現出來。那麼怎麼實現音訊視覺化呢,這就要說到兩個知識點——視覺化類Visualizer和傅立葉變換

Visualizer

Android系統的 Visualizer 提供了方便的 api 來獲取播放音訊的波形或 FFT 資料,其使用步驟為

  1. 透過MediaPlayer播放音樂,並且拿到mediaplayerId

  2. 透過這個id放入Visualizer,即可拿到實時播放的FTT資料

  3. 最後對資料進行處理,利用自定義view實現音訊視覺化

需要注意的是,Visualizer 輸出的資料大小正比於音量,當音量為 0 時,輸出也為 0,視覺化效果會隨音量變化。

傅立葉變換

上面說到相關的使用步驟,那麼在最後一步進行資料處理時,就需要用到傅立葉轉換,在實現音訊視覺化的過程中直接體現音訊特徵,可用於視覺化繪製的是 pcm 資料。

但是pcm 表示各取樣時間點上音訊訊號強度,看起來雜亂無章,難以體現聽覺感知到的聲音變化。

pcm 資料僅僅用來繪製體現音訊訊號平均強度變化的視覺化動效。其他的動畫效果需要使用對 pcm 資料做傅立葉變換後得到的體現各頻率點上訊號強度變化的頻域資料來繪製。

傅立葉變換是一種分析訊號的方法,它可分析訊號的成分,也可用這些成分合成訊號。許多波形可作為訊號的成分,比如正弦波、方波、鋸齒波等,傅立葉變換用正弦波作為訊號的成分。

透過傅立葉變換,可以將訊號從時域轉換為頻域。由於音訊是離散的,所以需要使用離散傅立葉變換(DFT), 對一段有限長的離散訊號,找出它含有的各個頻率的正弦波分量。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2765310/,如需轉載,請註明出處,否則將追究法律責任。

相關文章