通过Record_Audio获取MediaPlayer播放器的声音,利用自带的FFT功能进行音频分析
放于线程中
visualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1])
设置采样窗口1024点(实测:当大于1024时,例如4096,android仍然取1024)
n=getCaptureSize()
即 n = 1024
每1024个实数点放入一个数组,进行FFT快速傅里叶变换,得到1024个复数点,由于对称性,前512个点与后512个点对称,取前513个点(包括第0点)
其中第0点和第512点为实数,中间511点为复数
onFftDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate)
FFT数据为byte类型,放于byte[1024]中,其中一共1+1+(1024-2)/2=513个有效FFT数据
除了直流和n/2对应的点占一个坑儿,其他频率数据都是 实部+i虚部 两个坑儿
直流 | 实数 | 实部 | 虚部 | 实部 | 虚部 | …… | 实部 | 虚部 |
0 | 1 | 2 |