# Bricks Video 模块技术文档 > 基于 `video.js` 实现的视频播放组件及 IPTV 集成控件 --- ## 概述 本模块提供了两个核心类: - **`bricks.Video`**:基于 [Video.js](https://videojs.com) 的视频播放组件,封装了常见播放控制逻辑和事件处理。 - **`bricks.Iptv`**:IPTV 专用容器组件,集成频道信息展示与播放状态上报功能。 该模块适用于 Web 端流媒体(如 HLS、MP4)播放场景,支持自动播放、全屏、错误监听以及播放成功/失败回调上报。 --- ## 依赖说明 - **[Video.js](https://videojs.com)**:必须在全局环境中加载 Video.js 库。 - `window.bricks`:基础框架对象,提供布局系统 (`Layout`, `VBox`)、HTTP 工具 (`HttpJson`, `HttpText`) 和事件调度机制。 - `schedule_once(fn, delay)`:延迟执行函数(单位:秒),用于异步初始化。 --- ## 1. `bricks.Video` 类 继承自 `bricks.Layout`,封装 Video.js 播放器实例。 ### 构造函数 ```js new bricks.Video(opts) ``` #### 参数 `opts` | 参数 | 类型 | 必填 | 描述 | |------|------|------|------| | `url` | String | 是 | 视频资源 URL | | `type` | String | 否 | MIME 类型(如 `'video/mp4'`),若未提供则自动推断 | | `autoplay` | Boolean | 否 | 是否自动播放,默认 `false` | | `fullscreen` | Boolean | 否 | 是否进入全屏模式,默认不启用 | #### 示例 ```js const video = new bricks.Video({ url: 'https://example.com/stream.m3u8', autoplay: true, fullscreen: true }); ``` --- ### 样式设置 构造时自动应用以下 CSS 类和样式: ```js this.set_csses('video-js', 'vjs-big-play-centered', 'vjs-fluid'); this.set_style('object-fit', 'contain'); this.set_style('width', '100%'); this.set_style('height', '100%'); ``` > ⚠️ 注意:需确保引入 Video.js 的 CSS 文件以正确渲染 UI。 --- ### 事件系统 通过 `dispatch()` 触发以下自定义事件: | 事件名 | 触发条件 | 回调参数格式 | |------------|--------------------|------------------------------| | `play_ok` | 视频开始播放 | `{ src: 当前视频URL }` | | `play_end` | 视频播放结束 | `{ src: 当前视频URL }` | | `play_failed` | 播放出错(网络/解码等) | `{ src: 当前视频URL }` | 可通过 `bind(event, handler)` 监听这些事件。 --- ### 方法列表 #### `create()` 创建原生 `