收起左侧

飞牛弹幕增强docker版

22
回复
1844
查看
[ 复制链接 ]

1

主题

31

回帖

0

牛值

江湖小虾

2026-5-28 17:25:32 显示全部楼层 阅读模式

fn-danmu - 飞牛影视弹幕增强

为飞牛影视(fnOS)添加弹幕支持,基于 danmu-api 弹幕数据源,通过反向代理自动注入弹幕脚本到播放页面。

git地址:https://github.com/rgcaafe/fn-danmu
浏览器插件版:https://club.fnnas.com/forum.php?mod=viewthread&tid=64164&page=1&extra=#pid294542

最新修复登录版:https://club.fnnas.com/forum.php?mod=viewthread&tid=65672

效果展示

播放视频时自动匹配弹幕,弹幕从右向左滚动飘过播放器画面。

支持 PC 浏览器 / TV 浏览器 / 任何带浏览器的设备,无需安装任何扩展或 App。

功能列表:

  • 自动匹配:根据视频标题 + 季/集信息自动匹配弹幕
  • 手动搜索:按动漫名搜索 → 选集 → 加载弹幕
  • 换集自动加载
  • 弹幕行避让(不重叠)
  • 点击弹幕暂停 3 秒并显示时间戳
  • 弹幕参数可调(字号、行间距、透明度、速度、密度、显示区域、时间偏移等)
  • HTTP / HTTPS 双协议支持
  • 飞牛 SPA 内跳转自动重新注入

QQ20260528-172918.png

QQ20260528-172947.png

QQ20260528-172955.png

实现原理

**──────────────**      **───────────────────────**      **──────────────**
**  浏览器 / TV  **      **   danmaku-proxy       **      **  飞牛影视     **
**              **      **   (Docker)            **      **  (fnOS)      **
**  访问 :3000  **─────→**                       **─────→**  :5666       **
**              **      **  ① 拦截页面请求        **      **              **
**              ** HTML **  ② 去掉缓存头          ** HTML**  返回原始页面  **
**  拿到注入后的 **◄─────**  ③ 注入弹幕脚本        **◄─────**              **
**  HTML 页面   **      **  ④ 透传视频流/API/资源  **      **──────────────**
**              **      **                       **
**  弹幕脚本运行 **      **                       **      **──────────────**
**  请求弹幕数据 **─────→**  /dm-api/* 转发       **─────→**  danmu-api   **
**              ** JSON **                       ** JSON **  :9321       **
**  渲染弹幕    **◄─────**                       **◄─────**              **
**──────────────**      **───────────────────────**      **──────────────**

为什么需要代理?

浏览器直接访问飞牛时,无法向页面注入弹幕脚本。通过反向代理中转:

  1. 浏览器请求页面 → 代理转给飞牛 → 飞牛返回 HTML
  2. 代理在 HTML 的 </head> 前插入 <script>(弹幕脚本)
  3. 修改后的 HTML 返回给浏览器
  4. 视频流、WebSocket、API 等非页面请求原样透传,不影响播放

为什么需要 danmu-api?

飞牛影视本身没有弹幕数据。danmu-api 聚合了各平台的弹幕数据(B站、腾讯、爱奇艺等),提供弹幕搜索和匹配接口。本项目通过代理将浏览器端的弹幕 API 请求转发到 danmu-api 服务。

前置要求

组件 说明
[Docker] + Docker Compose 容器运行环境
[飞牛影视(fnOS)] 已部署并可访问
[danmu-api] 弹幕数据服务,已部署并可访问

部署方式一:使用预构建镜像(推荐)

无需克隆仓库,直接创建配置文件启动。

1. 创建目录和配置文件

bash
mkdir fn-danmaku && cd fn-danmak

创建 docker-compose.yml

services:
  danmaku-proxy:
    image: coffee699/danmaku-proxy:latest
    ports:
      - "3000:3000"
      - "3443:3443"
    environment:
      - FN_URL=http://192.168.10.252:5666    # 改成你的飞牛影视地址
      - DM_URL=http://192.168.10.252:9321    # 改成你的 danmu-api 地址
      - PORT=3000
      - HTTPS_PORT=3443
    volumes:
      - ./certs:/app/certs
    restart: unless-stopped
    init: true

2. 启动

docker compose up -d 

3. 确认启动成功

docker compose logs -f

看到以下内容说明正常:

[启动] 飞牛: http://192.168.10.252:5666
[启动] 弹幕: http://192.168.10.252:9321
[就绪] HTTP:  http://<NAS-IP>:3000
[就绪] HTTPS: https://<NAS-IP>:3443

4. 使用

浏览器或 TV 浏览器访问 http://<NAS-IP>:3000,后续操作和直接访问飞牛一样,但会多出弹幕功能。

更新版本:

docker compose pull
docker compose up -d

部署方式二:从源码构建

1. 克隆仓库

git clone https://github.com/coffee699/fn-danmaku.git
cd fn-danmaku

2. 修改配置

cp docker-compose.yml.example docker-compose.yml

编辑 docker-compose.yml,修改 FN_URLDM_URL 为你的实际地址。

3. 构建并启动

docker compose up -d --build

4. 使用

同方式一,访问 http://<NAS-IP>:3000

更新版本:

git pull
docker compose up -d --build

环境变量

变量 说明 默认值
FN_URL 飞牛影视地址(需带 http://https://,协议必须和飞牛实际协议一致) http://192.168.10.252:5666
DM_URL danmu-api 弹幕服务地址 http://192.168.10.252:9321
PORT 代理 HTTP 端口 3000
HTTPS_PORT 代理 HTTPS 端口(自签证书) 3443

飞牛影视默认是 HTTP,除非你额外配置了 HTTPS 反向代理。协议填错会导致连接失败。

HTTPS 说明

代理同时监听 HTTP 和 HTTPS:

  • HTTP(:3000):直接使用,无需额外配置
  • HTTPS(:3443):首次启动时自动生成自签证书(保存在 ./certs/),浏览器会提示不安全,点"继续访问"即可

如需使用自己的证书,将文件放到 ./certs/ 目录:

./certs/key.pem   # 私钥
./certs/cert.pem  # 证书

使用指南

自动匹配

播放视频后,脚本自动根据视频标题 + 季/集信息调用 danmu-api 匹配弹幕。匹配成功后左下角会显示状态提示和弹幕数量。

手动搜索

  1. 点击播放器右上角的「弹幕」按钮
  2. 在搜索框输入动漫名称,点「搜索」
  3. 从搜索结果中选择动漫
  4. 选择具体集数,点击加载

弹幕设置

点击「弹幕」按钮 → 切换到「⚙ 设置」标签:

设置项 说明 范围
弹幕开关 全局开关 开/关
透明度 弹幕透明度 0 ~ 1
显示区域 弹幕占屏幕高度 10% ~ 80%
文字描边 黑色轮廓增强可读性 开/关
字号 弹幕文字大小 14 ~ 40px
行间距 行与行之间的距离 1.2x ~ 3.0x
滚动速度 滚动弹幕移动速度 0.5x ~ 2.5x
弹幕密度 显示比例,降低可减少弹幕量 10% ~ 100%
同屏上限 同时显示的最大弹幕条数 10 ~ 80
偏移量 时间偏移,校准弹幕与画面的同步 -30s ~ +30s

设置自动保存到浏览器 localStorage,下次打开自动恢复。

交互操作

操作 效果
点击飘过的弹幕 暂停该弹幕 3 秒,显示时间戳
鼠标移动 显示弹幕按钮和控制面板
鼠标离开播放器 3 秒后自动隐藏 UI

TV 端使用

TV 浏览器访问代理地址即可。弹幕设置面板的操作:

  • 有蓝牙鼠标:操作体验和 PC 一致
  • 仅有遥控器:遥控器模拟鼠标点击,可完成基本的开关弹幕、搜索加载等操作

常见问题

Q: 打开页面后看不到弹幕按钮?

确认是通过代理地址(:3000)访问,不是直接访问飞牛地址(:5666)。

Q: 自动匹配一直失败?

文件名可能不被 danmu-api 识别。改用手动搜索加载(弹幕按钮 → 搜索 → 选集)。

Q: 代理日志报 透传错误拦截错误

飞牛不在线或地址配置错误。确认 FN_URL 正确且飞牛正在运行。容器不会因后端离线而退出,飞牛恢复后自动正常。

Q: 视频播放几秒就报错?

检查 FN_URL 的协议(http:// 还是 https://)是否和飞牛实际协议一致。写错协议会导致代理无法正确转发视频流。

Q: 浏览器控制台看到 __DMAPI_PLACEHOLDER__ 相关错误?

使用了旧版镜像或旧版脚本。更新镜像:docker compose pull && docker compose up -d,或从源码重新构建。

项目结构

fn-danmaku/
**── README.md                   # 本文档
**── docker-compose.yml.example  # Docker Compose 配置模板
**── Dockerfile                  # 镜像构建文件
**── package.json                # Node.js 依赖声明
**── server.js                   # 反向代理服务(HTTP/HTTPS + HTML 注入 + API 转发)
**── danmaku.js                  # 弹幕脚本(注入到浏览器端,负责匹配/渲染/交互)

License

MIT


收藏
送赞 4
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

8

主题

192

回帖

0

牛值

小有名气

fnOS1.0上线纪念勋章飞牛百度网盘玩家

2026-5-29 08:31:12 显示全部楼层

要是能适配移动端播放器就好了

移动端的实现较为困难,正在尝试。  详情 回复
2026-6-1 09:52

0

主题

28

回帖

0

牛值

江湖小虾

2026-5-29 13:52:38 显示全部楼层

感谢大佬分享,我试试

2

主题

73

回帖

0

牛值

初出茅庐

2026-5-29 14:56:38 显示全部楼层
期待继续升级,部署更加简单移动端也能用。
已上线。  详情 回复
2026-6-3 14:32

15

主题

40

回帖

0

牛值

初出茅庐

2026-5-30 14:27:49 显示全部楼层

就是在影视的WEBUI上套了一层弹幕代理?

在代理的时候注入了弹幕相关的代码  详情 回复
2026-6-1 09:53

0

主题

5

回帖

0

牛值

江湖小虾

2026-5-30 17:33:24 显示全部楼层

搞半天都是页面空白,还以为是哪里没配置好,最后没招了

清了下缓存就好了.....

19

主题

82

回帖

300

牛值

社区共建团

社区共建团荣誉勋章

2026-5-31 21:42:50 显示全部楼层

给大佬点赞++++++++++++,这次部署相比上次简单多了

1

主题

31

回帖

0

牛值

江湖小虾

2026-6-1 09:52:40 楼主 显示全部楼层
Jimboo7339 发表于 2026-5-29 08:31
要是能适配移动端播放器就好了

移动端的实现较为困难,正在尝试。
已上线。  详情 回复
2026-6-3 14:32
大佬加油,期待  详情 回复
2026-6-1 11:44

1

主题

31

回帖

0

牛值

江湖小虾

2026-6-1 09:53:20 楼主 显示全部楼层
小乔 发表于 2026-5-30 14:27
就是在影视的WEBUI上套了一层弹幕代理?

在代理的时候注入了弹幕相关的代码

4

主题

131

回帖

5

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章飞牛百度网盘玩家fnOS1.0上线纪念勋章灌水之星AMD适配纪念勋章

2026-6-1 11:22:49 显示全部楼层

太强了,哈哈

8

主题

192

回帖

0

牛值

小有名气

fnOS1.0上线纪念勋章飞牛百度网盘玩家

2026-6-1 11:44:35 显示全部楼层
右咖啡 发表于 2026-6-1 09:52
移动端的实现较为困难,正在尝试。

大佬加油,期待

19

主题

82

回帖

300

牛值

社区共建团

社区共建团荣誉勋章

2026-6-1 17:54:59 显示全部楼层

谷歌浏览器,打开飞牛影视后一片空白,但是edge是可以进去的完全没问题

可能是缓存原因?  详情 回复
2026-6-2 09:12

1

主题

31

回帖

0

牛值

江湖小虾

2026-6-2 09:12:43 楼主 显示全部楼层
hweir 发表于 2026-6-1 17:54
谷歌浏览器,打开飞牛影视后一片空白,但是edge是可以进去的完全没问题

可能是缓存原因?
缓存清理了,浏览器也更新了,插件也全部关了,始终是一片空白,没找到原因。只能进到飞牛的桌面,打开影视以后就是一片空白。  详情 回复
2026-6-2 09:32

19

主题

82

回帖

300

牛值

社区共建团

社区共建团荣誉勋章

2026-6-2 09:32:06 显示全部楼层
右咖啡 发表于 2026-6-2 09:12
可能是缓存原因?

缓存清理了,浏览器也更新了,插件也全部关了,始终是一片空白,没找到原因。只能进到飞牛的桌面,打开影视以后就是一片空白。
控制台有报错吗  详情 回复
2026-6-3 14:06

1

主题

31

回帖

0

牛值

江湖小虾

2026-6-3 14:06:22 楼主 显示全部楼层
hweir 发表于 2026-6-2 09:32
缓存清理了,浏览器也更新了,插件也全部关了,始终是一片空白,没找到原因。只能进到飞牛的桌面,打开影 ...

控制台有报错吗

1

主题

31

回帖

0

牛值

江湖小虾

2026-6-3 14:32:09 楼主 显示全部楼层
右咖啡 发表于 2026-6-1 09:52
移动端的实现较为困难,正在尝试。

已上线。

1

主题

31

回帖

0

牛值

江湖小虾

2026-6-3 14:32:25 楼主 显示全部楼层
庆哥哥 发表于 2026-5-29 14:56
期待继续升级,部署更加简单移动端也能用。

已上线。
大佬,是在飞牛商店上线吗???  详情 回复
2026-6-3 15:14

2

主题

73

回帖

0

牛值

初出茅庐

2026-6-3 15:14:25 显示全部楼层

大佬,是在飞牛商店上线吗???
这是仓库地址,https://github.com/rgcaafe/fnos_tv_danmu  详情 回复
2026-6-3 19:18
不是,手机端比较特殊,是单独的第三方app,帖子还在审核。  详情 回复
2026-6-3 19:17

1

主题

31

回帖

0

牛值

江湖小虾

2026-6-3 19:17:04 楼主 显示全部楼层
庆哥哥 发表于 2026-6-3 15:14
大佬,是在飞牛商店上线吗???

不是,手机端比较特殊,是单独的第三方app,帖子还在审核。

1

主题

31

回帖

0

牛值

江湖小虾

2026-6-3 19:18:27 楼主 显示全部楼层
庆哥哥 发表于 2026-6-3 15:14
大佬,是在飞牛商店上线吗???

这是仓库地址,https://github.com/rgcaafe/fnos_tv_danmu
感谢大佬开发,我先试用下  详情 回复
2026-6-4 11:34

2

主题

73

回帖

0

牛值

初出茅庐

2026-6-4 11:34:45 显示全部楼层
右咖啡 发表于 2026-6-3 19:18
这是仓库地址,https://github.com/rgcaafe/fnos_tv_danmu

感谢大佬开发,我先试用下

2

主题

1

回帖

0

牛值

江湖小虾

2026-6-12 22:02:50 显示全部楼层

飞牛影视更新过后,弹幕不能自动显示了,得手动搜索才行,什么情况

0

主题

4

回帖

0

牛值

江湖小虾

用了油猴插件的一直提示匹配失败、搜索失败,用3000端口的打开一直白色无内容,edge和chorme都这样,没招了,大佬求解答

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则