# AudioPlayer API 文档 本文档由 `DeepSeek R1` 模型生成并微调。 --- ## 类描述 音频系统的核心控制器,负责管理音频上下文、路由系统、效果器工厂和全局音频参数。支持多音轨管理和 3D 音频空间化配置。 ```mermaid graph LR AudioPlayer --> EventEmitter click EventEmitter "https://nodejs.org/api/events.html#class-eventemitter" ``` --- ## 核心架构 ```mermaid graph TD Player[AudioPlayer] --> Sources[音频源工厂] Player --> Effects[效果器工厂] Player --> Routes[路由系统] Player --> Listener[3D 听者配置] ``` --- ## 属性说明 | 属性名 | 类型 | 说明 | | ------------- | ------------------------- | ------------------------ | | `ac` | `AudioContext` | Web Audio API 上下文实例 | | `audioRoutes` | `Map` | 已注册的音频路由表 | | `gain` | `GainNode` | 全局音量控制节点 | --- ## 方法说明 此处暂时只列出方法的简易说明。方法理解难度不高,如果需要可以自行查看代码以及其相关注释来查看如何使用。 ### 音频源工厂方法 | 方法名 | 返回值 | 说明 | | ----------------------- | -------------------- | ----------------------------- | | `createSource(Source)` | `AudioSource` | 创建自定义音频源 | | `createStreamSource()` | `AudioStreamSource` | 创建流式音频源(直播/长音频) | | `createElementSource()` | `AudioElementSource` | 基于 HTML5 Audio 元素的音源 | | `createBufferSource()` | `AudioBufferSource` | 基于 AudioBuffer 的静态音源 | ### 效果器工厂方法 | 方法名 | 返回值 | 说明 | | ----------------------------- | --------------------- | ---------------------------- | | `createEffect(Effect)` | `AudioEffect` | 创建自定义效果器 | | `createVolumeEffect()` | `VolumeEffect` | 全局音量控制器 | | `createStereoEffect()` | `StereoEffect` | 立体声场控制器 | | `createChannelVolumeEffect()` | `ChannelVolumeEffect` | 多声道独立音量控制(6 声道) | | `createDelayEffect()` | `DelayEffect` | 精确延迟效果器 | | `createEchoEffect()` | `EchoEffect` | 回声效果器(带反馈循环) | ### 路由管理方法 | 方法名 | 参数 | 说明 | | --------------------- | -------------------- | -------------- | | `createRoute(source)` | `AudioSource` | 创建新播放路由 | | `addRoute(id, route)` | `string, AudioRoute` | 注册命名路由 | | `getRoute(id)` | `string` | 获取已注册路由 | | `removeRoute(id)` | `string` | 移除指定路由 | ### 全局控制方法 | 方法名 | 参数 | 说明 | | ------------------------------- | ------------------------ | -------------------- | | `setVolume(volume)` | `number` (0.0-1.0) | 设置全局音量 | | `getVolume()` | - | 获取当前全局音量 | | `setListenerPosition(x,y,z)` | `number, number, number` | 设置听者 3D 空间坐标 | | `setListenerOrientation(x,y,z)` | `number, number, number` | 设置听者朝向 | | `setListenerUp(x,y,z)` | `number, number, number` | 设置听者头顶朝向 | --- ## 使用示例 ### 基础音乐播放 ```typescript import { audioPlayer } from '@user/client-modules'; // 创建音频源(以音频缓冲为例) const bgmSource = audioPlayer.createBufferSource(); // 创建播放路由 const bgmRoute = audioPlayer.createRoute(bgmSource); // 添加效果链 bgmRoute.addEffect([ audioPlayer.createStereoEffect(), audioPlayer.createVolumeEffect() ]); // 播放控制 audioPlayer.play('bgm'); audioPlayer.pause('bgm'); ``` ### 3D 环境音效 ```typescript import { audioPlayer } from '@user/client-modules'; // 配置3D听者 audioPlayer.setListenerPosition(0, 0, 0); // 听者在原点 audioPlayer.setListenerOrientation(0, 0, -1); // 面朝屏幕内 // 创建环境音源 const ambientSource = audioPlayer.createBufferSource(); await ambientSource.setBuffer(/* 这里填写音频缓冲 */); // 配置3D音效路由 const ambientRoute = audioPlayer.createRoute(ambientSource); const stereo = audioPlayer.createStereoEffect(); stereo.setPosition(5, 2, -3); // 音源位于右前方高处 ambientRoute.addEffect(stereo); // 循环播放 ambientRoute.setLoop(true); audioPlayer.addRoute('ambient', ambientRoute); audioPlayer.play('ambient'); ``` --- ## 生命周期管理 ```mermaid sequenceDiagram participant User participant AudioPlayer participant AudioContext User->>AudioPlayer: new AudioPlayer() AudioPlayer->>AudioContext: 创建音频上下文 User->>AudioPlayer: createRoute() AudioPlayer->>AudioRoute: 实例化路由 User->>AudioPlayer: play() AudioPlayer->>AudioContext: 启动音频时钟 loop 播放周期 AudioPlayer->>AudioRoute: 更新状态 end User->>AudioPlayer: stop() AudioPlayer->>AudioRoute: 释放资源 AudioPlayer->>AudioContext: 关闭上下文 ``` --- ## 注意事项 1. **空间音频配置** 3D 效果需统一坐标系: ```txt (0,0,0) 屏幕中心 X+ → 右 Y+ ↑ 上 Z+ ⊙ 朝向用户 ```