B站直播弹幕发送接口详解:哔哩哔哩-API收集整理中的实时互动功能

B站直播弹幕发送接口详解:哔哩哔哩-API收集整理中的实时互动功能

在B站直播中,弹幕(Danmaku)是观众与主播实时互动的核心方式。本文将详细介绍哔哩哔哩-API收集整理项目中与直播弹幕发送相关的接口,帮助开发者快速实现弹幕发送功能,提升直播互动体验。

弹幕发送接口概述

B站弹幕系统支持多种类型的弹幕发送,包括普通弹幕、互动弹幕和打分弹幕等。核心接口定义在docs/danmaku/action.md文件中,涵盖了从基础文本弹幕到高级互动弹幕的完整实现方案。

弹幕功能图标

接口基础信息

所有弹幕接口均需要用户认证,支持Cookie(SESSDATA)或APP登录Token两种方式。其中,普通用户最常用的是视频弹幕发送接口,其基础信息如下:

  • 请求URLhttps://api.bilibili.com/x/v2/dm/post
  • 请求方式:POST
  • 认证方式:Cookie(SESSDATA)或APP
  • 核心限制mode=6(逆向弹幕)和mode=8(代码弹幕)不可发送

普通弹幕发送详解

请求参数说明

普通弹幕发送需要提供弹幕内容、出现时间、样式等关键参数。以下是完整的参数列表:

参数名类型内容必要性备注
typenum弹幕类型必要1:视频弹幕
2:漫画弹幕
oidnum视频cid必要
msgstr弹幕内容必要长度小于100字符
bvid/aidstr/num稿件ID必要(二选一)avid与bvid任选一个
progressnum出现时间(毫秒)非必要默认0
colornum颜色RGB值非必要十进制RGB888值,如16777215为白色
fontsizenum字号非必要标准:25,可选12-64之间特定值
modenum弹幕类型必要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以上无限制)
-111CSRF校验失败检查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),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值