说明:之前有同学要求博主出个DPlayer
弹幕后端搭建教程,刚好本博客的Handsome
主题更新并完美适配了Dplayer
,然后就研究了下,发现了点小问题,如作者提供的弹幕API
加载不出弹幕,而且Typecho
当中的Dplayer
插件有点旧无法对接V3
后端,不知道其它程序插件是不是这样,这里博主只能使用HTML
代码直接输出调用,经测试已完全正常加载弹幕和观看。这里就说下搭建及使用方法。
【2020.10.3】
弹幕api接口已修复,长期可用,https://dplayer.moerats.com,如出现问题留言即可。
【2020.10.27】
由于有些人不太喜欢Docker搭建,所以下面补齐CentOS、Debian、Ubuntu手动搭建教程。
简介
DPlayer
是一个支持弹幕的HTML5
视频播放器。支持Bilibili
视频和danmaku
,支持HLS
、FLV
、MPEG DASH
、WebTorrent
以及其他视频格式,支持截屏、热键、切换清晰度以及字幕等。
安装
作者提供的弹幕后端搭建方法挺多的,这里选择一个搭建最快,版本最新的一种。
Github地址:https://github.com/MoePlayer/DPlayer-node
Docker安装
1、安装Docker
#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on
#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
2、安装Docker Compose
curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
3、运行镜像
安装git
:
#Debian、Ubuntu系统
apt install git -y
#CentOS系统
yum install -y git
再使用命令:
#拉取源码
git clone https://github.com/MoePlayer/DPlayer-node.git
cd DPlayer-node
#新建镜像
docker-compose build
#拉取其它镜像并后台运行
docker-compose up -d
此时api
地址为http://ip:1207
,数据和日志存放在/root/dplayer
文件夹。
当然如果你想其它端口,或者修改存放文件夹路径,那你在上面的新建镜像之前,作出如下操作:
#编辑DPlayer-node文件夹的docker-compose.yml文件,部分修改如下
mongo:
volumes:
- ~/dplayer/db:/data/db #数据库存放文件夹,~/dplayer/db为映射在外部的路径,自行修改,
web:
ports:
- 1207:1207 #api映射到外部的端口,将前面的1207修改成你想要的即可
volumes:
- ~/dplayer/logs:/usr/src/app/logs #同数据库操作
- ~/dplayer/pm2logs:/root/.pm2/logs #同上
改完后再新建镜像即可,如果你已经新建镜像了,但想改,那就清空之前的镜像再修改,方法参考→传送门。
CentOS安装
提示:教程适用于CentOS 7、8系统。
1、安装NodeJS
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install nodejs git -y
2、安装Mongodb
#将下面命令一起复制进SSH客户端运行
cat <<EOF > /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
#安装mongodb
yum -y install mongodb-org
systemctl start mongod
systemctl enable mongod
3、安装Redis
#CentOS 7系统
yum install epel-release -y
yum install redis -y
systemctl start redis
systemctl enable redis
#CentOS 8系统
yum install redis -y
systemctl start redis
systemctl enable redis
4、安装弹幕服务器
#拉取源码
git clone https://github.com/MoePlayer/DPlayer-node.git
cd DPlayer-node
npm i
npm i -g pm2
pm2 start index.js --name danmuapi
此时api
地址为http://ip:1207
。
Debian安装
提示:教程适用于Debian 8、9、10系统。
1、安装NodeJS
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt install -y git nodejs
2、安装Mongodb
#Debian 8系统
wget -qO - https://www.mongodb.org/static/pgp/server-4.0.asc | apt-key add -
echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
apt update -y
apt -y install mongodb-org
systemctl start mongod
systemctl enable mongod
#Debian 9系统
wget -qO - https://www.mongodb.org/static/pgp/server-4.0.asc | apt-key add -
echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
apt update -y
apt -y install mongodb-org
systemctl start mongod
systemctl enable mongod
#Debian 10系统
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list
apt update -y
apt -y install mongodb-org
systemctl start mongod
systemctl enable mongod
3、安装Redis
apt install redis-server -y
4、安装弹幕服务器
#拉取源码
git clone https://github.com/MoePlayer/DPlayer-node.git
cd DPlayer-node
npm i
npm i -g pm2
pm2 start index.js --name danmuapi
此时api
地址为http://ip:1207
。
Ubuntu安装
提示:教程适用于Ubuntu 16.04、18.04、20.04系统。
1、安装NodeJS
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt install -y git nodejs
2、安装Mongodb
#Ubuntu 16.04系统
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
apt update -y
apt install -y mongodb-org
systemctl start mongod
systemctl enable mongod
#Ubuntu 18.04系统
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
apt update -y
apt install -y mongodb-org
systemctl start mongod
systemctl enable mongod
#Ubuntu 20.04系统
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
apt update -y
apt install -y mongodb-org
systemctl start mongod
systemctl enable mongod
3、安装Redis
apt install redis-server -y
4、安装弹幕服务器
#拉取源码
git clone https://github.com/MoePlayer/DPlayer-node.git
cd DPlayer-node
npm i
npm i -g pm2
pm2 start index.js --name danmuapi
此时api
地址为http://ip:1207
。
域名反代
如果你的博客已经开启了https
访问,那api
也需要https
地址,所以只使用ip:端口
是不行的,这里就需要使用域名反代了。博主喜欢Caddy
,所以这里说下宝塔和Caddy
反代,其它一键环境的建议看官方文档或自行搜索。
如果你服务器没有安装Nginx
/Apache
的,可以用下Caddy
,很方便很快,记得提前将域名解析到服务器。
1、宝塔反代
先进入宝塔面板,然后点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL
填入http://127.0.0.1:1207
,再启用反向代理即可。至于启用SSL
就不说了,直接在站点配置就可以看到。
2、Caddy反代
安装Caddy
:
wget -N --no-check-certificate https://raw.githubusercontent.com/iiiiiii1/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
配置Caddy
:
#以下全部内容是一个整体,请修改域名后一起复制到SSH运行!
echo "xx.com {
tls admin@moerats.com
proxy / http://127.0.0.1:1207
}" > /usr/local/caddy/Caddyfile
tls
参数会自动帮你签发ssl
证书,如果你要使用自己的ssl
,改为tls /root/xx.crt /root/xx.key
即可。后面为ssl
证书路径。
启动Caddy
:
/etc/init.d/caddy start
反代好了后,你的API
地址就为https://xx.com
。
使用
作者提供了很多插件,这里列举一点:
Typecho:https://github.com/volio/DPlayer-for-typecho
Hexo:https://github.com/NextMoe/hexo-tag-dplayer
Z-Blog:https://github.com/fghrsh/DPlayer_for_Z-BlogPHP
Discuz!:https://coding.net/u/Click_04/p/video/git
WordPress:https://github.com/BlueCocoa/DPlayer-WordPress
不过Typecho
插件暂时用不了,其它程序暂时不清楚,所以这里提供一个播放器的HTML
代码,代码如下:
<link href="https://www.moerats.com/usr/dplayer/DPlayer.min.css" rel="stylesheet">
<div id="dplayer"></div>
<script src="https://www.moerats.com/usr/dplayer/DPlayer.min.js"></script>
<script src="https://cdnjs.loli.net/ajax/libs/blueimp-md5/2.10.0/js/md5.min.js"></script>
<script>
var url="https://www.moerats.com/xx.mp4"; //这里填写视频地址
var id=md5(url);
const dp = new DPlayer({
container: document.getElementById('dplayer'),
video: {
url: url
},
danmaku: {
id: id,
api: 'https://dplayer.moerats.com/' //这里填写弹幕地址
}
});
</script>
直接将代码贴进文章里即可,如果在Typecho
开发版中使用不正常的话,可能还需要用两排!!!
将代码上下围住使其强制输出,比如:
#特殊原因,不得已才加上o,使用的时候记得去掉
o!!!
代码
o!!!
还有更多功能及使用方法可以查看→传送门。
演示
博主知道有人懒搭建的,所以这里提供个弹幕API地址:https://dplayer.moerats.com/。
好了,可以在视频里发彩色弹幕了,如果该视频播放器不显示的话,刷新一下就行了。
博主这个弹幕能连接数据库吗
这个弹幕连接的Mongodb,docker会自动连接。
使用docker-compose up -d时提示我ERROR: for dplayernode_mongo_1 Cannot start service mongo: Bind mount failed: '/root/dplayer/db' does not exists
创建个文件夹再试试mkdir -p /root/dplayer/db
Starting dplayernode_web_1 ... done 但是在dplayer中还是显示加载弹幕失败 顺便问一下1207端口是https的端口吗
不是,web端口,只是需要用到https,所以才反代
我现在可以用了 谢谢
博主,请问token应该怎么填(在DPlayer for WordPress中,要求填写的除了Danmaku URL,还有Danmaku Token)。
没用过wp,一般只要api地址就可以了
大佬,弹幕API炸了![](//www.moerats.com/usr/paopao/小乖.png)
没事,如果炸了,每到凌晨都会重启一次恢复。
我发送弹幕,但是刷新之后,视频里没有刚才发的弹幕
f12,发送的时候,查看下控制台,一般是你的设置不对
能在windows本地搭建弹幕接口么-。-我想自己搭一个
应该可以,能安装docker就行
大佬,你的Dplayer视频,发完弹幕,现在也不显示发过的弹幕,是不是接口出问题了![](//www.moerats.com/usr/paopao/小乖.png)
我刚试了下没问题,至于你觉得有没有问题,可以在这篇文章的视频里发个弹幕看看。
我就是在这篇文章视频发的
,大佬你试试在这篇文章用特殊颜色发一条,发完之后,刷新一下页面,然后就找不到刚才发的那条了,刷新页面就没有了-。-
应该是我设置了缓存,你再试试。
请问 这个缓存时间是否可以去掉,想实时刷新那种
缓存我好像去掉了
您的api 缓存应该是存在的,发完弹幕,需要手动刷新缓存,才能显示弹幕,按您的教程我建完服务器,也是这种情况
我不知道在哪里可以设置 去掉缓存。
nginx中把js一类的缓存改成-1 可以实现 感谢博主提供方法与讨论平台
docker 国内镜像:https://get.daocloud.io/
Step 1/1 : ARG NODE_ENV
ERROR: Service 'web' failed to build: error creating overlay mount to /www/server/docker/overlay2/cd8683746fb718d120e0e56cfd1d2ec157db29421a92ced85c40992b695989a0-init/merged: invalid argument
表示很蛋疼的说。。安装后,重启服务器,,链接不上网络了![](//www.moerats.com/usr/paopao/惊哭.png)
一般这种操作是不会重启后,连不上服务器,除非你ssh端口被阻断啥的
是安装完毕,自己重启服务器,然后服务器网络就不正常了。。。
这种情况没遇到过。
能否帮我看下。我文件是不是丢失了。。感觉好像硬盘文件都丢了。。我去
博主真给力
我是说我docker compose怎么用不了,原来是没有安装