# study-play **Repository Path**: consuy1382/study-play ## Basic Information - **Project Name**: study-play - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-15 - **Last Updated**: 2026-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # study-player 独立的学习视频播放器组件库(Vue 2)。核心能力:HLS/MP4 播放、防快进(未学完限制拖拽)、防作弊(切屏检测 / 暂停超时归零 / 随机确认弹窗)、进度上报与续播。 --- ## 目录结构 ``` study-player/ ├── src/ │ ├── index.js # 统一出口:install 插件 + 具名导出 │ ├── components/ │ │ ├── VideoPlayer.vue # 播放内核(封装 mui-player + hls.js) │ │ ├── StudyPlayerWrapper.vue# 业务壳:注入取流/上报/防作弊,串联内核与 antiCheat │ │ ├── antiCheat.js # 防作弊逻辑工厂 createAntiCheat() │ │ ├── ProgressBar.vue # 进度条(含防快进上限) │ │ └── VolumeControl.vue # 音量滑块 │ └── demo/ # 本地调试演示页 │ ├── App.vue │ └── main.js ├── index.html ├── vite.config.js # 同时支持 dev(demo) 与 build(库) └── package.json ``` | 文件 | 职责 | 外部依赖 | |---|---|---| | `VideoPlayer.vue` | 只接收可直接播放的 `src`,处理 HLS/MP4 解析、进度/缓冲/全屏 | `mui-player`、`hls.js` | | `StudyPlayerWrapper.vue` | 通过 props 注入 `resolveSrc`(取流) / `onProgress`(上报) / `antiCheatConfig`(防作弊) / `alert`(弹窗) | 无 | | `antiCheat.js` | 纯逻辑工厂,监听切屏/暂停/随机时间点触发确认弹窗 | 无 | | `ProgressBar.vue` | 进度展示 + 拖拽;`seekable=false` 时拖拽上限被 `maxTime` 限制 | 无 | | `VolumeControl.vue` | 音量 UI | 无 | | `index.js` | `Vue.use(StudyPlayer)` 或按需 `import` | 无 | --- ## 依赖(peerDependencies) | 依赖 | 版本 | 说明 | |---|---|---| | `vue` | `^2.6.0 \|\| ^2.7.0` | 框架本身 | | `mui-player` | `^1.6.0` | 播放器内核(仅 `VideoPlayer.vue` 引用) | | `hls.js` | `^1.1.5` | m3u8 流解析(Chrome 不原生支持 HLS) | > **不依赖 element-ui**:组件只用 `alert` 这个 prop 函数(调用方注入,可返回 Promise)。Demo 用自实现的极简弹窗,不引入任何 UI 库。 构建链:`vite` + `@vitejs/plugin-vue2` + `sass`(`