ijksdl_equalizer.h 或新建头文件中定义 SpectrumBuffer 结构体(data、write_pos、has_data、sample_rate、channels 字段)SDL_Aout_Opaque 结构体中新增 SpectrumBuffer spectrum_buffer 成员AoutOpenAudio 函数中,初始化 spectrum_buffer 并写入 sample_rate 和 channelsAudioRendererOnWriteData 函数末尾(均衡器处理之后),添加 memcpy 将 PCM 数据写入环形缓冲区,更新 write_pos 和 has_dataijkplayer_napi.h 中声明 getSpectrumData 静态方法ijkplayer_napi.cpp 中实现 getSpectrumData:从 spectrum_buffer 读取 1024 个样本,立体声转单声道,构建 napi_value 数组返回ijkplayer_napi_audio_init.cpp 中注册 _getSpectrumData NAPI 函数(DECLARE_NAPI_FUNCTION)ijkplayer_napi_init.cpp 的视频播放器模块中也注册 _getSpectrumData(如需要)ijkplayer_napi_proxy.cpp 中添加获取 spectrum_buffer 指针的辅助函数IjkPlayerNapi.d.ets 类型声明中新增 _getSpectrumData(xcomponentId: string): number[]IjkMediaPlayer.ets 中新增公开方法 getSpectrumData(): number[],封装对原生 _getSpectrumData 的调用entry/src/main/ets/common/util/FFTAnalyzer.ets,实现 Cooley-Tukey 基 2 FFT 算法(1024 点)SpectrumData 类:存储 512 个频率 bin 的幅值,提供 getBands(bandCount) 对数频率映射方法和 getEnergy() 能量计算方法entry/src/main/ets/view/spectrum/SpectrumRenderer.ets,定义渲染器接口(render 方法签名、reset 方法)BarSpectrumRenderer.ets:柱状频谱特效(fillRect、频段渐变色、峰值下落指示器)WaveSpectrumRenderer.ets:波形频谱特效(贝塞尔曲线、半透明渐变填充、线宽随能量变化)CircleSpectrumRenderer.ets:圆形频谱特效(极坐标放射线、缓慢旋转、色相环颜色映射)ParticleSpectrumRenderer.ets:粒子频谱特效(200 粒子池、频段驱动属性、透明度衰减回收)entry/src/main/ets/view/spectrum/SpectrumView.ets,创建 Canvas 容器组件LocalMusic.ets 的 Swiper 中,在 CoverInfo() 和 PlayerLyrics() 之间插入 SpectrumView 组件onChange 回调,index=1 时通知 SpectrumView 可见,其他 index 时通知不可见currentSwiperIndex 相关逻辑,适配三页 Swiper(原有的模糊效果、背景样式等条件判断)$r('app.color.brand'),作为频谱特效的基础色调