B站视频弹幕发送接口详解:哔哩哔哩-API收集整理中的实时互动功能
弹幕(Danmaku)是哔哩哔哩(B站)最具特色的实时互动功能之一,允许用户在观看视频时发送滚动文字评论,形成独特的社区观影体验。本文将详细解析B站视频弹幕发送接口的技术细节,帮助开发者和运营人员快速理解如何通过API实现弹幕功能的集成与应用。
弹幕功能概述
B站弹幕系统支持多种互动形式,包括普通滚动弹幕、顶部/底部固定弹幕、彩色弹幕以及高级互动弹幕(如UP主头像弹幕、关联视频弹幕等)。这些功能通过统一的API接口实现,开发者可根据需求选择合适的接口进行调用。
项目中提供了丰富的弹幕相关文档,完整接口定义可参考弹幕操作文档。弹幕功能的视觉呈现可参考B站官方图标:
核心弹幕发送接口详解
基础弹幕发送接口
最常用的弹幕发送接口为https://api.bilibili.com/x/v2/dm/post
,支持发送普通、顶部、底部等基础类型弹幕。
请求参数说明
URL参数: | 参数名 | 类型 | 内容 | 必要性 | 备注 | | --- | --- | --- | --- | --- | | web_location | str | 普通视频: 1315873 | 不必要 | | | csrf | str | CSRF Token (即 Cookie 中 bili_jct) | Cookie 方式必要 | | | w_rid | str | Wbi 签名 | 必要 | 参见 Wbi 签名 | | wts | str | UNIX 秒级时间戳 | 必要 | 参见 Wbi 签名 |
正文参数: | 参数名 | 类型 | 内容 | 必要性 | 备注 | | --- | --- | --- | --- | --- | | type | num | 弹幕类选择 | 必要 | 1:视频弹幕
2:漫画弹幕 | | oid | num | 视频 cid | 必要 | | | msg | str | 弹幕内容 | 必要 | 长度小于 100 字符 | | bvid | str | 稿件 bvid | 必要(可选) | avid 与 bvid 任选一个 | | aid | num | 稿件 avid | 必要(可选) | avid 与 bvid 任选一个 | | progress | num | 弹幕出现时间 | 非必要 | 单位为毫秒,默认为0 | | color | num | 弹幕颜色 | 非必要 | 十进制 RGB888 值,如16777215
为白色 | | fontsize | num | 弹幕字号 | 非必要 | 默认为 25,可选12-64 | | pool | num | 弹幕池选择 | 非必要 | 0:普通池
1:字幕池
2:特殊池 | | mode | num | 弹幕类型选择 | 必要 | 1:普通
4:底部
5:顶部
7:高级
9:BAS弹幕 |
发送示例
以下是发送一条普通滚动弹幕的curl示例:
curl 'https://api.bilibili.com/x/v2/dm/post' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=62131' \
--data-urlencode 'msg=前来考古' \
--data-urlencode 'aid=2' \
--data-urlencode 'progress=5000' \
--data-urlencode 'color=16777215' \
--data-urlencode 'fontsize=25' \
--data-urlencode 'pool=0' \
--data-urlencode 'mode=1' \
--data-urlencode 'rnd=3456789987654321' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
响应示例
成功发送后返回:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"action": "",
"dmid": 32161968826613767,
"dmid_str": "32161968826613767",
"visible": true
}
}
互动弹幕发送接口
互动弹幕接口https://api.bilibili.com/x/v2/dm/command/post
支持UP主头像弹幕、关联视频弹幕等高级互动形式。
主要参数说明
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
type | num | 互动弹幕类型 | 必要 | 1:UP主头像弹幕 2:关联视频弹幕 5:引导关注按钮 |
aid | num | 稿件avid | 必要 | |
cid | num | 视频cid | 必要 | |
progress | num | 出现时间 | 非必要 | 单位为毫秒 |
plat | num | 平台标识 | 必要 | 1:web端 2:安卓端 8:视频管理页 |
data | str | 弹幕数据 | 必要 | json序列 |
典型应用场景
UP主头像弹幕:
curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=1' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"msg":"测试UP主头像弹幕"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
关联视频弹幕:
curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=2' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"bvid":"BV1kz4y1X7XP","msg":"测试关联视频弹幕"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
常见错误码及解决方案
弹幕发送常见错误码说明:
错误码 | 含义 | 解决方案 |
---|---|---|
-101 | 账号未登录 | 检查Cookie或access_key是否有效 |
-111 | CSRF校验失败 | 确保csrf参数与Cookie中的bili_jct一致 |
36701 | 弹幕包含违规内容 | 修改弹幕文本,避免敏感词 |
36702 | 弹幕长度超限 | 缩短至100字符以内 |
36703 | 发送频率过快 | 添加rnd参数可将冷却时间从90s缩短至5s |
36708 | 等级不足 | 升级账号等级或开通会员 |
高级功能:弹幕撤回与管理
弹幕撤回接口
使用https://api.bilibili.com/x/dm/recall
接口可撤回2分钟内发送的弹幕:
curl 'https://api.bilibili.com/x/dm/recall' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'dmid=32310301474947077' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
高级弹幕权限购买
发送高级弹幕需购买权限(2硬币/次):
curl 'https://api.bilibili.com/x/dm/adv/buy' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'mode=sp' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
接口调用最佳实践
- 签名处理:Wbi签名是必选参数,实现方式详见Wbi签名文档
- 频率控制:添加rnd参数可降低发送间隔至5秒
- 错误处理:完善错误码处理逻辑,特别是36703(频率过快)和36701(内容违规)
- 权限检查:发送彩色弹幕和高级弹幕需会员或特定等级,提前检查用户权限
总结
B站弹幕API为开发者提供了丰富的实时互动功能,从基础的滚动弹幕到高级的UP主互动弹幕,覆盖了视频内容互动的多种场景。通过本文介绍的接口参数、调用示例和最佳实践,开发者可以快速集成弹幕功能,为用户打造更丰富的视频互动体验。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考