mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-30 11:23:24 +08:00
5.6 KiB
5.6 KiB
AudioPlayer API 文档
本文档由 DeepSeek R1
模型生成并微调。
类描述
音频系统的核心控制器,负责管理音频上下文、路由系统、效果器工厂和全局音频参数。支持多音轨管理和 3D 音频空间化配置。
graph LR
AudioPlayer --> EventEmitter
click EventEmitter "https://nodejs.org/api/events.html#class-eventemitter"
核心架构
graph TD
Player[AudioPlayer] --> Sources[音频源工厂]
Player --> Effects[效果器工厂]
Player --> Routes[路由系统]
Player --> Listener[3D 听者配置]
属性说明
属性名 | 类型 | 说明 |
---|---|---|
ac |
AudioContext |
Web Audio API 上下文实例 |
audioRoutes |
Map<string, AudioRoute> |
已注册的音频路由表 |
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 |
设置听者头顶朝向 |
使用示例
基础音乐播放
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 环境音效
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');
生命周期管理
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: 关闭上下文
注意事项
-
空间音频配置
3D 效果需统一坐标系:(0,0,0) 屏幕中心 X+ → 右 Y+ ↑ 上 Z+ ⊙ 朝向用户