DPlayer:H5视频播放器支持弹幕

更新日期: 2019-06-24阅读: 8.6k标签: 弹幕

DPlayer 是一个支持弹幕的 html5 视频播放器。支持 Bilibili 视频和 danmaku,支持HLS,FLV,MPEG DASH,WebTorrent以及其他视频格式,支持截屏、热键、切换清晰度以及字幕等。 

安装

使用 npm:

npm install dplayer --save

使用 Yarn:

yarn add dplayer

入门

先载入所需文件:

<link rel="stylesheet" href="DPlayer.min.css">
<div id="dplayer"></div>
<script src="DPlayer.min.js"></script>

调用:

const dp = new DPlayer({
    container: document.getElementById('dplayer'),
    screenshot: true,
    video: {
        url: 'demo.mp4',
        pic: 'demo.jpg',
        thumbnails: 'thumbnails.jpg'
    },
    subtitle: {
        url: 'webvtt.vtt'
    },
    danmaku: {
        id: 'demo',
        api: 'https://api.prprpr.me/dplayer/'
    }
});

或者使用模块管理器:

import 'DPlayer/dist/DPlayer.min.css';
import DPlayer from 'DPlayer';

const dp = new DPlayer(options);

参数

名称默认值描述
containerdocument.querySelector('.dplayer')播放器容器元素
livefalse开启直播模式
autoplayfalse视频自动播放
theme'#b7daff'主题色
loopfalse视频循环播放
langnavigator.language.toLowerCase()可选值: 'en', 'zh-cn', 'zh-tw'
screenshotfalse开启截图,如果开启,视频和视频封面需要开启跨域
hotkeytrue开启热键
preload'auto'预加载,可选值: 'none', 'metadata', 'auto'
volume0.7默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效
logo-在左上角展示一个 logo,你可以通过 CSS 调整它的大小和位置
apiBackend-自定义获取和发送弹幕行为,详情
video-视频信息
video.url-视频链接
video.pic-视频封面
video.thumbnails-视频缩略图,可以使用 DPlayer-thumbnails 生成
video.type'auto'可选值: 'auto', 'hls', 'flv', 'dash', 'webtorrent', 'normal' 或其他自定义类型
video.customType-自定义类型
subtitle-外挂字幕
subtitle.urlrequired字幕链接
subtitle.type'webvtt'字幕类型,可选值: 'webvtt', 'ass',目前只支持 webvtt
subtitle.fontSize'20px'字幕字号
subtitle.bottom'40px'字幕距离播放器底部的距离,取值形如: '10px' '10%'
subtitle.color'#fff'字幕颜色
danmaku-显示弹幕
danmaku.idrequired弹幕池id,必须唯一
danmaku.apirequired-
danmaku.token-弹幕后端验证 token
danmaku.maximum-弹幕最大数量
danmaku.addition-额外外挂弹幕
danmaku.user'DIYgod'弹幕用户名
danmaku.bottom-弹幕距离播放器底部的距离,防止遮挡字幕,取值形如: '10px' '10%'
danmaku.unlimitedfalse海量弹幕模式,即使重叠也展示全部弹幕,请注意播放器会记忆用户设置,用户手动设置后即失效
contextmenu[]自定义右键菜单
mutextrue互斥,阻止多个播放器同时播放,当前播放器播放时暂停其他播放器

示例:

const dp = new DPlayer({
    container: document.getElementById('player'),
    autoplay: false,
    theme: '#FADFA3',
    loop: true,
    lang: 'zh-cn',
    screenshot: true,
    hotkey: true,
    preload: 'auto',
    logo: 'logo.png',
    volume: 0.7,
    mutex: true,
    video: {
        url: 'dplayer.mp4',
        pic: 'dplayer.png',
        thumbnails: 'thumbnails.jpg',
        type: 'auto'
    },
    subtitle: {
        url: 'dplayer.vtt',
        type: 'webvtt',
        fontSize: '25px',
        bottom: '10%',
        color: '#b7daff'
    },
    danmaku: {
        id: '9E2E3368B56CDBB4',
        api: 'https://api.prprpr.me/dplayer/',
        token: 'tokendemo',
        maximum: 1000,
        addition: ['https://api.prprpr.me/dplayer/bilibili?aid=4157142'],
        user: 'DIYgod',
        bottom: '15%',
        unlimited: true
    },
    contextmenu: [
        {
            text: 'custom1',
            link: 'https://github.com/DIYgod/DPlayer'
        },
        {
            text: 'custom2',
            click: (player) => {
                console.log(player);
            }
        }
    ]
});

API

dp.play():播放视频

dp.pause():暂停视频

dp.seek(time: number):跳转到特定时间

dp.toggle():切换播放和暂停

dp.on(event: string, handler: function):绑定视频和播放器事件

dp.switchVideo(video, danmaku):切换到其他视频

dp.notice(text: string, time: number):显示通知,时间的单位为毫秒,默认时间2000毫秒,默认透明度0.8

dp.switchQuality(index: number):切换清晰度

dp.destroy():销毁播放器

dp.speed(rate: number):设置视频速度

dp.volume(percentage: number, nostorage: boolean, nonotice: boolean):设置视频音量

dp.video:原生 video

----dp.video.currentTime:返回视频当前播放时间

----dp.video.duration:返回视频总时间

----dp.video.paused:返回视频是否暂停

事件绑定

dp.on(event, handler)

play:DPlayer 开始播放时触发

pause:DPlayer 暂停时触发

canplay:在有足够的数据可以播放时触发

playing:DPlayer 播放时定期触发

ended:DPlayer 结束时触发

error:发生错误时触发

DPlayer对hls和flv格式的支持需要相应的插件。

更多有关DPlayer的使用请参考项目官网:https://github.com/MoePlayer/DPlayer 

链接: https://fly63.com/article/detial/6990

前端将数据转化为弹幕效果的实现方式

这个需求如题,大体上是将文章的评论数据,在文章的首图上面以弹幕的形式出现。实现弹幕的原理,并不算太复杂,耗费一些时间,怼一怼应该都可以做出来。获取弹幕数据,将弹幕设置为四个通道...

虎牙直播弹幕转换字幕格式 基于Node.js 的 huya-danmu

首先安装nodejs运行环境, 从 http://nodejs.cn/download/ 下载对应的版本, 安装 huya-danmu 模块, https://github.com/BacooTang/huya-danmu 有详细的安装方法,参照 huya-danmu 模块中 test.js 编写 huya.js 新文件,录视频的同时运行 huyaDanmu 批处理命令, 就不用在调整时间轴;

js实现弹幕效果

弹幕是一个很常见的功能,下面是本人封装的一个小小的实现方案,存在不足之处可以提出来或自由改进。直接上代码:效果如图:点击开启弹幕按钮:

B站自动填弹幕(附带createEvent消息机制)

经过我多次调试,发现B站的textarea需要触发一个keydown事件之后才能发送。Events 可以使用 Event 构造函数创建如下:请使用 event constructors 来替代.创建一个指定类型的事件。其返回的对象必须先初始化并可以被传递

B站不挡脸弹幕前端是如何实现的?

相信最近有很多B站的用户都注意到了不挡脸的弹幕,打开一则视频右下角的“智能防挡弹幕”功能后,弹幕就不会再覆盖人像,而是呈现从人体身后穿过的效果。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!