Comment9 发布在 https://github.com/prnake/comment9 ,目前已有完善文档,进入 awesome-danmaku 
<https://github.com/OpenDanmakuCommunity/awesome-danmaku> 列表。
danmaQ 主仓库地址在 https://github.com/tuna/danmaQ ,目前在 
https://github.com/prnake/danmaQ 进行打包工作。开源弹幕系统改进 - 结项报告 项目信息 
   
   - 项⽬名称:开源弹幕系统改进 
   - 项目描述:项目的目标是实现一个跨平台、易部署、易拓展的一套全功能的开源弹幕系统。主体考虑使用 Node.js 或 Python 
   编写服务端和客户端,再与已有的一些开源弹幕方案和弹幕网站融合,实现一套支持可拓展的多发送源、弹幕处理、弹幕多样化展示的通用弹幕系统,覆盖用户需求。 
   - 项目详细方案:
      - 总体要求
         - 尽量保证与当前Comment9和danmaQ代码的兼容性 
         - 所有代码使用 MIT 许可证开源 
         - 所有项目均需要中英双语支持(国际化支持) 
      - 弹幕服务端
         - 支持独立的多个活动,按需留存记录,能够导出,能够回放弹幕或基于弹幕生成字幕文件 
         - 发布、订阅、审核可以单独设置密码 
         - 每个活动分别支持多种接入(包括网页、微信、Telegram,后续支持 Bilibili 主动监听等平台) 
         - 支持多种不同属性的弹幕(颜色、位置、速度) 
         - 支持 Web 弹幕墙(用户可通过命令或自动化设置头像、昵称等) 
         - 具有 Web 版管理后台,支持审核并设置属性(人工置顶等),并且有一定的自动化拓展能力 
         - 具有 HTTP / WebSocket API,能够主动向客户端推送弹幕 
         - 保留弹幕机配置功能 
         - 有良好的性能表现 
         - 配备 Dockerfile,能够简便地部署运行 
      - 弹幕客户端(Qt)
         - 支持多显示器,并能够选择弹幕在哪些显示器上工作 
         - 在各个系统上均正确支持高分屏(HiDPI),兼容OBS 
         - 能够根据服务器推送的弹幕和属性,正确进行绘制 
         - (可选)支持故障恢复(自动重连+跳过已经发送的弹幕) 
         - 有良好的性能表现 
         - 支持多种显示模式,比如滚动和列表 
      - 弹幕Web端
         - 通过第三方开源播放器,在直播视频流上添加弹幕显示功能 
         - 支持直播回放的弹幕以及视频弹幕功能 
         - 具体实现视开发进度决定 
      - 项目开发时间计划
      - 第一阶段项目研发
         - 07/01 - 07/07 调研目前开源弹幕方案,研究 Comment9 和 danmaQ 
         ,确定技术路线,兼顾性能,并设计弹幕服务端和弹幕客户端之间的通讯逻辑 
         - 07/08 - 07/15 重构弹幕绘制逻辑,使其同时兼容客户端和 Web 
         端,并能达到当前主流弹幕网站(Bilibili)的显示能力,并具有较高的拓展能力,基本实现弹显示功能,并完善设计文档 
         - 07/16 - 07/31 
         构建弹幕服务端和弹幕客户端之间的通讯逻辑,实现服务器推送弹幕的正确接受与绘制,增强弹幕客户端在不稳定网络下的故障恢复能力 
         - 08/01 - 08/15 在 Comment9 
         
基础上升级弹幕服务端,完善各种功能并实现可拓展的弹幕接入(包括网页、微信、Telegram等),打通服务端与客户端,最终打包成docker实现一键化部署 
      - 第二阶段项目研发
         - 08/16 - 09/30 
         基于第一阶段考核结果做相应改进,整理项目代码,实现语言国际化,完善相关文档,增强代码的易拓展性,实现版本的自动化打包发布,并提交软件包到 
         dockerhub 及 AUR 等仓库,进一步实现易用性。 
      
项目产出 danmaQ 

主仓库地址在 https://github.com/tuna/danmaQ ,目前在 https://github.com/prnake/danmaQ 
进行打包工作。

使用 QT5 + Socket.IO 优化原有代码。

   - 支持多显示器,并能够选择弹幕在哪些显示器上工作 
   - 在各个系统上均正确支持高分屏(HiDPI) 
   - 支持故障恢复 
   - 有良好的性能表现 
   - 支持滚动、置顶、置底等多种显示模式 
   - 能方便快捷的配置,与 Comment9 弹幕服务器相连 

Comment9 项目架构 

[image: img]

主仓库地址在 https://github.com/prnake/comment9 ,当前已进入 awesome-danmaku 
<https://github.com/OpenDanmakuCommunity/awesome-danmaku> 列表。

下面对主仓库的 README <https://github.com/prnake/Comment9> 部分进行摘录,详细内容请查看仓库。
Comment9 

A simple & powerful danmaku framework.

[image: GitHub Top Language]
[image: Build Status] 
<https://github.com/prnake/comment9/actions/workflows/docker-release.yml>
[image: Docker Image Size]
[image: License] <http://opensource.org/licenses/MIT>
[image: FOSSA Status] 
<https://app.fossa.com/projects/git%2Bgithub.com%2Fprnake%2FComment9?ref=badge_shield>
介绍 

Comment9 是一个开源、简单易用、易于扩展的实时弹幕服务框架。
特性 
   
   - 弹幕服务器
      - 支持多样化、可拓展的高级弹幕 
      - 弹幕发送系统能够使用网页、微信、Telegram、API等多种方式接入 
      - 使用 Socket.IO 实现弹幕的稳定推送 
      - 支持弹幕的自动和人工审核 
      - 易用的 Web 后台管理系统 
      - 支持独立的多用户与多个活动 
      - 发布、订阅、审核等不同角色相互独立的权限控制系统 
      - 支持导出弹幕历史数据 
      - 易于拓展的弹幕发送系统和弹幕审核系统 
      - 中日英多语言支持 
   - 弹幕网页端
      - 支持弹幕墙、弹幕列表、直播等多样化的弹幕展示与发送方式 
      - 基于 CommentCoreLibrary 的高级弹幕支持 
      - 基于 blivechat 的可用于 OBS 的 YouTube 风格弹幕列表 
   - 弹幕桌面端 danmaQ <https://github.com/tuna/danmaQ>
      - Qt5 实现的跨平台桌面弹幕播放器 
      - 支持高分屏与多显示器选择的全屏弹幕置顶播放层 
      - 快捷订阅 Comment9 服务器,支持自动重连 
      - 支持带色彩的滚动、置顶和底部弹幕 
   
Demo 

我们使用 Comment9 部署了一个测试活动,提供弹幕墙 <https://comment.pka.moe/#/Wall/demo/screen>、
弹幕列表墙 <https://comment.pka.moe/#/List/demo/screen>、弹幕视频播放器 
<https://comment.pka.moe/#/Player/demo/screen>、弹幕网页发送器 
<https://comment.pka.moe/#/Sender/demo/user/userpass>与 Telegram 机器人 
@comment9_bot <https://t.me/comment9_bot> 进行测试,可能需要自行发送弹幕来查看效果。

也可以直接访问弹幕墙 <https://comment.pka.moe/#/Wall/test>、弹幕列表墙 
<https://comment.pka.moe/#/List/test>和弹幕视频播放器 
<https://comment.pka.moe/#/Player/test>的测试页面查看弹幕较多时的效果。

下面是 Comment9 的 Web 后台管理系统截图

[image: manage_zh.png]
核心项目 
   
   - 项目使用 Node.js <https://nodejs.org> 开发,前端使用 Vue2 <https://vuejs.org>,后端使用 
   Express <https://expressjs.com> 和 Socket.IO <https://socket.io>,数据库使用 
   MongoDB <https://www.mongodb.com> 和 Redis <https://redis.io> 
   - 使用 CommentCoreLibrary <https://github.com/jabbany/CommentCoreLibrary> 
   规范设计弹幕格式,实现网页端的高级弹幕显示 
   - 使用 blivechat <https://github.com/xfgryujk/blivechat> 实现可用于 OBS 的 
   YouTube 风格弹幕列表 
   - 参考 vue-tinder <https://github.com/shanlh/vue-tinder> 实现卡片样式的审核界面 
   - 使用 blivedm <https://github.com/xfgryujk/blivedm> 实现对B站直播弹幕的收集 
   - 参考 RSSHub <https://github.com/DIYgod/RSSHub/> 完善文档与自动化流程 

许可证 

[image: FOSSA Status] 
<https://app.fossa.com/projects/git%2Bgithub.com%2Fprnake%2FComment9?ref=badge_large>
方案进度与项目完成质量 

完成方案进度中除将新版 danmaQ 提交外的所有需求,同时具有易用性和扩展性,项目完成质量高。
遇到的问题及解决方案 socket.io 使用 
   
   - C++ 原生方案 socket.io-client-cpp
      - 修改后通过编译,发现 cpp 版本协议不完善,比如不支持sub_url,*不能同时支持none_tls和tls*,存在不一致问题 
      - 可以通过修改代码解决,但仍然*存在未知潜在风险* 
      - 只支持WS,不能自动回退到HTTP长轮询方式 
      - 好处:原生 
   - QWebChannel 实现 C++ & js 混合方案
      - 完美支持 socket.io,并且 QWebChannel 本身的 chromium 内核带来了连接的稳定性保证 
      - 缺点:打包和性能问题 
   
最终选择了QWebChannel 实现 C++ & js 
混合方案,性能问题在正常设备(能流畅使用Chrome)上没有感知,同时优化分发包大小至100M。
项目数据库选择 

项目使用 MongoDB 作为存储数据库,同时使用 Redis 方便缓存与进行原子操作。实现弹幕数据的低延时广播。
项目编译与打包 

danmaQ 通过Cmake 编译,Comment9 使用 yarn 管理。

通过 Github Actions 实现 QT5 项目 danmaQ 的 Windows,MacOS 和 Linux 在 amd64 
架构上的自动打包和发布,以及 Node.js 项目 Comment9 自动打包为 Docker 镜像并推送到 Dockerhub 
<https://hub.docker.com/r/prnake/comment9>。
弹幕社区生态 

弹幕开源生态中存在很多较好但疏于维护的项目,例如本项目跟随的 CommentCoreLibrary 就存在文档不清晰,对 Node.js 
支持不好的问题。同时目前基本不存在类似 Comment9 的在近3年维护的开源弹幕服务框架。
danmaQ 多屏幕显示 debug 

完成多屏幕显示部分,自动检测屏幕变化后重设
修改了部分depressed 的代码
解决了Cmake文件编译的一系列问题
国际化 

在 danmaQ 和 Comment9 中都采用了 i18n 的国际化方案,并实现了简繁日英的本地化。
与导师沟通及反馈情况 

每周固定时间汇报工作,每两周发布工作报告一次,与导师沟通状况好。
项目未来发展 

danmaQ 和 Comment9 在设计时是为了实现即时的弹幕服务(例如直播),Comment9 
页考虑到了弹幕视频的服务,预留了基于时轴的弹幕信息,同时 CommentCoreLibrary 
也有对带时轴弹幕的支持。未来考虑加入对基于时轴的视频弹幕支持,同时支持直播回放。

未来还要考虑硬件弹幕机的相关适配工作。
​

-- 
您收到此邮件是因为您订阅了 Google 网上论坛的“TUNA 主邮件列表”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到tuna-general+unsubscr...@googlegroups.com。
要在网络上查看此讨论,请访问 
https://groups.google.com/d/msgid/tuna-general/58af947e-8dac-4963-9b89-2a37d278502en%40googlegroups.com。

回复