弹幕API配置
OmniBox 支持弹幕功能,可以为视频播放添加弹幕显示。弹幕功能需要独立部署 danmu_api 服务。
什么是弹幕?
弹幕是一种在视频播放时显示用户评论的功能,评论会以滚动文字的形式叠加在视频画面上,增强观看体验和互动性。
部署弹幕API服务
方案一:Vercel 部署(推荐)
Vercel 提供免费的服务器less 部署,适合个人用户。
部署步骤
访问 danmu_api 项目
- 打开 danmu_api GitHub 仓库
- 点击 Fork 按钮,将项目 Fork 到您的账户
部署到 Vercel
- 访问 Vercel Dashboard
- 点击 Add New Project
- 选择您 Fork 的 danmu_api 项目
- 点击 Deploy
设置环境变量
- 在 Vercel 项目设置中找到 Environment Variables
- 添加环境变量:
- Key:
TOKEN - Value: 自定义的 token(例如:
87654321)
- Key:
- 保存并重新部署
获取 API 地址
- 部署完成后,获得类似
https://danmuapi-blond-nine.vercel.app的地址 - 完整的弹幕 API 地址为:
https://danmuapi-blond-nine.vercel.app/87654321 - 其中
87654321是您设置的 TOKEN
- 部署完成后,获得类似
提示
TOKEN 用于保护您的弹幕 API,建议使用复杂的随机字符串。
方案二:Docker 部署
适合拥有服务器或 VPS 的用户。
部署步骤
bash
docker run -d \
-p 9321:9321 \
--name danmu-api \
-e TOKEN=87654321 \
--restart unless-stopped \
logvar/danmu-api:latest访问地址
- 本地访问:
http://localhost:9321/87654321 - 公网访问:
http://your-server-ip:9321/87654321
方案三:Cloudflare Workers
适合需要全球加速的用户。
部署步骤
安装 Wrangler CLI
bashnpm install -g wrangler登录 Cloudflare
bashwrangler login部署 Worker
- 参考 danmu_api 项目的 Cloudflare Workers 部署文档
- 设置环境变量
TOKEN
获取 API 地址
- 部署完成后获得 Worker 地址
- 完整地址为:
https://your-worker.workers.dev/your-token
方案四:EdgeOne Pages
EdgeOne Pages 是腾讯云提供的边缘计算服务。
部署步骤
- 访问 EdgeOne Pages
- 创建新项目
- 上传 danmu_api 代码
- 设置环境变量
TOKEN - 部署并获取地址
配置弹幕API
在 OmniBox 中配置
方法一:初始化时配置
在 OmniBox 初始化界面,使用 JSON 配置:
json
{
"PROXY_BASE_URL": "https://your-proxy-domain.com/proxy/",
"DANMU_API_URL": "https://your-danmu-api.vercel.app/87654321"
}方法二:在设置中配置
- 进入 OmniBox 设置页面
- 找到 弹幕设置
- 输入弹幕 API 地址
- 保存配置
配置格式说明
弹幕 API 地址格式:
https://your-danmu-api-domain.com/TOKEN重要提示:
- 完整 URL 必须包含 TOKEN 参数
- TOKEN 是您在部署时设置的环境变量值
- 示例:
https://danmuapi-blond-nine.vercel.app/87654321
使用弹幕功能
发送弹幕
- 在视频播放页面,找到弹幕输入框
- 输入弹幕内容
- 点击发送或按 Enter 键
- 弹幕会显示在视频画面上
查看弹幕
- 弹幕会自动从右侧滚动到左侧
- 可以调整弹幕显示位置(顶部、中部、底部)
- 可以调整弹幕字体大小和透明度
弹幕设置
在播放器设置中可以配置:
- 弹幕开关:开启/关闭弹幕显示
- 弹幕速度:调整弹幕滚动速度
- 弹幕透明度:调整弹幕透明度
- 弹幕字体大小:调整弹幕字体大小
- 弹幕区域:选择弹幕显示区域(顶部/中部/底部)
测试弹幕API
测试方法
使用 curl 或浏览器访问弹幕 API:
bash
# 获取弹幕列表
curl "https://your-danmu-api.vercel.app/87654321/v3/?id=test-video-id"
# 发送弹幕(POST 请求)
curl -X POST "https://your-danmu-api.vercel.app/87654321/v3/" \
-H "Content-Type: application/json" \
-d '{
"id": "test-video-id",
"author": "test-user",
"time": 10.5,
"text": "这是一条测试弹幕",
"color": "#FFFFFF",
"type": 0
}'预期响应
获取弹幕列表应该返回 JSON 格式的数据:
json
{
"code": 0,
"data": [
{
"id": 1,
"author": "user1",
"time": 10.5,
"text": "这是一条弹幕",
"color": "#FFFFFF",
"type": 0
}
]
}故障排除
问题:弹幕无法显示
可能原因:
- 弹幕 API 地址配置错误
- 弹幕 API 服务未启动
- 网络连接问题
解决方案:
- 检查弹幕 API 地址是否正确(包含 TOKEN)
- 确认弹幕 API 服务正常运行
- 在浏览器中直接访问弹幕 API 测试
- 检查浏览器控制台是否有错误信息
问题:弹幕发送失败
可能原因:
- TOKEN 不正确
- 弹幕 API 服务限制
- 请求格式错误
解决方案:
- 确认 TOKEN 与部署时设置的一致
- 检查弹幕 API 服务日志
- 验证请求格式是否正确
- 尝试使用 curl 测试发送弹幕
问题:弹幕加载缓慢
可能原因:
- 弹幕 API 服务器性能问题
- 网络延迟
- 弹幕数据量过大
解决方案:
- 使用性能更好的部署方案(如 Cloudflare Workers)
- 检查网络连接
- 考虑添加缓存机制
- 优化弹幕数据查询
安全建议
TOKEN 安全
- 使用复杂的随机字符串作为 TOKEN
- 不要将 TOKEN 提交到公开的代码仓库
- 定期更换 TOKEN
- 使用环境变量存储 TOKEN
API 限流
建议在弹幕 API 服务中添加限流功能,防止滥用:
javascript
// 示例:限制每个 IP 每分钟最多 10 条弹幕
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 60 * 1000, // 1 分钟
max: 10 // 限制 10 次请求
});内容过滤
建议添加内容过滤功能,过滤不当内容:
javascript
// 示例:简单的关键词过滤
const blockedWords = ['spam', 'advertisement'];
function filterContent(text) {
return blockedWords.some(word => text.includes(word));
}相关资源
- danmu_api 项目 - 弹幕 API 服务源码
- 弹幕协议文档 - 详细的 API 文档
