bilibili缓存文件夹文件目录分析
Posted holittech
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bilibili缓存文件夹文件目录分析相关的知识,希望对你有一定的参考价值。
一、文件类型
1. 1080P视频内容:m4s项目
(media-type)类型编码:2
m4s项目是bilibili存储的一些清晰度较高或较大较长的视频文件
你可以使用ffmpeg进行连接,也可以使用我开发的GUI版本(https://github.com/Holit/ffmpegLinker)
2. 其他内容:blv项目
(media-type)类型编码:1
blv其实就是bilibili更改的FLV文件,你可以使用ffmpeg转换,也可以直接该拓展名为flv
另外序列视频文件如0.blv,1.blv,2.blv等表示了序列的顺序,你可以按照0、1、2、3、4的顺序合并这些flv文件
参见:https://www.littleqiu.net/archives/886
二、文件目录详解
android文件缓存位置:data v.danmaku.bilidownload...
1.系列文件
downloads_{id}{ep_id}清晰度信息文件列表[0~N].blv #播放文件
index.json #数据文件
entry.json #入口文件(见下)
danmuku.xml #弹幕文件
例子:downloads_357249469lua.flv480.bb2api.32 .blv (猫和老鼠(旧版)第一部第一集,播放地址:https://www.bilibili.com/bangumi/play/ep249469)
- {id} s_剧集id:表示了剧集的id定位位置,即https://www.bilibili.com/bangumi/play/ss{id}
- {ep_id} 分P号:表示了这个文件来自于剧集id的视频号,即https://www.bilibili.com/bangumi/play/ep{ep_id}
- 清晰度信息:
- 一般以lua.{type}.{api}开头
- type:包含了视频类型和清晰度,如flv/flv480
- api:暂不清楚
- 一般以lua.{type}.{api}开头
- 文件列表
- 一般是blv文件
- 按照0.blv 1.blv等排序,表示了视频的顺序
2.缓存单文件
downloadav号1清晰度信息vedio.m4s #m4s文件
audio.m4s
index.json #数据文件
entry.json #入口文件
三、文件结构
1.index.json(对应m4s)
原视频:https://www.bilibili.com/video/av80959848
{"video": #视频内容消息
[
{
"id":112,
"base_url":"https://upos-hz-mirrorks3u.acgvideo.com/upgcxcode/07/48/138564807/138564807-1-30112.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEuENvNC8aNEVEtEvE9IMvXBvE2ENvNCImNEVEIj0Y2J_aug859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859IB_&uipk=5&nbs=1&deadline=1579364249&gen=playurl&os=ks3u&oi=3084983280&trid=dbd1c5a062ca4e59b6019c5a15522f4du&platform=android&upsig=5ec2887544562b37b28841b7e0bab9ba&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=68089222",
#原视频获取地址,注意:直接访问会导致 403 Forbidden错误
"backup_url":
[
"https://upos-sz-mirrorks3.bilivideo.com/upgcxcode/07/48/138564807/138564807-1-30112.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEuENvNC8aNEVEtEvE9IMvXBvE2ENvNCImNEVEIj0Y2J_aug859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859IB_&uipk=5&nbs=1&deadline=1579364249&gen=playurl&os=ks3bv&oi=3084983280&trid=dbd1c5a062ca4e59b6019c5a15522f4du&platform=android&upsig=d2c5d34dcf612c4a00d6863a4036bf10&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=68089222"
#备存的视频地址
],
"bandwidth":5973795, #带宽
"codecid":7,
"size":145760613, #大小,单位为字节
"md5":"58cbd8bc70f10f5ec708dfc06e37a83e"#MD5校验
}
],
"audio": #音频内容消息
[
{
"id":30280,
"base_url":"https://upos-sz-mirrorhw.bilivideo.com/upgcxcode/07/48/138564807/138564807_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEuENvNC8aNEVEtEvE9IMvXBvE2ENvNCImNEVEIj0Y2J_aug859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859IB_&uipk=5&nbs=1&deadline=1579364249&gen=playurl&os=hwbv&oi=3084983280&trid=dbd1c5a062ca4e59b6019c5a15522f4du&platform=android&upsig=d787321f450cdbfa94d8e57da87c9412&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=68089222",
"backup_url":
[
"https://upos-sz-mirrorks3.bilivideo.com/upgcxcode/07/48/138564807/138564807_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEuENvNC8aNEVEtEvE9IMvXBvE2ENvNCImNEVEIj0Y2J_aug859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859IB_&uipk=5&nbs=1&deadline=1579364249&gen=playurl&os=ks3bv&oi=3084983280&trid=dbd1c5a062ca4e59b6019c5a15522f4du&platform=android&upsig=bf39193d876386e91d0ac1e7828204ea&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=68089222"
],
"bandwidth":319160,
"codecid":0,
"size":7790910,
"md5":"902911e36938be7a4fedc7b705fade34"
}
]
}
2.entry.json
原视频:https://www.bilibili.com/video/av80959848
{
"media_type":2, #媒体类型"has_dash_audio":true,
"is_completed":true, #下载结束
"total_bytes":153551523, #总大小
"downloaded_bytes":153551523, #下载大小
"title":"【韩小沐×妈咪叔×中二所】某不科学の超抖肩舞【COINCIDANCE】【正负电子の奇妙冒险】",#标题
"type_tag":"112",
"cover":"http://i1.hdslb.com/bfs/archive/381050f060f9a7c2c57e273ecf8e3758148cbc27.jpg","prefered_video_quality":112,#封面
"guessed_total_bytes":0,
"total_time_milli":195325, #视频长度,以ms(毫秒)为单位
"danmaku_count":909, #弹幕条数
"time_update_stamp":1579357099610, #更新时间戳
"time_create_stamp":1579357043896, #创建时间戳
"avid":80959848, #av号
"spid":0,
"seasion_id":0,
"page_data": #页数据(分P)
{
"cid":138564807,
"page":1,
"from":"vupload",
"part":"【韩小沐×妈咪叔×中二所】某不科学の超抖肩舞【COINCIDANCE】【正负电子の奇妙冒险】",
"vid":"",
"has_alias":false,
"tid":124,
"width":1920, #宽度
"height":1080, #高度
"rotate":0, #旋转
"download_title":"视频已缓存完成",
"download_subtitle":"【韩小沐×妈咪叔×中二所】某不科学の超抖肩舞【COINCIDANCE】【正负电子の奇妙冒险】
【韩小沐×妈咪叔×中二所】某不科学の超抖肩舞【COINCIDANCE】【正负电子の奇妙冒险】"
}
}
3.danmuku.xml
原视频:https://www.bilibili.com/video/av80959848
<?xml version="1.0" encoding="UTF-8"?>
<i>
<chatserver>chat.bilibili.com</chatserver>
<chatid>138564807</chatid>
<mission>0</mission>
<maxlimit>1000</maxlimit>
<state>0</state>
<real_name>0</real_name>
<source>k-v</source>
<d p="15.90500,1,25,16777215,1577530864,0,43259dda,26418185093775364">前方高能</d>
</i>
格式解析:
- 标准头,其中包含了xml的基础信息
- <i></i> 代表了第一列表
<?xml version="1.0" encoding="UTF-8"?>
<i></i>
<chatserver>chat.bilibili.com</chatserver>
<chatid>138564807</chatid>
<mission>0</mission>
<maxlimit>1000</maxlimit>
<state>0</state>
<real_name>0</real_name>
<source>k-v</source>
<d p="15.90500,1,25,16777215,1577530864,0,43259dda,26418185093775364">前方高能</d>
- chatsever:弹幕库服务器地址
- chatid:弹幕内容连接的
- maxlimit:弹幕最大数量,默认为1000
- <d></d>:
以<d p="15.90500,1,25,16777215,1577530864,0,43259dda,26418185093775364">前方高能</d> 为例
- 15.90500 弹幕出现的时间 单位为秒,精确度为小数点后5位,即0.01ms
- 1 弹幕的模式
- 1..3 滚动弹幕
- 4 底端弹幕
- 5 顶端弹幕
- 6 .逆向弹幕
- 7 精准定位
- 8 高级弹幕
- 25 字号,
- 12 非常小,
- 16 特小,
- 18 小,
- 25 中,
- 36 大,
- 45 很大,
- 64 特别大
- 16777215 字体的颜色 以html颜色的十位数为准
- 1577530864 Unix格式的时间戳。基准时间为 1970-1-1 08:00:00
- 0 弹幕池
- 0 普通池
- 1 字幕池
- 2 特殊池 【目前特殊池为高级弹幕专用】
- 43259dda 发送者的ID,用于“屏蔽此弹幕的发送者”功能
- 26418185093775364 弹幕在弹幕数据库中rowID ,用于“历史弹幕”功能。
- 前方高能 弹幕的内容
四、该解析待补全
以上是关于bilibili缓存文件夹文件目录分析的主要内容,如果未能解决你的问题,请参考以下文章
Android获取各个应用程序的缓存文件代码小片段(使用AIDL)
在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段