Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >B站直播间协议指南

B站直播间协议指南

作者头像
KAAAsS
发布于 2022-01-14 10:12:09
发布于 2022-01-14 10:12:09
2.1K00
代码可运行
举报
文章被收录于专栏:KAAAsS's BlogKAAAsS's Blog
运行总次数:0
代码可运行

文章目录[隐藏]

2017/2/10: 截止目前的文章版本已经回退到最初版本,不一定会继续填坑。相关协议将会于未来开源的biliapi(python)中实现。

最近因为一些原因,所以在研究B站直播间相关的内容。结合逆向的Android客户端源码,我得以更深的了解B站直播间的协议。早些时候有dalao就解析过这个协议(链接),但是dalao是分析弹幕姬的,所以有很多疏漏或不清楚的地方。

目前,本文的内容尚未补全。

协议头

一般的,一个B站的直播间数据包的协议头为16字节。协议头的大致结构如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
00000000: 00 00 00 35  00 10 00 01  00 00 00 07  00 00 00 01
  • 1-4个字节:整数,数据包大小
  • 5-6个字节:短整数,固定值16(推测是协议头长度)
  • 7-8个字节:短整数,推测是使用设备(安卓端写死为0,dalao文章中固定为1)
  • 9-12个字节:整数,数据包类型
  • 13-16个字节:整数,推测是使用设备(和7-8个字节相同)

无论是发送数据还是返回数据,一般来说都是需要附上数据头。数据包类型已知的有以下几种:

  • 请求:2(心跳包)、7(用户进入房间)
  • 响应:1,2,3(人数包,1、2是dalao文章中提到的,实际并未发现)、5(弹幕、礼物等等数据)

对于响应包,客户端显示4、6、7都是无效的数据包类型(参见com.bilibili.cfu)。而com.bilibili.cfw显示0、2-7似乎都是有效的值。

请求

进入房间、心跳包

这两个数据包的正文相同,都是json格式的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"roomid ":0,"uid":0}

心跳包30s左右发送一次。

响应

弹幕、送礼、进入提示、开始直播、准备直播

这些数据包的数据包类型是相同的(都是5),而返回格式大体相同:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"cmd":"...","info":xxx}

其中,cmd允许的值有:

  • LIVE                             – 开始直播
  • PREPARING            – 准备直播
  • DANMU_MSG        – 弹幕信息
  • SEND_GIFT             – 送礼信息
  • WELCOME               – 进入房间信息(如姥爷进入房间有提示)

具体数据格式有待更新。

直播人数

直播人数包的数据类型为3。这个包一般在客户端发送心跳包以后返回。正文部分只有一个整数,就是直播间当前人数。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
B站直播弹幕ws协议分析
Chrome DevTools可以直接查看binary类型数据包 连接 通过Chrome DevTools可以看到,网页版B站直播的弹幕通过 wss://tx-sh3-live-comet-04.ch
戴兜
2023/02/17
2.9K0
B站直播弹幕ws协议分析
Bilibili直播信息流:连接方法与数据解析
如今,市面上已经有不少开源项目可以用于连接 B 站直播 WebSocket 获取信息流。
苏琢玉
2025/03/12
1670
Bilibili直播信息流:连接方法与数据解析
BliBili直播弹幕WS协议浅析
ws地址:wss://broadcastlv.chat.bilibili.com/sub
MashiroT
2024/01/12
7400
Java物联网开发(一) —— MQTT协议
官方文档传送门 mqtt官网 mqtt中文网 mqtt 3.1.1 英文文档 mqtt 5.0 英文文档 b站mqtt教程
时间静止不是简史
2021/08/12
10.3K0
Java物联网开发(一)  —— MQTT协议
[置顶] 大型直播平台应用架构浅谈
跟大多数同学一样,刚接触直播这个领域都非常好奇这个领域的宏观架构大概是什么样子的。
王清培
2022/03/14
1.5K0
[置顶]
        大型直播平台应用架构浅谈
bilibili 架构师 | 高并发实时弹幕系统的实战之路
刘丁bilibili 架构师2011年毕业,加入猎豹移动从事 C++ 客户端开发,曾开发「远程维修平台」2013年转型后端开发,主要负责猎豹视频软件的后端API 支持、弹泡系统、GoPush-Cluster,GOIM开源项目。2015年加入B站,负责直播弹幕、主站弹幕、推送平台等后端基础服务开发,同时兼职DBA。
Java架构师必看
2020/08/14
3.1K0
B站千万级长连接实时消息系统的架构设计与实践
用户通过发送弹幕、送礼等,可以实时在直播画面上展现自己的想法、评论和互动内容,从而丰富了用户观看体验。在这个过程中,实时向终端推送互动信息,就需要用到长连接。
JackJiang
2024/05/16
4850
B站千万级长连接实时消息系统的架构设计与实践
抖音弹幕wss协议工具,直播间匿名提取解析,开源仅供娱乐
源码已上传:https://www.pan38.com/share.php?code=K3HTf 提取码:8888
用户11696336
2025/06/10
1590
探索 Golang 云原生游戏服务器开发,3 分钟快速理解 Nano 通信协议(内含记忆脑图)
介绍 这是一个系列 探索 Golang 云原生游戏服务器开发,5 分钟上手 Nano 游戏服务器框架 探索 Golang 云原生游戏服务器开发,根据官方示例实战 Gorilla WebSocket
为少
2021/05/27
1.6K0
探索 Golang 云原生游戏服务器开发,3 分钟快速理解 Nano 通信协议(内含记忆脑图)
没想到吧!关于Dubbo的『消费端线程池模型』官网也写错了。
大家好,我是 why,欢迎来到我连续周更优质原创文章的第 63 篇。老规矩,先荒腔走板聊聊其他的。
why技术
2020/09/01
4790
完整的直播平台开发完成后,搭建时需要哪些准备工作?
直播平台搭建,首要任务就是找到一款优质的直播系统源码,直播系统源码开发原理比其他软件更加复杂,而且相对于技术以及其他方面都会有一定的要求。直播系统源码的开发需要经过推流端(采集、前处理)、服务端处理(编码、转码、录制、截图、鉴黄)、播放器(拉流、解码、渲染和互动系统)。
布谷安妮
2020/07/20
1.4K0
完整的直播平台开发完成后,搭建时需要哪些准备工作?
三、wss连接B站弹幕
环境 pip install ws4py from ws4py.client.threadedclient import WebSocketClient 一、websocket协议 先建立连接 wss://broadcastlv.chat.bilibili.com/sub 发送登录包 { "uid": 0表示未登录,否则为用户ID, "roomid": 房间ID, "protover": 1, "platform": "web", "clientver": "1.4.0" } 每隔一段时间发
py3study
2020/01/19
1.6K0
2 道直播系统设计题,建议收藏
geeksforgeeks 站点给出了一张如何设计 ESPN 直播视频流系统的架构图。
JavaSouth南哥
2024/12/19
2490
2 道直播系统设计题,建议收藏
MLVBLiveRoom 方案 - 客户端部分
本文用于介绍移动直播 MLVBLiveRoom 方案的客户端部分,MLVBLiveRoom 方案包含了两部分内容:客户端 MLVBLiveRoom 组件 + 房间管理服务 RoomService。RoomService 说明见 https://cloud.tencent.com/developer/article/1488765
腾讯云-chaoli
2019/08/16
11.1K2
MLVBLiveRoom 方案 - 客户端部分
为什么 DNS 会使用 UDP 协议,假如使用 TCP 协议又会发生什么呢?
今天要分析的具体问题是『为什么 DNS 使用 UDP 协议』,DNS 作为整个互联网的电话簿,它能够将可以被人理解的域名翻译成可以被机器理解的 IP 地址,使得互联网的使用者不再需要直接接触很难阅读和理解的 IP 地址。作者曾经在 详解 DNS 与 CoreDNS 的实现原理 一文中介绍过 DNS 的实现原理,这篇文章中就不会介绍 DNS 的实现原理了,感兴趣的读者可以看一下。
iMike
2020/05/26
2.4K0
为什么 DNS 会使用 UDP 协议,假如使用 TCP 协议又会发生什么呢?
Heartbleed心脏出血漏洞原理分析
   OpenSSL在实现TLS和DTLS的心跳处理逻辑时,存在编码缺陷。OpenSSL的心跳处理逻辑没有检测心跳包中的长度字段是否和后续的数据字段相符合,攻击者可以利用这一点,构造异常的数据包,来获取心跳数据所在的内存区域的后续数据。这些数据中可能包含了证书私钥,用户名,用户密码,用户邮箱等敏感信息。该漏洞允许攻击者从内存中读取多达64KB的数据。
全栈程序员站长
2022/09/08
1.3K0
Heartbleed心脏出血漏洞原理分析
详解-斗鱼弹幕API-接入(斗鱼弹幕服务器第三方接入协议)
如上图所示,每次发送的消息或者接收到的消息都会由 消息长度 + 消息长度 + 消息类型 + 真实消息内容 + 结尾标识 组成
用户1688446
2019/03/12
4.2K0
详解-斗鱼弹幕API-接入(斗鱼弹幕服务器第三方接入协议)
玩转直播系列之消息模块演进(3)
即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的作用。
2020labs小助手
2021/05/24
5760
.NET斗鱼直播弹幕客户端(上)
现在直播平台由于弹幕的存在,主播与观众可以更轻松地进行互动,非常受年轻群众的欢迎。斗鱼TV就是一款非常流行的直播平台,弹幕更是非常火爆。看到有不少主播接入 弹幕语音播报器、 弹幕点歌等模块,这都需要首先连接斗鱼弹幕。
梁规晓
2019/10/15
1.1K0
.NET斗鱼直播弹幕客户端(上)
接入bilibili直播开放平台
    在前几天,无意间看到了b站直播互动平台开放了开发者接入的功能,所以继接入qq和baidu登录授权功能后决定研究一下b站的直播互动平台接入有哪些不同。对于这篇文章酝酿了好些天,因为实在是有些不大好下手,不知道怎样写才能讲的更加清晰、易懂。
时光潜流
2022/12/26
5.8K0
接入bilibili直播开放平台
推荐阅读
相关推荐
B站直播弹幕ws协议分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验