先上效果

Installation

Using npm:

npm install dplayer --save

Using Yarn:

yarn add dplayer

Quick Start

At first, let's initialize a simplest DPlayer

Load DPlayer files

<div id="dplayer"></div>
<script src="DPlayer.min.js"></script>

Or work with module bundler:

import DPlayer from 'dplayer';const dp = new DPlayer(options);

Initialization in js:

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/',},
});

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 #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
airplay true enable airplay in Safari
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
playbackSpeed [0.5, 0.75, 1, 1.25, 1.5, 2] optional playback speed, or or you can set a custom one
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 #live
video - video info
video.quality - see #Quality switching
video.defaultQuality - see #Quality switching
video.url - video url
video.pic - video poster
video.thumbnails - video thumbnails, generated by DPlayer-thumbnails(opens new window)
video.type 'auto' values: 'auto', 'hls', 'flv', 'dash', 'webtorrent', 'normal' or other custom type, see #MSE support
video.customType - custom video type, see #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
subtitle.fontSize '20px' subtitle font size
subtitle.bottom '40px' the distance between the subtitle and player bottom, values like: '10px' '10%'
subtitle.color '#fff' subtitle color
danmaku - showing danmaku
danmaku.id required danmaku pool id, it must be unique
danmaku.api required see #Danmaku API
danmaku.token - back end verification token
danmaku.maximum - danmaku maximum quantity
danmaku.addition - additional danmaku, see #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
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
const dp = new DPlayer({container: document.getElementById('dplayer'),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/v3/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);},},],highlight: [{text: 'marker for 20s',time: 20,},{text: 'marker for 2mins',time: 120,},],
});

API

  • dp.play(): 播放视频

  • dp.pause(): 暂停视频

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

    dp.seek(100);
    
  • dp.toggle(): 切换播放和暂停

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

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

    dp.switchVideo({url: 'second.mp4',pic: 'second.png',thumbnails: 'second.jpg',},{id: 'test',api: 'https://api.prprpr.me/dplayer/',maximum: 3000,user: 'DIYgod',}
    );
    
  • 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.volume(0.1, true, false);
    
  • dp.video: 原生 video

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

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

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

  • 支持大多数原生 video 接口(opens new window)

  • dp.danmaku

  • dp.danmaku.send(danmaku, callback: function): 提交一个新弹幕

    dp.danmaku.send({text: 'dplayer is amazing',color: '#b7daff',type: 'right', // should be `top` `bottom` or `right`},function () {console.log('success');}
    );
    
  • dp.danmaku.draw(danmaku): 实时绘制一个新弹幕

    dp.danmaku.draw({text: 'DIYgod is amazing',color: '#fff',type: 'top',
    });
    
  • dp.danmaku.opacity(percentage: number): 设置弹幕透明度,透明度值在 0 到 1 之间

    dp.danmaku.opacity(0.5);
    
  • dp.danmaku.clear(): 清除所有弹幕

  • dp.danmaku.hide(): 隐藏弹幕

  • dp.danmaku.show(): 显示弹幕

  • dp.fullScreen: 两个类型:web 和 browser,默认类型是 browser

  • dp.fullScreen.request(type: string): 进入全屏

    dp.fullScreen.request('web');
    
  • dp.fullScreen.cancel(type: string): 退出全屏

    dp.fullScreen.cancel('web');
    

#事件绑定

dp.on(event, handler)

dp.on('ended', function () {console.log('player ended');
});

视频事件

  • abort
  • canplay
  • canplaythrough
  • durationchange
  • emptied
  • ended
  • error
  • loadeddata
  • loadedmetadata
  • loadstart
  • mozaudioavailable
  • pause
  • play
  • playing
  • progress
  • ratechange
  • seeked
  • seeking
  • stalled
  • suspend
  • timeupdate
  • volumechange
  • waiting

播放器事件

  • screenshot
  • thumbnails_show
  • thumbnails_hide
  • danmaku_show
  • danmaku_hide
  • danmaku_clear
  • danmaku_loaded
  • danmaku_send
  • danmaku_opacity
  • contextmenu_show
  • contextmenu_hide
  • notice_show
  • notice_hide
  • quality_start
  • quality_end
  • destroy
  • resize
  • fullscreen
  • fullscreen_cancel
  • subtitle_show
  • subtitle_hide
  • subtitle_change

#清晰度切换

在 video.quality 里设置不同清晰度的视频链接和类型,video.defaultQuality 设置默认清晰度

Load demo

const dp = new DPlayer({container: document.getElementById('dplayer'),video: {quality: [{name: 'HD',url: 'demo.m3u8',type: 'hls',},{name: 'SD',url: 'demo.mp4',type: 'normal',},],defaultQuality: 0,pic: 'demo.png',thumbnails: 'thumbnails.jpg',},
});

#弹幕

#弹幕接口

danmaku.api

现成的接口

链接: https://api.prprpr.me/dplayer/

每日备份: DPlayer-data(opens new window)

自己搭建

DPlayer-node(opens new window)

#bilibili 弹幕

danmaku.addition

API: https://api.prprpr.me/dplayer/v3/bilibili?aid=[aid](opens new window)

const option = {danmaku: {// ...addition: ['https://api.prprpr.me/dplayer/v3/bilibili?aid=[aid]'],},
};

#

查看插件地址:传送门

html播放video实现弹幕效果---DPlayer相关推荐

  1. css3动画实现弹幕效果

    实现构思: 利用css3动画和过度实现视频弹幕从右到左滚动的效果. css3动画的属性值和用法 属性 描述 @keframes 定义动画效果,后接动画名 animation 所有动画属性的简写属性,除 ...

  2. 微信小程序视频弹幕效果

    这次,和大家一起探讨下小程序视频弹幕 一.按照老规矩,先附上gif效果图:   二.接下来看下官方文档API对vide说明   PS:相关属性解析: danmu-list:弹幕列表 enable-da ...

  3. android代码跳过锁屏,Android_android禁止锁屏保持常亮(示例代码),在播放video的时候在mediaplayer m - phpStudy...

    android禁止锁屏保持常亮(示例代码) 在播放video的时候在mediaplayer mMediaPlayer.setScreenOnWhilePlaying(true); 已经设置了,在原生的 ...

  4. android 图文弹幕重叠,Android双重SurfaceView实现弹幕效果

    本文实例为大家分享了Android双重SurfaceView实现弹幕效果的具体代码,供大家参考,具体内容如下 页面布局 首先是XML的layout布局,这里的总的父布局是一个FrameLayout用于 ...

  5. android弹幕功能,很棒的Android弹幕效果实例

    很多项目需要用到弹幕效果,尤其是在播放视频的时候需要一起显示别人发的弹幕,也包括自己的发的. 今天就试着写了一下这个效果. 思路就是将从右往左的动画效果,字体内容,字体大小,弹幕平移速度等属性一起与T ...

  6. android 如何实现弹幕,Android简单实现弹幕效果

    本文实例为大家分享了Android实现弹幕效果的具体代码,供大家参考,具体内容如下 首先分析一下,他是由三层布局来共同完成的,第一层视频布局,第二层字幕布局,第三层输入框布局,要想让这三个布局在同一页 ...

  7. php弹幕,PHP直播源码,实现简单弹幕效果

    PHP 直播源码实现简单弹幕效果的相关代码 html> 大作业_弹幕 * { padding: 0; margin: 0; } body { font-family: 'Segoe UI', T ...

  8. Android弹幕功能实现,模仿斗鱼直播的弹幕效果

    转载请注明出处:http://blog.csdn.net/sinyu890807/article/details/51933728 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  9. 【unity3D】直播间滚动式弹幕效果

    新时代总会有新产物,比如直播.直播的特色就在于实时互动.将原本的视频聊天一对一,变成主播和评论区聊天的一对多. 直播的特色也很明显,底部摄像机渲染实时画面:在左下角叠上一层弹幕滚动实时显示评论,右下角 ...

最新文章

  1. c语言二级编程题答案免费下载,全国计算机等级考试二级C语言上机编程题参考答案...
  2. c# GDI+简单绘图(二)
  3. 51cto mysql下载_安装MySQL
  4. 代理模式给我们带来的便利
  5. 反序列化对象列表发生异常_通过反序列化漏洞,黑客能做什么呢?
  6. python3爬取教务系统_python requests模拟登陆正方教务管理系统,并爬取成绩
  7. Asp2.0下Login.Aspx页面和VS2005登陆控件冲突问题!
  8. 指针和和一般的数据传递
  9. JedisPool介绍
  10. DPDK QOS 3 -- rte meter令牌桶的实现
  11. VS2017 Community C++模块 离线打包安装
  12. android CTS GTS 环境搭建
  13. html的圆角效果,CSS3轻松实现圆角效果
  14. 电脑版微信多开,安全不限制个数
  15. Python 入门学习路线
  16. Okra框架(三) 搭建HTTP服务器
  17. 手机怎么修改视频的封面?这三个方法和步骤让你实现
  18. 十个励志小故事,一场精彩的人生课!
  19. 基于Python实现的决策树模型
  20. 自适应巡航控制系统——ACC

热门文章

  1. 学习Linux,吃透这篇足够(适合Java开发者)
  2. 1371D Grid-00100
  3. Deepin - 安装zsh及oh-my-zsh的踩坑记录
  4. 黑马程序员------毕老师视频笔记第六天------面向对象(对象初始化过程)
  5. GBase 8c AMT 依赖关系选项
  6. [ dede织梦模板] [免费分享] 中英双语版自适应通用企业网站源码 家具家居产品企业网站模板+手机版
  7. (樱花飞舞背景)抖音同款程序员3d旋转正方体相册,送给你最爱的TA吧
  8. 语言设置影响Win11汉字显示乱码
  9. protobuf3 自定义option_Protobuf3使用-官网搬运
  10. c语言越过空格,C语言去除空格方法