OL-LearnPlatform/CKPLAYER_INTEGRATION.md
2025-08-04 02:13:12 +08:00

191 lines
4.7 KiB
Markdown
Raw 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.

# 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/` 目录
- 可以扩展组件支持播放列表功能
- 可以添加字幕支持
- 可以集成视频分析和统计功能