# AudioPlayer

**控件功能**：用于播放音频文件，支持本地 URL 或流式加载，具备播放、暂停、自动播放、播放队列和状态检测等功能。  
**类型**：普通控件  
**父类控件**：`bricks.JsWidget`

## 初始化参数

| 参数名     | 类型    | 说明 |
|----------|--------|------|
| `url`     | String | 音频资源的 URL 地址，可选。构造时传入则立即加载。 |
| `autoplay`| Boolean| 是否在音频可播放后自动开始播放，默认为 `false`。 |

## 主要事件

| 事件名   | 触发条件 |
|--------|---------|
| `ended` | 当前音频播放结束且播放列表为空时触发。 |

---

# AudioRecorder

**控件功能**：实现音频录制功能，基于浏览器麦克风权限进行 WAV 格式录音，提供开始/停止录音、实时时间显示、录音上传和下载功能。依赖第三方库 Recorder.js（WAV 格式）。  
**类型**：容器控件（继承自 HBox，包含按钮与文本）  
**父类控件**：`bricks.HBox`

## 初始化参数

| 参数名        | 类型    | 说明 |
|-------------|--------|------|
| `upload_url`  | String | 录音结束后自动上传的目标 URL 地址，可选。 |
| `start_icon`  | String | 开始录音按钮显示的 SVG 图标路径，默认使用内置资源。 |
| `stop_icon`   | String | 停止录音按钮显示的 SVG 图标路径，默认使用内置资源。 |
| `icon_rate`   | Number | SVG 图标缩放比例，传递给内部 `Svg` 控件。 |

## 主要事件

| 事件名           | 触发条件 |
|----------------|---------|
| `record_started` | 用户点击开始录音，麦克风授权成功后触发。 |
| `record_ended`   | 用户停止录音，生成 blob 数据后触发，携带 `{data, url, duration}` 参数。 |
| `uploaded`       | 成功上传录音文件到服务器后触发，携带服务器返回结果。 |

> ⚠️ 注意：需引入外部库 [Recorder.js](https://gitee.com/xiangyuecn/Recorder) 支持录音功能。

---

# TextedAudioPlayer

**控件功能**：结合音频播放与文本展示的复合控件，适用于语音朗读+字幕同步场景。支持从流式响应中逐段加载音频与对应文本，并自动顺序播放。  
**类型**：容器控件（垂直布局 VBox）  
**父类控件**：`bricks.VBox`

## 初始化参数

无独立初始化参数，内部自动创建子控件：

- `AudioPlayer` 实例用于播放音频。
- `Text` 实例用于显示对应文本内容。
- `VScrollPanel` 提供文本区域滚动能力。

## 主要事件

无直接对外暴露的自定义事件。其行为由内部 `AudioPlayer` 的 `ended` 事件驱动，自动调用 `playnext()` 播放下一段内容。

> 内部通过 `set_stream_urls(response)` 接收流式 JSON 数据，每项应包含 `audio`（Base64 编码音频）、`text`（对应文字）、`done`（是否结束）字段。

---

> ✅ 所有控件均已通过 `bricks.Factory.register` 注册，可在模板或配置中通过字符串名称实例化。
