前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >B站直播间协议指南

B站直播间协议指南

作者头像
KAAAsS
发布2022-01-14 18:12:09
1.9K0
发布2022-01-14 18:12:09
举报
文章被收录于专栏:KAAAsS's Blog

文章目录[隐藏]

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

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

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

协议头

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

代码语言:javascript
复制
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
复制
{"roomid ":0,"uid":0}

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

响应

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

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

代码语言:javascript
复制
{"cmd":"...","info":xxx}

其中,cmd允许的值有:

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

具体数据格式有待更新。

直播人数

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 协议头
  • 请求
    • 进入房间、心跳包
    • 响应
      • 弹幕、送礼、进入提示、开始直播、准备直播
        • 直播人数
        相关产品与服务
        云直播
        云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档