安卓BiliBili新版缓存文件转mp4

查看 77|回复 9
作者:Cristy   
[color=]20230915  更新
写在前面,用PC下载视频的方法很多,我这个只是因为手机缓存了两百多集的课程,临时用了一下。如果电脑需要建议还是直接用网上的插件、下载器等等下载
1. 此程序只测试了一个视频有多集的缓存视频。2. 用的是python+ffmpeg
3. 本次用的视频缓存文件目录结构如下
    +---entry.json
    +-----32
    |    +-------audio.m4s
    |    +-------video.m4s
   已经发现存放音视频的 文件夹名称会变,我用的时候是
[color=]32
  截图时用的新视频这里变成了 80  所以代码也需要跟着改变一下这个数字
   entry.json 文件中  - page_data  -   part  这一级里存放了视频的名称  


image.png (44.57 KB, 下载次数: 0)
下载附件
2023-9-15 10:32 上传

去哔哩哔哩客户端 检测缓存  可以拿到id
安卓B站缓存目录  Android/data/com.bilibli.app.in/download/找到的id
安卓端操作
1. 缓存你要的视频


37a427b8b06794992a9419405901dc45.jpg (207.19 KB, 下载次数: 0)
下载附件
截图1
2023-9-15 10:24 上传

   


ba7f481011eaa2c0b3fdb10cba23383d_720.jpg (153.99 KB, 下载次数: 0)
下载附件
截图2
2023-9-15 10:24 上传

2. 确定视频id(如果你只缓存了一个视频、或者一个视频下面的多集 可以跳过,因为只会有一个文件夹)
进入我的 —— 离线缓存 — 右上角设置(下图)


6afa735a472b34c6c69bff94b5a7a0f6.jpg (101.55 KB, 下载次数: 0)
下载附件
2023-9-15 10:29 上传

点击 离线诊断


80a30b0f681d14a96e2135fca9480369.jpg (84.08 KB, 下载次数: 0)
下载附件
2023-9-15 10:30 上传

然后随便点个视频  等待结果。 这里可以看到视频id 及目录结构(音视频存储的文件夹目录为
[color=]80



6890c736aa17113688e158e15dfd1e52.jpg (116.58 KB, 下载次数: 0)
下载附件
2023-9-15 10:31 上传

  
2. 在手机文件夹中找到这个视频的缓存文件
XXXX手机/Android/data/com.bilibili.app.in/download/你的视频id


7eb75eb77af450e325c3ba8564254298.jpg (73.05 KB, 下载次数: 0)
下载附件
2023-9-15 10:25 上传

      


02cc69eccf777aae99dd28a6f0fce635.jpg (65.28 KB, 下载次数: 0)
下载附件
2023-9-15 10:26 上传

把这整个id文件夹都拿到电脑上
PC端操作
1. 下载FFmpeg  根据你的系统下载
https://github.com/BtbN/FFmpeg-Builds/releases
Windows可以选择 [color=var(--fgColor-accent, var(--color-accent-fg))]ffmpeg-master-latest-win64-gpl.zip
2. python安装ffmpeg-python库
pip install ffmpeg-python
3. 改下代码中的下面几个位置
folder_path
[color=]=
'视频id目录路径'
output_folder
[color=]=
'导出路径'
sub_folder
[color=]=
os.path.join(root, '音视频存储的文件夹名称')
4. 运行代码等结果
______________________代码不变__________________________
下面是代码
[Python] 纯文本查看 复制代码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)

缓存, 下载次数

icie   

命令找了下
-i /storage/emulated/0/bili/video.m4s -i /storage/emulated/0/bili/audio.m4s -vcodec copy -acodec copy /storage/emulated/0/bili/video1.mp4
hrpzcf   

代码是在手机端运行还是PC端运行?
yzw001506   

可以可以,我建一个脚本试试。
无闻无问   

b站视频好像要修复文件头,不用修复吗?
无闻无问   

想起了,手机上不用,pc端才需要……
文西思密达   

可以可以,我建一个脚本试试。
bling   

感谢分享,正好需要
icie   

timbre  有安卓端的,一个命令搞定
w220913   

这个和bilibili缓存音视频合并软件(含弹幕转码) v1.6这个有什么区别吗?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部