漂亮的HTML5弹幕视频播放器DPlayer
DPlayer
快速開始
加載播放器文件:
<link rel="stylesheet" href="DPlayer.min.css" /> <div id="dplayer"></div> <script src="DPlayer.min.js"></script>
在js里初始化:
const dp = new DPlayer({
container: document.getElementById('dplayer'),
video: {
url: 'demo.mp4',
},
});
一個最簡單的 DPlayer 就初始化好了,它只有最基本的視頻播放功能。
搭建視頻彈幕后臺服務
前置條件:安裝了git、docker、docker-compose
下載后臺服務代碼,當然也可以自己搭建后臺服務
git clone https://github.com/MoePlayer/DPlayer-node.git
進入DPlayer-node目錄執行docker-compose命令
cd DPlayer-node docker-compose build docker-compose pull docker-compose up -d
啟動彈幕服務之后,就可以愉快的在邊看視頻邊發彈幕了(~ ̄▽ ̄)~
當然需要先在DPlayer設置彈幕屬性。DPlayer支持播放各種格式,以下的視頻選項設置親測有效,不過視頻字幕沒有測試,有感興趣的同學可以自己制作字幕玩一下。
<h1>DPlayer</h1>
<link rel="stylesheet" />
<div id="dplayer"></div>
<script src="https://cdn.bootcss.com/blueimp-md5/2.12.0/js/md5.min.js"></script>
<script src="https://cdn.bootcss.com/flv.js/1.5.0/flv.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<!-- 以上js都需要在dplayer之前加載 -->
<script src="https://cdn.bootcss.com/dplayer/1.25.0/DPlayer.min.js"></script>
<script type="text/javascript">
var url = '/assets/oceans.mp4';
var vid = md5(url);
const dp = new DPlayer({
container: document.getElementById('dplayer'),
autoplay: false, // 自動播放
theme: '#FADFA3', // 主題
loop: true, // 循環播放
lang: 'zh-cn', // 語言
screenshot: true, // 截圖
hotkey: true, // 熱鍵
preload: 'auto', // 預加載
logo: '/assets/octocat.png', // 左上角logo
volume: 0.7, // 音量
mutex: true, // 多個視頻互斥
// 常規方式
video: {
url: url,
type: 'normal',
pic: '/assets/demo.png', // 封面
thumbnails: '/assets/thumbnail.jpg', // 縮略圖
},
// m3u8
//video: {
// url: '/assets/demo.m3u8',
// type: 'hls'
//},
// flv
//video: {
// url: '/assets/demo.flv',
// type: 'flv'
//},
pluginOptions: {
hls: {
// hls config
autoStartLoad: true,
startPosition: -1
},
flv: {
enableWorker: false,
enableStashBuffer: true,
stashInitialSize: undefined,
isLive: false,
lazyLoad: true,
lazyLoadMaxDuration: 3 * 60,
lazyLoadRecoverDuration: 30,
deferLoadAfterSourceOpen: true,
// autoCleanupSourceBuffer: default as false, leave unspecified
autoCleanupMaxBackwardDuration: 3 * 60,
autoCleanupMinBackwardDuration: 2 * 60,
statisticsInfoReportInterval: 600,
fixAudioTimestampGap: true,
accurateSeek: false,
seekType: 'range', // [range, param, custom]
seekParamStart: 'bstart',
seekParamEnd: 'bend',
rangeLoadZeroStart: false,
customSeekHandler: undefined,
reuseRedirectedURL: false,
// referrerPolicy: leave as unspecified
headers: undefined,
customLoader: undefined
}
},
// 切換視頻質量
//video: {
// quality: [
// {
// name: 'HD',
// url: 'demo.m3u8',
// type: 'hls',
// },
// {
// name: 'SD',
// url: 'demo.mp4',
// type: 'normal',
// },
// ],
// defaultQuality: 0,
// pic: 'demo.png',
// thumbnails: 'thumbnails.jpg',
//},
// 視頻字幕
subtitle: {
type: 'webvtt',
url: 'webvtt.vtt',
fontSize: '25px',
bottom: '10%',
color: '#b7daff'
},
// 彈幕
danmaku: {
id: vid,
api: 'http://192.168.1.172:1207/',
addition: ['http://192.168.1.172:1207/v3/bilibili?aid=80266688&cid=137358410']
},
// 視頻右鍵菜單
contextmenu: [
{
text: 'falltakeman',
link: 'https://cnblogs.com/falltakeman',
},
{
text: 'dplayer',
click: (player) => {
console.log(player);
},
},
],
// 高能預告
highlight: [
{
text: '敵軍還有10秒到達戰場',
time: 10,
},
{
text: '2mins 空降',
time: 120,
},
],
});
</script>
danmaku屬性
說明一下danmaku屬性:
id是視頻id,需要保證唯一性,建議使用md5加密。
api就是彈幕后臺的地址了。
addition是可選項,用來加載bilibili彈幕,其實就是通過剛剛搭建的彈幕服務去b站加載彈幕。
可以看到我的addition屬性是這樣的:http://192.168.1.172:1207/v3/bilibili?aid=80266688&cid=137358410
官網的示例沒有詳細說明,沒有接觸過的可能不知道這個aid是什么,這個aid就是b站視頻的av號,而cid就是彈幕id。
當然也可以不傳cid參數,彈幕后臺會根據aid去查找cid。
這是沒有加載b站彈幕的截圖,本來錄了gif,但是文件太大了,就不貼gif圖片了。
這是加載了bilibili視頻彈幕的截圖
在視頻上右鍵,顯示自定義的內容
總結
以上是生活随笔為你收集整理的漂亮的HTML5弹幕视频播放器DPlayer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tcl空调e0是什么故障怎么解决
- 下一篇: 天然气收费管理系统的研究与实现随笔