Rat's

使用Docker搭建DPlayer视频弹幕接口API后端
说明:之前有同学要求博主出个DPlayer弹幕后端搭建教程,刚好本博客的Handsome主题更新并完美适配了Dpl...
扫描右侧二维码阅读全文
03
2019/01

使用Docker搭建DPlayer视频弹幕接口API后端

说明:之前有同学要求博主出个DPlayer弹幕后端搭建教程,刚好本博客的Handsome主题更新并完美适配了Dplayer,然后就研究了下,发现了点小问题,如作者提供的弹幕API加载不出弹幕,而且Typecho当中的Dplayer插件有点旧无法对接V3后端,不知道其它程序插件是不是这样,这里博主只能使用HTML代码直接输出调用,经测试已完全正常加载弹幕和观看。这里就说下搭建及使用方法。

简介

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

安装

作者提供的弹幕后端搭建方法挺多的,这里选择一个搭建最快,版本最新的一种。

Github地址:https://github.com/MoePlayer/DPlayer-node

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.service

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  #同上

改完后再新建镜像即可,如果你已经新建镜像了,但想改,那就清空之前的镜像再修改,方法参考→传送门

域名反代

如果你的博客已经开启了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/ToyoDAdoubiBackup/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/。

好了,可以在视频里发彩色弹幕了,如果该视频播放器不显示的话,刷新一下就行了。

Vultr注册就送$50,可开日本/新加坡等机房,【点击注册】。
最后修改:2019 年 01 月 03 日 09 : 13 PM

发表评论

48 条评论

  1. gakki酱

    弹幕接口,not found了,呜呜呜~~~

    1. Rat's
      @gakki酱

      我提供的?接口404不是很正常吗,加点东西就有显示了

      1. gakki酱
        @Rat's

        大佬,怎么用呀?小白不太懂~~~

        1. Rat's
          @gakki酱

          这篇文章我只说了个基础,更多的用法可以看下官方文档,http://dplayer.js.org/#/zh-Hans/

  2. 蜀韵文学

    安装了打开宝塔文件管理都没有看见DPlaye这个文件夹!

    1. Rat's
      @蜀韵文学

      问题说具体点,你是说的DPlayer-node? 给个命令你查找,find / -name DPlayer-node

  3. dan

    安装出错了

    1. Rat's
      @dan

      把你的截图删了,太大了,那种不是报错,是警告,正常现象

  4. 长远

    宝塔有安装教程没 老哥

    1. Rat's
      @长远

      这个可以用宝塔的

  5. coder-xsy

    博主,我通过开发者工具看你这个视频中的请求https://dplayer.moerats.com/v3/?id=183f6653124c13ca6b924d021c233f52
    上面这个链接应该就是你视频播放的时候的请求的视频所包含的字幕,响应的数据中包含了该视频包含的所有的弹幕,但是那个数据还有其他的内容我不太明白,这是其中一个弹幕对应的数据:[1.085544, 0, 16777215, "DIYgod", "测试一下。"]这个数据中的第2、3个数据不太明白是什么意思,还请指教一下

    1. Rat's
      @coder-xsy

      其实我也不是很清楚,只知道DIYgod是作者的id

  6. cialis canadian pharmacy

    You mentioned that wonderfully!

  7. zengrong

    发送失败是因为我重启了服务器,重启服务器是不是就要再次拉取镜像再运行一次???

    1. Rat's
      @zengrong

      按照原文件启动参数来说,是这样的,重启就需要重新运行一下docker-compose up -d

      1. zengrong
        @Rat's

        你好,我又来了,我发现在IE下,一直显示“弹幕加载中” 这个有办法解决吗?

        1. Rat's
          @zengrong

          别用ie。

      2. zengrong
        @Rat's

        好的,谢谢了。

  8. zengrong

    还有一个问题,就是手机端提示发送失败。但是视频上又显示。但是刷新自己看不到。

  9. zengrong

    请问这个弹幕滚动速度有办法吗?感觉滚动好快啊,能稍微慢一点点吗?怎么改?

    1. Rat's
      @zengrong

      速度貌似改不了,和播放同步的吧

      1. zengrong
        @Rat's

        请问这个是不是服务器重启后,就要重新拉取镜像再运行一次??

        1. Rat's
          @zengrong

          是的。

  10. zengrong

    dplayernode_mongo_1 is up-to-date
    Starting dplayernode_redis_1 ...
    Starting dplayernode_redis_1 ... error

    ERROR: for dplayernode_redis_1 Cannot start service redis: driver failed programming external connectivity on endpoint dplayernode_redis_1 (8c334d98d1ef338eb97dd04779c366040ad6d5d6b5f39865b630ad0806020298): Error starting userland proxy: listen tcp 0.0.0.0:6379: bind: address already in use

    ERROR: for redis Cannot start service redis: driver failed programming external connectivity on endpoint dplayernode_redis_1 (8c334d98d1ef338eb97dd04779c366040ad6d5d6b5f39865b630ad0806020298): Errorstarting userland proxy: listen tcp 0.0.0.0:6379: bind: address already in use
    ERROR: Encountered errors while bringing up the project.
    请问在docker-compose up -d的时候 提示这个 是怎么回事???

    1. zengrong
      @zengrong

      你好,已经解决了。停止redis 就可以了。

  11. Groad

    大佬,请问弹幕id是怎么生成的,我根据你的教程搭建出来的接口,打开就报这个错误GET http://apidp.purvavideha.cn/?id=183f6653124c13ca6b924d021c233f52 502 (Bad Gateway)
    以及这个错误:Access to XMLHttpRequest at 'http://apidp.purvavideha.cn/?id=183f6653124c13ca6b924d021c233f52' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

    1. Rat's
      @Groad

      你用的插件?弹幕api设置和我文章给的一样就行,调用的v3,你给的连接都没v3

      1. Groad
        @Rat's

        没有 也是html的页面,弹幕api是用的你的博客中的教程搭建的 在写的时候 需要在api连接中加上v3吗

        1. Rat's
          @Groad

          这个不需要,后端自动帮你加,不过拉取b站弹幕的时候就需要手动加v3了,你可以f12看看哪里有问题。

  12. Funle

    老哥弹幕接口出了点问题.

    1. Rat's
      @Funle

      欧克,已经修好了。

  13. ErnestH

    请教,安装都没问题,但打开播放器的时候加载弹幕失败,请问一般是什么问题,如何解决?

    1. Rat's
      @ErnestH

      这个情况很多,你启动的时候使用docker-compose up,可以看链接日志

  14. u725b

    大佬请问下这是啥问题,前几天装好都好好的。
    DPlayer-node 发生了一些意外:
    ReplyError: NOAUTH Authentication required.

    at parseError (/usr/src/app/node_modules/redis-parser/lib/parser.js:193:12) at parseType (/usr/src/app/node_modules/redis-parser/lib/parser.js:303:14)
    1. Rat's
      @u725b

      初步看了下,你先去DPlayer-node文件夹,使用docker-compose stop停掉容器,然后再使用docker-compose up -d启动容器,应该就好了。

    2. Rat's
      @u725b

      应该是redis认证出了问题,我先看下。

  15. andy

    我搭建了但是他不会保存弹幕啊。。。。

    1. Rat's
      @andy

      打开播放器的时候加载弹幕是失败还是?

  16. momc

    我的弹幕放在顶部或者底部 会偏移到画面外 是为何~~

    1. Rat's
      @momc

      这个貌似是播放器的问题,具体我也不清楚,好像在手机端竖频下会出现这情况。

      1. momc
        @Rat's

        我看了下 是我改播放器页面的时候 出了点问题 。
        手机端微信百度浏览器之类 会把播放器替换 弹幕就不存在了

        1. Rat's
          @momc

          用谷歌浏览器吧。有的浏览器会变。

  17. usbport

    划水这个弹幕功能有脏话或者广告那些怎么管理。。。

    1. usbport
      @usbport

      那个东西会过滤吗。。我用官方的那个接口就不得行

      1. Rat's
        @usbport

        这个问题还没考虑到,得研究下。

  18. Smart

    博主,发现你老喜欢用这个视频

    1. Rat's
      @Smart

      是的,歌好听人也美,又没多的视频,所以一直就这个。

  19. u725b

    谢谢大佬