SuperAPI AI 工具集

audio-analysis

设计与创作

查看项目

更新于 10-16 05:05

技能介绍

用途:AudioAnalysis 是 Decentraland SDK7 中的组件,附加在已有 AudioSource、AudioStream 或 VideoPlayer 的同一实体上,由渲染器分析音频帧缓冲并把振幅与 8 个频段值写回组件,供场景系统每帧读取以驱动可视化、节拍响应几何体、音频联动灯光等。

前提规则:实体必须同时具备上述音频组件之一,仅有 AudioAnalysis 不产生数据;音频须正在播放,暂停、静音或未加载时 amplitude 与 bands 全为 0(没有 ready 事件,可无条件启动响应系统,静音时会趋向 0)。平台支持:Unity 桌面端已实现;移动端 Godot 自 v1.14.0(2026 年 9 月)起支持;Bevy 忽略该组件。未实现处值为 0,场景不报错,但应设计不依赖振幅的静默兜底。

主要能力与字段:输出 amplitude 与 band0..band7(band0 最低频,band7 最高频)。创建时配置 mode、amplitudeGain、bandsGain;MODE_LOGARITHMIC(默认,推荐可视化)使用增益且频段对数分布,MODE_RAW 为原始 FFT 幅度且忽略增益。默认 amplitudeGain 5.0、bandsGain 0.05,值可为大于 1 的浮点数,需要 0..1 时自行裁剪。

使用方式:从 @dcl/sdk/ecs 导入 AudioAnalysis、AudioAnalysisView、PBAudioAnalysisMode 及音频组件。用 AudioAnalysis.createAudioAnalysis(entity, mode?, amplitudeGain?, bandsGain?) 创建(不要用 create),用 createOrReplaceAudioAnalysis 覆盖。读取用 readIntoView 或 tryReadIntoView,写入预分配的 AudioAnalysisView(amplitude 与长度固定为 8 的 bands),每帧复用,不要新建。readIntoView 在缺少组件时抛错,tryReadIntoView 返回 false。

限制与注意:组件 ID 为 1212;RAW 模式下增益无效;输出可超过 1.0;渲染器按帧时间预算更新,重载时可能跳帧,应使用 dt 插值驱动平滑动画;多音频源场景需为每个源单独添加分析,没有全局混音;VideoPlayer 音频同样适用,但视频须为渐进式文件(带直链的 MP4/WebM),HLS(.m3u8)流会写入零;pitch 改变会使频段能量上移,属预期行为;调用 readIntoView 前须先创建组件。权限方面无需额外场景权限,流媒体音频仍需在 scene.json 中配置 ALLOW_MEDIA_HOSTNAMES。示例场景及完整说明见参考文档与官方示例(audio-visualization)。