B站缓存视频JSON修改全攻略:从解析到自定义调整
B站(哔哩哔哩)作为国内年轻人喜爱的视频平台,其“缓存视频”功能让用户能够离线观看喜爱的内容,不少技术爱好者或特殊需求用户(如想调整清晰度、提取音频等)会好奇:B站缓存的视频文件是否可以修改?答案藏在缓存的JSON配置文件中,本文将详细解析B站缓存视频的JSON结构,讲解如何修改这些JSON文件,以及修改时的注意事项,助你解锁缓存视频的“自定义玩法”。
B站缓存视频的JSON是什么?
B站缓存视频时,会将视频分片(如不同清晰度的视频片段、音频片段)下载到本地,同时生成一个或多个JSON配置文件,这些JSON文件相当于“缓存清单”,记录了视频的分片链接、清晰度信息、编码格式、文件路径等关键元数据,用于播放器组装完整的视频。
缓存文件会存储在Android设备的Android/data/tv.danmaku.bili/download
目录(iOS设备可通过iTunes或文件管理器访问),每个缓存视频对应一个独立文件夹,内含.m4s
视频/音频分片文件和.json
配置文件(文件名可能包含视频avid或cid)。
如何找到并解析缓存JSON文件?
定位JSON文件
以Android设备为例:
- 打开B站APP → 进入“我的”→“离线缓存”→找到目标视频,点击“查看文件”(部分版本需通过文件管理器手动进入缓存目录)。
- 路径:
内部存储/Android/data/tv.danmaku.bili/download/
,每个视频对应一个以数字或avid命名的文件夹,打开后即可找到.json
文件(如entry.json
或dash-manifest.json
)。
JSON文件核心字段解析
B站缓存JSON通常采用DASH(Dynamic Adaptive Streaming over HTTP)
标准,核心字段包括:
segment_base
:分片信息,包含视频/音频片段的URL列表(.m4s
文件)。mime_type
:编码格式,如video/mp4
(视频)、audio/mp4
(音频)。bandwidth
:码率,与清晰度相关(如1000000
≈1Mbps,对应“流畅”或“480P”)。width
/height
:视频分辨率(如1280x720
)。codecs
:编码格式,如avc1.640028
(H.264)、hev1.1.6.L120.90
(H.265)。base_url
:分片文件存储的相对路径,用于定位.m4s
文件。
示例片段:
{ "segment_base": { "index_range": "0-123", "media_range": "124-56789", "initialization": "init.mp4", "media": [ {"url": "000.m4s"}, {"url": "001.m4s"}, ... ] }, "mime_type": "video/mp4; codecs=\"avc1.640028\"", "bandwidth": 1500000, "width": 1280, "height": 720 }
修改缓存JSON的常见场景与操作方法
场景1:切换视频清晰度
需求:缓存时误选低清晰度(如480P),想通过修改JSON切换为720P或1080P。
操作步骤:
- 备份原JSON:修改前务必复制一份原始文件,避免缓存失效。
- 定位目标清晰度字段:JSON中可能包含多个“轨道”(视频+音频),每个轨道对应一个清晰度。
video
列表中可能有bandwidth
为500000
(480P)、1500000
(720P)、3000000
(1080P)的条目。 - 修改激活轨道:找到目标清晰度的轨道,将其
id
或index
值设为当前激活状态(通常JSON中会有current_quality
或selected_index
字段,修改为目标轨道的索引)。
示例:
假设原JSON选中bandwidth=500000
(480P),需切换到bandwidth=1500000
(720P),找到对应轨道的index
(如1
),修改selected_index
为1
。
场景2:提取纯音频或纯视频
需求:只想缓存视频的音频(如音乐MV)或视频画面(如无解说视频)。
操作步骤:
- 识别音频/视频轨道:JSON中
mime_type
为audio/mp4
的为音频轨道,video/mp4
的为视频轨道。 - 删除不需要的轨道:
- 若只保留音频:删除所有
mime_type
为video/mp4
的轨道,仅保留音频轨道。 - 若只保留视频:删除所有
mime_type
为audio/mp4
的轨道,仅保留视频轨道。
- 若只保留音频:删除所有
- 调整分片路径:确保剩余轨道的
base_url
或segment_base.media.url
指向对应的.m4s
文件(音频分片通常以audio_
开头,视频分片以video_
开头)。
注意:提取纯音视频后,需使用支持单轨道播放的工具(如ffmpeg
)合并或单独播放。
场景3:修复损坏的缓存(分片路径错误)
需求:缓存中断后,分片文件路径与JSON记录不符,导致无法播放。
操作步骤:
- 检查分片文件:进入缓存文件夹,确认
.m4s
文件是否存在(如m4s
、m4s
等)。 - 修正
base_url
或media.url
:若分片文件被移动或重命名,需修改JSON中的路径字段,使其与实际文件名一致,原JSON中media.url
为video/000.m4s
,实际文件为m4s
,则删除video/
前缀。
场景4:自定义播放顺序(多视频拼接)
需求:将多个缓存视频的分片合并为一个文件,实现连续播放。
操作步骤:
- 合并JSON的
media
列表:打开多个视频的JSON文件,将它们的segment_base.media
数组拼接(如视频A的分片为000-099.m4s
,视频B为100-199.m4s
,合并后为000-199.m4s
)。 - 统一分片路径:确保合并后的分片路径连续且无冲突(如统一命名为
m4s
、m4s
…)。 - 调整索引范围:修改
segment_base.index_range
和media_range
,覆盖所有合并后的分片大小。
注意:此操作需谨慎,需确保视频编码、分辨率一致,否则播放可能异常。
修改JSON的注意事项与风险提示
-
备份!备份!备份!
JSON修改错误可能导致缓存无法播放、分片丢失,甚至触发B站异常检测,务必修改前备份原始文件。 -
文件权限与格式
- Android设备中,缓存文件默认为“只读”,需通过Root或文件管理器(如MT管理器)获取写入权限。
- JSON格式需严格遵循规范(如逗号、引号、括号匹配),否则无法解析,建议使用VS Code、Sublime Text等工具编辑,开启“语法高亮”和“格式校验”。
-
B站版本差异
不同版本的B站可能采用不同的JSON结构(如旧版使用flv-manifest.json
,新版使用dash-manifest.json
),需根据实际版本调整修改逻辑。 -
版权与合规性
修改缓存视频仅限个人学习使用,严禁用于二次传播、商业用途或破解版权保护,否则可能涉及法律风险。 -
替代方案:专业工具
若对JSON修改不熟悉,可尝试第三方工具(如“B站缓存视频合并器”“BiliDown”),它们支持自动切换清晰度、提取音视频等功能,操作更便捷。
B站缓存视频的JSON文件是连接分片与播放器的“桥梁”,通过解析和修改这些文件,我们可以实现自定义清晰度、提取音视频、修复损坏缓存等需求,但技术操作需谨慎,务必提前备份、确认格式合规,并遵守平台规则,对于普通用户,若仅需调整清晰度,建议直接通过B站APP的“离线设置”重新缓存,更安全高效。
希望本文能帮你
还没有评论,来说两句吧...