|
@@ -1,29 +1,44 @@
|
|
|
---
|
|
|
-search: english
|
|
|
+sidebar: auto
|
|
|
---
|
|
|
|
|
|
+# Guide
|
|
|
+
|
|
|
+<link rel="stylesheet" href="">
|
|
|
+<script src="https://cdn.jsdelivr.net/npm/flv.js/dist/flv.min.js"></script>
|
|
|
+<script src="https://cdn.jsdelivr.net/npm/hls.js/dist/hls.min.js"></script>
|
|
|
+<script src="https://cdn.jsdelivr.net/npm/dashjs/dist/dash.all.min.js"></script>
|
|
|
+<script src="https://cdn.jsdelivr.net/webtorrent/latest/webtorrent.min.js"></script>
|
|
|
+
|
|
|
# DPlayer
|
|
|
|
|
|
🍭 Wow, such a lovely HTML5 danmaku video player
|
|
|
|
|
|
-## Special Sponsors
|
|
|
+<DPlayer :immediate="true"></DPlayer>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## Special Thanks
|
|
|
+
|
|
|
+### Special Sponsors
|
|
|
+
|
|
|
+
|
|
|
|
|
|
<a href="https://www.polyv.net/?f=git_DPlayer-20190518-02" target="_blank">
|
|
|
<img width="600px" src="https://i.loli.net/2019/06/03/5cf4028f7b8f716387.gif">
|
|
|
</a>
|
|
|
|
|
|
+
|
|
|
+
|
|
|
<a href="https://www.9ccms.net" target="_blank">
|
|
|
- <img width="330px" src="https://i.imgur.com/YBV6kfb.png">
|
|
|
+ <img width="280px" src="https://i.imgur.com/YBV6kfb.png">
|
|
|
</a>
|
|
|
|
|
|
-## Sponsors
|
|
|
+### Sponsors
|
|
|
|
|
|
<a href="https://www.dogecloud.com/?ref=dplayer" target="_blank">
|
|
|
<img width="222px" src="https://i.imgur.com/BBKXPAp.png">
|
|
|
</a>
|
|
|
-<a href="https://console.upyun.com/register/?invite=BkLZ2Xqob" target="_blank">
|
|
|
- <img width="222px" src="https://imgur.com/apG1uKf.png">
|
|
|
-</a>
|
|
|
|
|
|
## Installation
|
|
|
|
|
@@ -41,9 +56,9 @@ yarn add dplayer
|
|
|
|
|
|
## Quick Start
|
|
|
|
|
|
-<div class="dplayer-wrap">
|
|
|
- <div id="dplayer2"><button class="docute-button load">Click to load player</div>
|
|
|
-</div>
|
|
|
+At first, let's initialize a simplest DPlayer
|
|
|
+
|
|
|
+Load DPlayer files
|
|
|
|
|
|
```html
|
|
|
<link rel="stylesheet" href="DPlayer.min.css">
|
|
@@ -51,6 +66,17 @@ yarn add dplayer
|
|
|
<script src="DPlayer.min.js"></script>
|
|
|
```
|
|
|
|
|
|
+Or work with module bundler:
|
|
|
+
|
|
|
+```js
|
|
|
+import 'dplayer/dist/DPlayer.min.css';
|
|
|
+import DPlayer from 'dplayer';
|
|
|
+
|
|
|
+const dp = new DPlayer(options);
|
|
|
+```
|
|
|
+
|
|
|
+Initialization in js:
|
|
|
+
|
|
|
```js
|
|
|
const dp = new DPlayer({
|
|
|
container: document.getElementById('dplayer'),
|
|
@@ -70,39 +96,32 @@ const dp = new DPlayer({
|
|
|
});
|
|
|
```
|
|
|
|
|
|
-Work with module bundler:
|
|
|
-
|
|
|
-```js
|
|
|
-import 'dplayer/dist/DPlayer.min.css';
|
|
|
-import DPlayer from 'dplayer';
|
|
|
-
|
|
|
-const dp = new DPlayer(options);
|
|
|
-```
|
|
|
-
|
|
|
## Options
|
|
|
|
|
|
+You can custom your player instance by those options
|
|
|
+
|
|
|
Name | Default | Description
|
|
|
----|-------|----
|
|
|
container | document.querySelector('.dplayer') | player container
|
|
|
-live | false | enable live mode, [see more details](http://dplayer.js.org/#/home?id=live)
|
|
|
+live | false | enable live mode, see [#live](#live)
|
|
|
autoplay | false | video autoplay
|
|
|
theme | '#b7daff' | main color
|
|
|
loop | false | video loop
|
|
|
lang | navigator.language.toLowerCase() | values: 'en', 'zh-cn', 'zh-tw'
|
|
|
screenshot | false | enable screenshot, if true, video and video poster must enable Cross-Origin
|
|
|
-hotkey | true | enable hotkey
|
|
|
+hotkey | true | enable hotkey, support FF, FR, volume control, play & pause
|
|
|
preload | 'auto' | values: 'none', 'metadata', 'auto'
|
|
|
volume | 0.7 | default volume, notice that player will remember user setting, default volume will not work after user set volume themselves
|
|
|
logo | - | showing logo in the top left corner, you can adjust its size and position by CSS
|
|
|
-apiBackend | - | getting and sending danmaku in your way, [see more details](http://dplayer.js.org/#/home?id=live)
|
|
|
+apiBackend | - | getting and sending danmaku in your way, see [#live](#live)
|
|
|
video | - | video info
|
|
|
-video.quality | - | [see more details](http://dplayer.js.org/#/home?id=quality-switching)
|
|
|
-video.defaultQuality | - | [see more details](http://dplayer.js.org/#/home?id=quality-switching)
|
|
|
+video.quality | - | see [#Quality switching](#quality-switching)
|
|
|
+video.defaultQuality | - | see [#Quality switching](#quality-switching)
|
|
|
video.url | - | video url
|
|
|
video.pic | - | video poster
|
|
|
video.thumbnails | - | video thumbnails, generated by [DPlayer-thumbnails](https://github.com/MoePlayer/DPlayer-thumbnails)
|
|
|
-video.type | 'auto' | values: 'auto', 'hls', 'flv', 'dash', 'webtorrent', 'normal' or other custom type, [see more details](http://dplayer.js.org/#/home?id=mse-support)
|
|
|
-video.customType | - | custom video type, [see more details](http://dplayer.js.org/#/home?id=mse-support)
|
|
|
+video.type | 'auto' | values: 'auto', 'hls', 'flv', 'dash', 'webtorrent', 'normal' or other custom type, see [#MSE support](#mse-support)
|
|
|
+video.customType | - | custom video type, see [#MSE support](#mse-support)
|
|
|
subtitle | - | external subtitle
|
|
|
subtitle.url | `required` | subtitle url
|
|
|
subtitle.type | 'webvtt' | subtitle type, values: 'webvtt', 'ass', but only webvtt is supported for now
|
|
@@ -111,10 +130,10 @@ subtitle.bottom | '40px' | the distance between the subtitle and player bottom,
|
|
|
subtitle.color | '#fff' | subtitle color
|
|
|
danmaku | - | showing danmaku
|
|
|
danmaku.id | `required` | danamku pool id, it must be unique
|
|
|
-danmaku.api | `required` | [see more details](http://dplayer.js.org/#/home?id=danmaku-api)
|
|
|
+danmaku.api | `required` | see [#Danmaku API](#danmaku-api)
|
|
|
danmaku.token | - | back end verification token
|
|
|
danmaku.maximum | - | danmaku maximum quantity
|
|
|
-danmaku.addition | - | additional danmaku, [see more details](http://dplayer.js.org/#/home?id=bilibili-danmaku)
|
|
|
+danmaku.addition | - | additional danmaku, see [#bilibili danmaku](#bilibili-danmaku)
|
|
|
danmaku.user | 'DIYgod' | danmaku user name
|
|
|
danmaku.bottom | - | values like: '10px' '10%', the distance between the danmaku bottom and player bottom, in order to prevent warding off subtitle
|
|
|
danmaku.unlimited | false | display all danmaku even though danmaku overlap, notice that player will remember user setting, default setting will not work after user set it themselves
|
|
@@ -122,12 +141,6 @@ contextmenu | [] | custom contextmenu
|
|
|
highlight | [] | custom time markers upon progress bar
|
|
|
mutex | true | prevent to play multiple player at the same time, pause other players when this player start play
|
|
|
|
|
|
-For example:
|
|
|
-
|
|
|
-<div class="dplayer-wrap">
|
|
|
- <div id="dplayer3"><button class="docute-button load">Click to load player</div>
|
|
|
-</div>
|
|
|
-
|
|
|
```js
|
|
|
const dp = new DPlayer({
|
|
|
container: document.getElementById('player'),
|
|
@@ -365,9 +378,22 @@ Player events
|
|
|
|
|
|
Set video url and video type in `video.quality`, set default quality by `video.defaultQuality`.
|
|
|
|
|
|
-<div class="dplayer-wrap">
|
|
|
- <div id="dplayer4"><button class="docute-button load">Click to load player</div>
|
|
|
-</div>
|
|
|
+<DPlayer :options="{
|
|
|
+ video: {
|
|
|
+ quality: [{
|
|
|
+ name: 'HD',
|
|
|
+ url: 'https://api.dogecloud.com/player/get.m3u8?vcode=5ac682e6f8231991&userId=17&ext=.m3u8',
|
|
|
+ type: 'hls'
|
|
|
+ }, {
|
|
|
+ name: 'SD',
|
|
|
+ url: 'https://api.dogecloud.com/player/get.mp4?vcode=5ac682e6f8231991&userId=17&ext=.mp4',
|
|
|
+ type: 'normal'
|
|
|
+ }],
|
|
|
+ defaultQuality: 0,
|
|
|
+ pic: 'https://i.loli.net/2019/06/06/5cf8c5d9c57b510947.png',
|
|
|
+ thumbnails: 'https://i.loli.net/2019/06/06/5cf8c5d9cec8510758.jpg'
|
|
|
+ }
|
|
|
+}"></DPlayer>
|
|
|
|
|
|
```js
|
|
|
const dp = new DPlayer({
|
|
@@ -426,9 +452,12 @@ const option = {
|
|
|
|
|
|
It requires the library [hls.js](https://github.com/video-dev/hls.js) and it should be loaded before `DPlayer.min.js`.
|
|
|
|
|
|
-<div class="dplayer-wrap">
|
|
|
- <div id="dplayer5"><button class="docute-button load">Click to load player</div>
|
|
|
-</div>
|
|
|
+<DPlayer :options="{
|
|
|
+ video: {
|
|
|
+ url: 'https://api.dogecloud.com/player/get.m3u8?vcode=5ac682e6f8231991&userId=17&ext=.m3u8',
|
|
|
+ type: 'hls'
|
|
|
+ }
|
|
|
+}"></DPlayer>
|
|
|
|
|
|
```html
|
|
|
<link rel="stylesheet" href="DPlayer.min.css">
|
|
@@ -469,10 +498,6 @@ const dp = new DPlayer({
|
|
|
|
|
|
It requires the library [dash.js](https://github.com/Dash-Industry-Forum/dash.js) and it should be loaded before `DPlayer.min.js`.
|
|
|
|
|
|
-<div class="dplayer-wrap">
|
|
|
- <div id="dplayer6"><button class="docute-button load">Click to load player</div>
|
|
|
-</div>
|
|
|
-
|
|
|
```html
|
|
|
<link rel="stylesheet" href="DPlayer.min.css">
|
|
|
<div id="dplayer"></div>
|
|
@@ -539,9 +564,12 @@ const dp = new DPlayer({
|
|
|
|
|
|
It requires the library [flv.js](https://github.com/Bilibili/flv.js) and it should be loaded before `DPlayer.min.js`.
|
|
|
|
|
|
-<div class="dplayer-wrap">
|
|
|
- <div id="dplayer7"><button class="docute-button load">Click to load player</div>
|
|
|
-</div>
|
|
|
+<DPlayer :options="{
|
|
|
+ video: {
|
|
|
+ url: 'https://api.dogecloud.com/player/get.flv?vcode=5ac682e6f8231991&userId=17&ext=.flv',
|
|
|
+ type: 'flv'
|
|
|
+ }
|
|
|
+}"></DPlayer>
|
|
|
|
|
|
```html
|
|
|
<link rel="stylesheet" href="DPlayer.min.css">
|
|
@@ -585,9 +613,12 @@ const dp = new DPlayer({
|
|
|
|
|
|
It requires the library [webtorrent](https://github.com/webtorrent/webtorrent) and it should be loaded before `DPlayer.min.js`.
|
|
|
|
|
|
-<div class="dplayer-wrap">
|
|
|
- <div id="dplayer8"><button class="docute-button load">Click to load player</div>
|
|
|
-</div>
|
|
|
+<DPlayer :options="{
|
|
|
+ video: {
|
|
|
+ url: 'magnet:?xt=urn:btih:08ada5a7a6183aae1e09d831df6748d566095a10&dn=Sintel&tr=udp%3A%2F%2Fexplodie.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.empire-js.us%3A1337&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com&ws=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2F&xs=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2Fsintel.torrent',
|
|
|
+ type: 'webtorrent'
|
|
|
+ }
|
|
|
+}"></DPlayer>
|
|
|
|
|
|
```html
|
|
|
<link rel="stylesheet" href="DPlayer.min.css">
|
|
@@ -636,10 +667,6 @@ const dp = new DPlayer({
|
|
|
|
|
|
DPlayer can work with any MSE library via `customType` option.
|
|
|
|
|
|
-<div class="dplayer-wrap">
|
|
|
- <div id="dplayer10"><button class="docute-button load">Click to load player</div>
|
|
|
-</div>
|
|
|
-
|
|
|
```html
|
|
|
<link rel="stylesheet" href="DPlayer.min.css">
|
|
|
<div id="dplayer"></div>
|
|
@@ -667,12 +694,16 @@ const dp = new DPlayer({
|
|
|
|
|
|
## Live
|
|
|
|
|
|
-<div class="dplayer-wrap">
|
|
|
- <div id="dplayer9"><button class="docute-button load">Click to load player</div>
|
|
|
-</div>
|
|
|
-
|
|
|
You can use DPlayer in live, but if you want live danmaku, you should prepare a WebSocket backend yourself.
|
|
|
|
|
|
+<DPlayer :options="{
|
|
|
+ live: true,
|
|
|
+ video: {
|
|
|
+ url: 'https://api.dogecloud.com/player/get.m3u8?vcode=5ac682e6f8231991&userId=17&ext=.m3u8',
|
|
|
+ type: 'hls'
|
|
|
+ }
|
|
|
+}"></DPlayer>
|
|
|
+
|
|
|
Init player:
|
|
|
|
|
|
```js
|
|
@@ -708,12 +739,6 @@ const danmaku = {
|
|
|
dp.danmaku.draw(danmaku);
|
|
|
```
|
|
|
|
|
|
-## CDN
|
|
|
-
|
|
|
-- [jsDelivr](https://www.jsdelivr.com/package/npm/dplayer)
|
|
|
-- [cdnjs](https://cdnjs.com/libraries/dplayer)
|
|
|
-- [unpkg](https://unpkg.com/dplayer/)
|
|
|
-
|
|
|
## FAQ
|
|
|
|
|
|
### Why can't player be full screen?
|