321 lines
6.4 KiB
Markdown
321 lines
6.4 KiB
Markdown
![]() |
# DPlayer 集成指南
|
|||
|
|
|||
|
## 什么是 DPlayer?
|
|||
|
|
|||
|
**DPlayer** 是由 [DIYGod](https://github.com/DIYGod) 开发的一个开源的 HTML5 视频播放器,具有以下特点:
|
|||
|
|
|||
|
- 🎨 **界面美观**:现代化的设计风格
|
|||
|
- 🎯 **轻量级**:体积小,加载快
|
|||
|
- 🌏 **中文友好**:由中国开发者开发,中文文档完善
|
|||
|
- 🎮 **功能丰富**:支持弹幕、快捷键、倍速播放等
|
|||
|
- 📱 **移动端适配**:响应式设计,支持移动设备
|
|||
|
|
|||
|
## 主要功能特性
|
|||
|
|
|||
|
### 基础功能
|
|||
|
- ✅ 播放/暂停控制
|
|||
|
- ✅ 音量控制
|
|||
|
- ✅ 进度条拖拽
|
|||
|
- ✅ 全屏切换
|
|||
|
- ✅ 倍速播放 (0.5x - 2x)
|
|||
|
|
|||
|
### 高级功能
|
|||
|
- 🎯 键盘快捷键支持
|
|||
|
- 🎨 自定义主题色
|
|||
|
- 📝 右键菜单自定义
|
|||
|
- 🎵 音频可视化
|
|||
|
- 📱 移动端手势支持
|
|||
|
|
|||
|
### 格式支持
|
|||
|
- MP4
|
|||
|
- WebM
|
|||
|
- Ogg
|
|||
|
- HLS (.m3u8)
|
|||
|
- FLV
|
|||
|
- 更多格式通过插件支持
|
|||
|
|
|||
|
## 安装和集成
|
|||
|
|
|||
|
### 方法1:CDN 引入(推荐用于快速测试)
|
|||
|
|
|||
|
```html
|
|||
|
<!-- 在 index.html 中引入 -->
|
|||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dplayer@1.27.1/dist/DPlayer.min.css">
|
|||
|
<script src="https://cdn.jsdelivr.net/npm/dplayer@1.27.1/dist/DPlayer.min.js"></script>
|
|||
|
```
|
|||
|
|
|||
|
### 方法2:NPM 安装(推荐用于生产环境)
|
|||
|
|
|||
|
```bash
|
|||
|
npm install dplayer
|
|||
|
```
|
|||
|
|
|||
|
然后在组件中导入:
|
|||
|
|
|||
|
```javascript
|
|||
|
import DPlayer from 'dplayer'
|
|||
|
import 'dplayer/dist/DPlayer.min.css'
|
|||
|
```
|
|||
|
|
|||
|
## 基础使用
|
|||
|
|
|||
|
### 创建播放器
|
|||
|
|
|||
|
```javascript
|
|||
|
const player = new DPlayer({
|
|||
|
container: document.getElementById('dplayer'),
|
|||
|
video: {
|
|||
|
url: 'video.mp4',
|
|||
|
type: 'auto'
|
|||
|
},
|
|||
|
autoplay: false,
|
|||
|
theme: '#007bff',
|
|||
|
lang: 'zh-cn'
|
|||
|
})
|
|||
|
```
|
|||
|
|
|||
|
### 事件监听
|
|||
|
|
|||
|
```javascript
|
|||
|
player.on('play', () => {
|
|||
|
console.log('视频开始播放')
|
|||
|
})
|
|||
|
|
|||
|
player.on('pause', () => {
|
|||
|
console.log('视频暂停')
|
|||
|
})
|
|||
|
|
|||
|
player.on('ended', () => {
|
|||
|
console.log('视频播放结束')
|
|||
|
})
|
|||
|
|
|||
|
player.on('error', () => {
|
|||
|
console.log('播放出错')
|
|||
|
})
|
|||
|
```
|
|||
|
|
|||
|
## 配置选项
|
|||
|
|
|||
|
### 基础配置
|
|||
|
|
|||
|
```javascript
|
|||
|
const options = {
|
|||
|
container: document.getElementById('dplayer'), // 容器元素
|
|||
|
video: {
|
|||
|
url: 'video.mp4', // 视频地址
|
|||
|
type: 'auto', // 视频类型:auto, normal, hls, flv
|
|||
|
defaultQuality: 0, // 默认画质
|
|||
|
pic: 'poster.jpg', // 封面图
|
|||
|
thumbnails: 'thumbnails.jpg' // 缩略图
|
|||
|
},
|
|||
|
autoplay: false, // 自动播放
|
|||
|
theme: '#007bff', // 主题色
|
|||
|
lang: 'zh-cn', // 语言:zh-cn, en
|
|||
|
hotkey: true, // 启用快捷键
|
|||
|
preload: 'auto', // 预加载:auto, metadata, none
|
|||
|
volume: 0.8, // 默认音量
|
|||
|
playbackSpeed: [0.5, 0.75, 1, 1.25, 1.5, 2], // 倍速选项
|
|||
|
contextmenu: [ // 右键菜单
|
|||
|
{
|
|||
|
text: '关于 DPlayer',
|
|||
|
link: 'https://github.com/DIYGod/DPlayer'
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### 高级配置
|
|||
|
|
|||
|
```javascript
|
|||
|
const advancedOptions = {
|
|||
|
// 弹幕配置
|
|||
|
danmaku: {
|
|||
|
id: 'dplayer-danmaku',
|
|||
|
api: 'https://api.prprpr.me/dplayer/',
|
|||
|
token: 'token',
|
|||
|
maximum: 1000,
|
|||
|
addition: ['https://api.prprpr.me/dplayer/bilibili?aid=4157142'],
|
|||
|
user: 'DIYGod',
|
|||
|
bottom: '15%',
|
|||
|
unlimited: true
|
|||
|
},
|
|||
|
|
|||
|
// 字幕配置
|
|||
|
subtitle: {
|
|||
|
url: 'subtitle.vtt',
|
|||
|
type: 'webvtt',
|
|||
|
fontSize: '20px',
|
|||
|
bottom: '10%',
|
|||
|
color: '#fff'
|
|||
|
},
|
|||
|
|
|||
|
// 画质切换
|
|||
|
video: {
|
|||
|
url: [
|
|||
|
{
|
|||
|
name: '1080P',
|
|||
|
url: 'video-1080p.mp4'
|
|||
|
},
|
|||
|
{
|
|||
|
name: '720P',
|
|||
|
url: 'video-720p.mp4'
|
|||
|
}
|
|||
|
],
|
|||
|
defaultQuality: 0
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
## 在 Vue 项目中使用
|
|||
|
|
|||
|
### 创建 DPlayer 组件
|
|||
|
|
|||
|
```vue
|
|||
|
<template>
|
|||
|
<div class="video-player-wrapper">
|
|||
|
<div ref="dplayerContainer" class="dplayer-container"></div>
|
|||
|
</div>
|
|||
|
</template>
|
|||
|
|
|||
|
<script setup>
|
|||
|
import { ref, onMounted, onUnmounted } from 'vue'
|
|||
|
|
|||
|
const dplayerContainer = ref()
|
|||
|
let player = null
|
|||
|
|
|||
|
onMounted(() => {
|
|||
|
// 确保 DPlayer 已加载
|
|||
|
if (window.DPlayer) {
|
|||
|
initPlayer()
|
|||
|
} else {
|
|||
|
loadDPlayer().then(() => {
|
|||
|
initPlayer()
|
|||
|
})
|
|||
|
}
|
|||
|
})
|
|||
|
|
|||
|
const loadDPlayer = () => {
|
|||
|
return new Promise((resolve) => {
|
|||
|
const cssLink = document.createElement('link')
|
|||
|
cssLink.rel = 'stylesheet'
|
|||
|
cssLink.href = 'https://cdn.jsdelivr.net/npm/dplayer@1.27.1/dist/DPlayer.min.css'
|
|||
|
document.head.appendChild(cssLink)
|
|||
|
|
|||
|
const script = document.createElement('script')
|
|||
|
script.src = 'https://cdn.jsdelivr.net/npm/dplayer@1.27.1/dist/DPlayer.min.js'
|
|||
|
script.onload = resolve
|
|||
|
document.head.appendChild(script)
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
const initPlayer = () => {
|
|||
|
player = new window.DPlayer({
|
|||
|
container: dplayerContainer.value,
|
|||
|
video: {
|
|||
|
url: '/video/first.mp4',
|
|||
|
type: 'auto'
|
|||
|
},
|
|||
|
autoplay: false,
|
|||
|
theme: '#007bff',
|
|||
|
lang: 'zh-cn',
|
|||
|
hotkey: true
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
onUnmounted(() => {
|
|||
|
if (player) {
|
|||
|
player.destroy()
|
|||
|
}
|
|||
|
})
|
|||
|
</script>
|
|||
|
|
|||
|
<style scoped>
|
|||
|
.video-player-wrapper {
|
|||
|
width: 100%;
|
|||
|
max-width: 800px;
|
|||
|
margin: 0 auto;
|
|||
|
}
|
|||
|
|
|||
|
.dplayer-container {
|
|||
|
width: 100%;
|
|||
|
aspect-ratio: 16/9;
|
|||
|
}
|
|||
|
</style>
|
|||
|
```
|
|||
|
|
|||
|
## 样式定制
|
|||
|
|
|||
|
### 自定义主题色
|
|||
|
|
|||
|
```css
|
|||
|
/* 修改播放器主题色 */
|
|||
|
.dplayer {
|
|||
|
--dplayer-theme: #007bff;
|
|||
|
}
|
|||
|
|
|||
|
/* 自定义进度条颜色 */
|
|||
|
.dplayer .dplayer-bar-wrap .dplayer-bar .dplayer-played {
|
|||
|
background: #007bff;
|
|||
|
}
|
|||
|
|
|||
|
/* 自定义控制按钮颜色 */
|
|||
|
.dplayer .dplayer-icons .dplayer-icon {
|
|||
|
color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.dplayer .dplayer-icons .dplayer-icon:hover {
|
|||
|
color: #007bff;
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### 响应式设计
|
|||
|
|
|||
|
```css
|
|||
|
/* 移动端适配 */
|
|||
|
@media (max-width: 768px) {
|
|||
|
.dplayer {
|
|||
|
font-size: 14px;
|
|||
|
}
|
|||
|
|
|||
|
.dplayer .dplayer-icons .dplayer-icon {
|
|||
|
font-size: 16px;
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
## 快捷键支持
|
|||
|
|
|||
|
DPlayer 默认支持以下快捷键:
|
|||
|
|
|||
|
- `空格键` - 播放/暂停
|
|||
|
- `←` - 后退 10 秒
|
|||
|
- `→` - 前进 10 秒
|
|||
|
- `↑` - 音量 +10%
|
|||
|
- `↓` - 音量 -10%
|
|||
|
- `F` - 全屏切换
|
|||
|
- `M` - 静音切换
|
|||
|
|
|||
|
## 与 CKPlayer 对比
|
|||
|
|
|||
|
| 特性 | CKPlayer | DPlayer |
|
|||
|
|------|----------|---------|
|
|||
|
| 界面美观度 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|||
|
| 功能丰富度 | ⭐⭐⭐ | ⭐⭐⭐⭐ |
|
|||
|
| 移动端支持 | ⭐⭐⭐ | ⭐⭐⭐⭐ |
|
|||
|
| 中文支持 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|||
|
| 社区活跃度 | ⭐⭐ | ⭐⭐⭐⭐ |
|
|||
|
| 文档质量 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|||
|
| 学习成本 | ⭐⭐⭐⭐ | ⭐⭐⭐ |
|
|||
|
|
|||
|
## 总结
|
|||
|
|
|||
|
**DPlayer 是一个优秀的视频播放器选择**,特别适合:
|
|||
|
|
|||
|
- 🎯 需要美观界面的项目
|
|||
|
- 🌏 中文用户群体
|
|||
|
- 📱 重视移动端体验
|
|||
|
- 🎨 需要自定义主题的项目
|
|||
|
- ⚡ 追求轻量级解决方案
|
|||
|
|
|||
|
相比当前的 CKPlayer,DPlayer 提供了更好的用户体验和更丰富的功能,是升级视频播放器的理想选择。
|