在我们使用各大音乐软件时,会发现,很多软件都会有一个音频的特效——鲸云特效,而鲸云特效,实际上就是对音频的一种可视化处理。

音频可视化,顾名思义就是将声音以视觉的方式呈现出来。那么怎么实现音频可视化呢,这就要说到两个知识点——可视化类Visualizer和傅里叶变换

Visualizer

Android系统的 Visualizer 提供了方便的 api 来获取播放音频的波形或 FFT 数据,其使用步骤为

通过MediaPlayer播放音乐,并且拿到mediaplayerId

通过这个id放入Visualizer,即可拿到实时播放的FTT数据

最后对数据进行处理,利用自定义view实现音频可视化

需要注意的是,Visualizer 输出的数据大小正比于音量,当音量为 0 时,输出也为 0,可视化效果会随音量变化。

傅里叶变换

上面说到相关的使用步骤,那么在最后一步进行数据处理时,就需要用到傅里叶转换,在实现音频可视化的过程中直接体现音频特征,可用于可视化绘制的是 pcm 数据。

但是pcm 表示各采样时间点上音频信号强度,看起来杂乱无章,难以体现听觉感知到的声音变化。

pcm 数据仅仅用来绘制体现音频信号平均强度变化的可视化动效。其他的动画效果需要使用对 pcm 数据做傅里叶变换后得到的体现各频率点上信号强度变化的频域数据来绘制。

傅立叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。许多波形可作为信号的成分,比如正弦波、方波、锯齿波等,傅立叶变换用正弦波作为信号的成分。

通过傅里叶变换,可以将信号从时域转换为频域。由于音频是离散的,所以需要使用离散傅里叶变换(DFT),

对一段有限长的离散信号,找出它含有的各个频率的正弦波分量。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐