Skip to content

niyuancheng/bilibili-service

Repository files navigation

bilibili-service

提供B站的弹幕和视频流服务,只需输入B站视频的bvid即可获取对应视频的视频流和弹幕池信息

更新!!

公网体验地址:http://47.101.212.31/getVideoData?bvid=(bvid) 提供最高画质原版视频同时支持免费下载!!!

使用方式

  1. 首先将项目clone到本地,运行pnpm i命令初始化。
  2. 找到index.js文件,运行node index.js
  3. 到B站上找到你喜欢视频的bvid,接着在浏览器访问本地服务https://127.0.0.1?getVideoData=(bvid)
  4. 接着你就会看到对应bvid的视频就已经完成下载并且在浏览器端播放了: PS,确保你本地已经安装好了python和ffmpeg,具体安装方式可自行google

这是原视频:

image

本地启用服务后,输入该视频bvid

image

接着等待片刻后,我们就可以看到视频已经加载成功了:

image

对应后台的文件已经下载到本地:

image

视频bvid获取步骤

所谓的bvid很好获取,首先找到你喜欢的视频播放页面,右击选择_复制视频地址_:
image
接着我们会获得如下的地址:

https://www.bilibili.com/video/BV1Ud4y1V79P?t=0.7

其中的BV1Ud4y1V79P就是该视频的bvid,其余视频也是同理。

数据

  1. B站获取到的弹幕池数据是xml类型的文本: image
  2. 视频流数据不是单纯的mp4文件,因为B站使用的是MPEG-DASH流媒体协议,因此获取的视频数据是json文本格式,其中的组织形式类似于manifest文件,描述的类似于每一个视频和音频分片的数据,例如分辨率,地址,大小,码率等;后缀名为m4s;如下图: image

弹幕数据解析

本项目提供了对B站弹幕文件的解析,我们可以看到B站的弹幕文件每一个弹幕都是包裹着。。。。,其中的p就是描述了弹幕的属性。
image

  • 参数1(227.02100):弹幕出现的时间,以秒数为单位
  • 参数2(1):弹幕的模式,1-3 滚动弹幕,4 底端弹幕,5顶端弹幕,6 逆向弹幕,7 精准定位,8 高级弹幕
  • 参数3(25):字号 (12非常小,16特小,18小,25中,36大,45很大,64特别大)
  • 参数4(9033215):字体的颜色;这串数字是十进制表示;通常软件中使用的是十六进制颜色码; e.g: 白色
    RGB值:(255,255,255)
    十进制值:16777215
    十六进制值:#FFFFFF
  • 参数5(1673862377):unix时间戳,从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数
  • 参数6(0):弹幕池,0普通池,1字幕池,2特殊池 【目前特殊池为高级弹幕专用】
  • 参数7(91b2bf5a):发送者的ID,用于“屏蔽此弹幕的发送者”功能
  • 参数8(1231205872512908544):弹幕在弹幕数据库中rowID 用于“历史弹幕”功能。

B站API接口

  1. 获取视频aid: https://api.bilibili.com/x/player/pagelist?bvid=(bvid)
  2. 获取视频cid: https://api.bilibili.com/x/web-interface/view?cid=${cvid}&bvid=${bvid}
  3. 获取对应视频的弹幕池文件: https://api.bilibili.com/x/v1/dm/list.so?oid=(cvid)
  4. 获取视频流文件(多种清晰度):https://api.bilibili.com/x/player/playurl?fnval=80&avid=${avid}&cid=${cvid}

About

提供B站的弹幕和视频下载服务,只需输入B站视频的bvid即可获取下载超清以上的高画质视频和弹幕池信息!!!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published