bricks/docs/zh/videoplayer.md
2025-11-19 12:30:39 +08:00

81 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# VideoPlayer
**控件功能**一个支持多种视频格式MP4、HLS `.m3u8`、DASH `.mpd`)的视频播放器控件,内置播放控制条,支持播放/暂停、音量调节、倍速播放、音轨切换和全屏功能。
**类型**:普通控件
**父类控件**`bricks.VBox`
## 初始化参数
| 参数名 | 类型 | 说明 |
|----------|--------|------|
| `url` | String | 视频资源地址,支持 `.mp4``.m3u8`HLS`.mpd`DASH格式 |
| `autoplay`| Boolean | 是否自动播放,默认为 `false` |
> 示例:
> ```js
> new bricks.VideoPlayer({
> url: 'https://example.com/video.m3u8',
> autoplay: true
> });
> ```
## 主要事件
| 事件名 | 触发条件 |
|--------------|--------|
| `domon` | 控件被挂载到 DOM 时触发,用于初始化播放器 |
| `domoff` | 控件从 DOM 中移除时触发,用于销毁播放器资源 |
| `click` | 点击播放区域时显示控制栏,并启动隐藏倒计时 |
| `play_ok` | (由 `Iptv` 使用)视频成功开始播放时可通过外部监听上报 |
| `play_failed` | (由 `Iptv` 使用)视频加载失败或无法播放时触发上报 |
> 注意:`play_ok` 和 `play_failed` 并非直接由 `VideoPlayer` 派发,而是通过其子类或组合控件(如 `Iptv`)在状态判断后手动调用。
---
# Iptv
**控件功能**:专用于 IPTV 场景的播放控件,可动态获取频道信息并自动加载 `VideoPlayer` 进行播放,同时支持播放成功/失败时向服务器上报状态。
**类型**:容器控件
**父类控件**`bricks.VBox`
## 初始化参数
| 参数名 | 类型 | 说明 |
|------------------|--------|------|
| `iptv_data_url` | String | 获取频道数据的接口 URL返回包含 `url``tv_name``id` 等字段的 JSON 数据 |
| `playok_url` | String | 播放成功时上报的接口地址(可选) |
| `playfailed_url` | String | 播放失败时上报的接口地址(可选) |
> 示例:
> ```js
> new bricks.Iptv({
> iptv_data_url: '/api/iptv/channel',
> playok_url: '/api/report/playok',
> playfailed_url: '/api/report/playfailed'
> });
> ```
## 主要事件
| 事件名 | 触发条件 |
|--------------|--------|
| `play_ok` | 当内部 `VideoPlayer` 成功播放时,向 `playok_url` 发起 GET 请求进行上报 |
| `play_failed` | 当 `VideoPlayer` 播放失败时,向 `playfailed_url` 发起 GET 请求进行上报 |
> 说明:这两个事件是通过监听 `VideoPlayer` 的底层行为(如元数据加载完成且未出错)间接触发的,目前依赖于业务逻辑判断。
### 方法说明
- `setValue(data)`:更新当前播放频道的数据(如更换频道),会同步更新标题和视频源。
- 参数 `data`: 包含 `url`, `tv_name`, `id` 的对象
- 示例:
```js
iptvWidget.setValue({
id: "cctv1",
tv_name: "CCTV-1 综合",
url: "https://live.example.com/cctv1.m3u8"
});
```