191 lines
4.7 KiB
Markdown
191 lines
4.7 KiB
Markdown
# CKPlayer 视频播放器集成说明
|
||
|
||
## 🎯 概述
|
||
|
||
已成功将项目中的VideoPlayer组件从原生HTML5 video + HLS.js 替换为 CKPlayer 播放器,并集成了public文件夹中的本地视频播放功能。
|
||
|
||
## 📁 文件结构
|
||
|
||
```
|
||
public/
|
||
├── ckplayer/ # CKPlayer播放器文件
|
||
│ ├── css/ # 样式文件
|
||
│ ├── js/ # 核心JS文件
|
||
│ ├── hls.js/ # HLS支持
|
||
│ └── language/ # 语言包
|
||
└── video/
|
||
└── first.mp4 # 本地视频文件
|
||
|
||
src/
|
||
├── components/
|
||
│ └── VideoPlayer.vue # 更新后的视频播放器组件
|
||
├── views/
|
||
│ ├── LocalVideoDemo.vue # 本地视频演示页面
|
||
│ └── CourseStudy.vue # 课程学习页面
|
||
└── router/
|
||
└── index.ts # 路由配置
|
||
```
|
||
|
||
## 🔧 主要更改
|
||
|
||
### 1. VideoPlayer组件重构
|
||
|
||
- **替换播放器**: 从HTML5 video + HLS.js 改为 CKPlayer
|
||
- **新增功能**: 支持本地视频播放 (`useLocalVideo` prop)
|
||
- **保持兼容**: 保留原有的props和events接口
|
||
- **动态加载**: 自动加载CKPlayer脚本和样式
|
||
|
||
### 2. 新增Props
|
||
|
||
```typescript
|
||
interface Props {
|
||
videoUrl?: string // 视频URL
|
||
title?: string // 视频标题
|
||
description?: string // 视频描述
|
||
poster?: string // 封面图
|
||
autoplay?: boolean // 自动播放
|
||
showControls?: boolean // 显示控制栏
|
||
placeholder?: string // 占位符文本
|
||
useLocalVideo?: boolean // 使用本地视频 (新增)
|
||
}
|
||
```
|
||
|
||
### 3. 本地视频支持
|
||
|
||
当 `useLocalVideo` 为 `true` 时,组件会自动播放 `/video/first.mp4` 文件。
|
||
|
||
## 🚀 使用方法
|
||
|
||
### 基本用法
|
||
|
||
```vue
|
||
<template>
|
||
<VideoPlayer
|
||
:video-url="videoUrl"
|
||
title="视频标题"
|
||
description="视频描述"
|
||
:autoplay="false"
|
||
:show-controls="true"
|
||
@play="onPlay"
|
||
@pause="onPause"
|
||
@ended="onEnded"
|
||
@error="onError"
|
||
/>
|
||
</template>
|
||
```
|
||
|
||
### 播放本地视频
|
||
|
||
```vue
|
||
<template>
|
||
<VideoPlayer
|
||
:use-local-video="true"
|
||
title="本地视频"
|
||
description="来自public/video/first.mp4的本地视频"
|
||
:autoplay="false"
|
||
:show-controls="true"
|
||
/>
|
||
</template>
|
||
```
|
||
|
||
### 支持的视频格式
|
||
|
||
- **MP4**: 直接播放
|
||
- **HLS (.m3u8)**: 使用hls.js插件
|
||
- **本地文件**: public/video/目录下的视频文件
|
||
|
||
## 📱 演示页面
|
||
|
||
### 本地视频演示页面
|
||
- 路径: `/local-video-demo`
|
||
- 功能: 专门演示本地视频播放
|
||
- 包含: 播放控制、状态显示、技术说明
|
||
|
||
## 🎮 控制方法
|
||
|
||
组件暴露的方法:
|
||
|
||
```typescript
|
||
// 播放控制
|
||
play() // 播放视频
|
||
pause() // 暂停视频
|
||
seek(time: number) // 跳转到指定时间
|
||
setVolume(volume: number) // 设置音量 (0-100)
|
||
retry() // 重试加载
|
||
```
|
||
|
||
## 📊 事件回调
|
||
|
||
```typescript
|
||
@play // 开始播放
|
||
@pause // 暂停播放
|
||
@ended // 播放结束
|
||
@timeupdate // 时间更新
|
||
@error // 播放错误
|
||
```
|
||
|
||
## 🔄 迁移指南
|
||
|
||
### 从旧版VideoPlayer迁移
|
||
|
||
1. **无需更改**: 现有的props和events保持兼容
|
||
2. **新功能**: 可选择使用 `useLocalVideo` 播放本地视频
|
||
3. **性能提升**: CKPlayer提供更好的播放性能和兼容性
|
||
|
||
### 示例迁移
|
||
|
||
```vue
|
||
<!-- 旧版本 -->
|
||
<VideoPlayer :video-url="url" />
|
||
|
||
<!-- 新版本 (完全兼容) -->
|
||
<VideoPlayer :video-url="url" />
|
||
|
||
<!-- 新版本 (使用本地视频) -->
|
||
<VideoPlayer :use-local-video="true" />
|
||
```
|
||
|
||
## 🛠️ 技术特性
|
||
|
||
- **自动脚本加载**: 动态加载CKPlayer资源
|
||
- **格式检测**: 自动识别视频格式并选择合适的播放方式
|
||
- **响应式设计**: 支持桌面端和移动端
|
||
- **错误处理**: 完善的错误处理和重试机制
|
||
- **内存管理**: 组件销毁时自动清理资源
|
||
|
||
## 🎨 样式定制
|
||
|
||
CKPlayer样式可通过CSS覆盖:
|
||
|
||
```css
|
||
:deep(.ckplayer) {
|
||
/* 自定义播放器样式 */
|
||
}
|
||
```
|
||
|
||
## 📝 注意事项
|
||
|
||
1. **文件路径**: 本地视频文件需放在 `public/video/` 目录下
|
||
2. **跨域问题**: 外部视频URL需要支持跨域访问
|
||
3. **浏览器兼容**: CKPlayer支持现代浏览器
|
||
4. **性能优化**: 大视频文件建议使用CDN或流媒体服务
|
||
|
||
## 🔍 调试
|
||
|
||
开发时可以通过浏览器控制台查看详细的加载和播放日志:
|
||
|
||
```javascript
|
||
// 查看CKPlayer初始化日志
|
||
console.log('CKPlayer initialized successfully')
|
||
|
||
// 查看视频URL变化
|
||
console.log('VideoPlayer: 视频URL变化:', newUrl)
|
||
```
|
||
|
||
## 🚀 下一步
|
||
|
||
- 可以添加更多本地视频文件到 `public/video/` 目录
|
||
- 可以扩展组件支持播放列表功能
|
||
- 可以添加字幕支持
|
||
- 可以集成视频分析和统计功能
|