B站直播弹幕发送接口详解:哔哩哔哩-API收集整理中的实时互动功能
在B站直播中,弹幕(Danmaku)是观众与主播实时互动的核心方式。本文将详细介绍哔哩哔哩-API收集整理项目中与直播弹幕发送相关的接口,帮助开发者快速实现弹幕发送功能,提升直播互动体验。
弹幕发送接口概述
B站弹幕系统支持多种类型的弹幕发送,包括普通弹幕、互动弹幕和打分弹幕等。核心接口定义在docs/danmaku/action.md文件中,涵盖了从基础文本弹幕到高级互动弹幕的完整实现方案。
弹幕功能图标
接口基础信息
所有弹幕接口均需要用户认证,支持Cookie(SESSDATA)或APP登录Token两种方式。其中,普通用户最常用的是视频弹幕发送接口,其基础信息如下:
- 请求URL:
https://api.bilibili.com/x/v2/dm/post - 请求方式:POST
- 认证方式:Cookie(SESSDATA)或APP
- 核心限制:
mode=6(逆向弹幕)和mode=8(代码弹幕)不可发送
普通弹幕发送详解
请求参数说明
普通弹幕发送需要提供弹幕内容、出现时间、样式等关键参数。以下是完整的参数列表:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| type | num | 弹幕类型 | 必要 | 1:视频弹幕 2:漫画弹幕 |
| oid | num | 视频cid | 必要 | |
| msg | str | 弹幕内容 | 必要 | 长度小于100字符 |
| bvid/aid | str/num | 稿件ID | 必要(二选一) | avid与bvid任选一个 |
| progress | num | 出现时间(毫秒) | 非必要 | 默认0 |
| color | num | 颜色RGB值 | 非必要 | 十进制RGB888值,如16777215为白色 |
| fontsize | num | 字号 | 非必要 | 标准:25,可选12-64之间特定值 |
| mode | num | 弹幕类型 | 必要 | 1:普通 4:底部 5:顶部 7:高级 9:BAS弹幕(需pool=2) |
发送示例
以下是使用curl命令发送普通弹幕的示例,目标是在视频av2(cid=62131)的5秒位置发送白色标准大小的"前来考古"弹幕:
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'
成功响应将返回弹幕ID(dmid):
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"action":"",
"dmid":32161968826613767,
"dmid_str":"32161968826613767",
"visible":true
}
}
高级互动弹幕功能
B站提供三种特殊互动弹幕,分别是UP主头像弹幕、关联视频弹幕和引导关注按钮,通过https://api.bilibili.com/x/v2/dm/command/post接口实现。
UP主头像弹幕
UP主可发送带个人头像的特殊弹幕,需指定type=1,并在data参数中传入文本内容:
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":"测试头像弹幕"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
关联视频弹幕
可在弹幕中嵌入其他视频链接,点击后跳转。需指定type=2并提供关联视频的bvid:
--data-urlencode 'type=2' \
--data-urlencode 'data={"bvid":"BV1kz4y1X7XP","msg":"相关视频推荐"}'
引导关注按钮
在视频画面中嵌入关注按钮,需指定坐标和持续时间:
--data-urlencode 'type=5' \
--data-urlencode 'data={"duration":5000,"posX":118,"posY":82}'
错误码与常见问题
发送弹幕时可能遇到多种错误,以下是高频错误码及解决方案:
| 错误码 | 含义 | 解决方法 |
|---|---|---|
| 36701 | 内容包含违禁词 | 修改弹幕文本,避免敏感内容 |
| 36703 | 发送频率过快 | 添加rnd参数可将冷却时间从90s缩短至5s |
| 36705 | 等级不足 | 升级账号等级(Lv1用户限20字,Lv2以上无限制) |
| -111 | CSRF校验失败 | 检查cookie中的bili_jct是否与csrf参数一致 |
弹幕管理功能
除发送外,项目还提供完整的弹幕管理接口,包括:
- 撤回弹幕:
https://api.bilibili.com/x/dm/recall(2分钟内,每日3次) - 点赞弹幕:
https://api.bilibili.com/x/v2/dm/thumbup/add - 举报弹幕:
https://api.bilibili.com/x/dm/report/add(支持12种举报类型) - 高级弹幕权限:
https://api.bilibili.com/x/dm/adv/buy(2硬币/次)
接口文档与资源
完整接口细节可参考项目中的:
通过这些接口和工具,开发者可以快速实现B站风格的实时弹幕互动功能,为视频内容增添丰富的用户参与形式。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



