安卓BiliBili新版缓存文件转mp4
本帖最后由 苏紫方璇 于 2023-9-17 20:49 编辑20230915更新
写在前面,用PC下载视频的方法很多,我这个只是因为手机缓存了两百多集的课程,临时用了一下。如果电脑需要建议还是直接用网上的插件、下载器等等下载
1. 此程序只测试了一个视频有多集的缓存视频。2. 用的是python+ffmpeg
3. 本次用的视频缓存文件目录结构如下
+---entry.json
+-----32
| +-------audio.m4s
| +-------video.m4s
已经发现存放音视频的 文件夹名称会变,我用的时候是32截图时用的新视频这里变成了 80所以代码也需要跟着改变一下这个数字
entry.json 文件中- page_data- part这一级里存放了视频的名称
去哔哩哔哩客户端 检测缓存可以拿到id
安卓B站缓存目录Android/data/com.bilibli.app.in/download/找到的id
安卓端操作
1. 缓存你要的视频
2. 确定视频id(如果你只缓存了一个视频、或者一个视频下面的多集 可以跳过,因为只会有一个文件夹)
进入我的 —— 离线缓存 — 右上角设置(下图)
点击 离线诊断
然后随便点个视频等待结果。 这里可以看到视频id 及目录结构(音视频存储的文件夹目录为80)
2. 在手机文件夹中找到这个视频的缓存文件
XXXX手机/Android/data/com.bilibili.app.in/download/你的视频id
把这整个id文件夹都拿到电脑上
PC端操作
1. 下载FFmpeg根据你的系统下载
https://github.com/BtbN/FFmpeg-Builds/releases
Windows可以选择 ffmpeg-master-latest-win64-gpl.zip
2. python安装ffmpeg-python库
pip install ffmpeg-python
3. 改下代码中的下面几个位置
folder_path = '视频id目录路径'
output_folder = '导出路径'
sub_folder = os.path.join(root, '音视频存储的文件夹名称')
4. 运行代码等结果
______________________代码不变__________________________
下面是代码
import os
import json
import ffmpeg
def merge_audio_video(folder_path, output_folder):
for root, dirs, files in os.walk(folder_path):
if 'entry.json' in files:
entry_file = os.path.join(root, 'entry.json')
with open(entry_file, 'r', encoding='utf8') as f:
entry_data = json.load(f)
part_name = entry_data.get('page_data').get('part')
if part_name:
sub_folder = os.path.join(root, '32')
# 每个视频的这个文件夹不一样 需要修改数字
print(sub_folder)
audio_file = os.path.join(sub_folder, 'audio.m4s')
video_file = os.path.join(sub_folder, 'video.m4s')
output_file = os.path.join(output_folder, f'{part_name}.mp4')
merge_files(audio_file, video_file, output_file)
print(f'Merged video: {output_file}')
def merge_files(audio_file, video_file, output_file):
audio_stream = ffmpeg.input(audio_file)
video_stream = ffmpeg.input(video_file)
ffmpeg.output(audio_stream, video_stream, output_file, vcodec='copy', acodec='copy').run()
# 指定文件夹路径和合并后的文件存放路径
folder_path = '视频id目录路径'
output_folder = '导出路径'
merge_audio_video(folder_path, output_folder)
命令找了下
-i /storage/emulated/0/bili/video.m4s -i /storage/emulated/0/bili/audio.m4s -vcodec copy -acodec copy /storage/emulated/0/bili/video1.mp4 代码是在手机端运行还是PC端运行? 可以可以,我建一个脚本试试。 b站视频好像要修复文件头,不用修复吗? 想起了,手机上不用,pc端才需要……
可以可以,我建一个脚本试试。 感谢分享,正好需要 timbre有安卓端的,一个命令搞定 这个和bilibili缓存音视频合并软件(含弹幕转码) v1.6这个有什么区别吗?