简介

有时候在 B 站发布的视频下架了,虽然已经缓存了,但是 B 站已经把视频处理过,无法在相册查看和上传电脑,本教程利用 ffmpeg 将 B 站的缓存的视频和音频合并成 mp4 文件

本教程使用 python 编程,但使用 ffmpeg 合并音视频

安装 ffmpeg

进入官网下载:Download FFmpeg

选择 windows,点击第一个

ffmpeg下载页面

选择 ffmpeg-git-full.7z

下载ffmpeg

解压

解压后的文件夹目录

设置环境变量

在系统变量的 Path 下新增环境变量,路径为解压后的文件夹路径加上 bin 目录即可

添加环境变量

win10 配置计算机环境变量

测试

测试ffmpeg是否安装成功

寻找缓存视频的位置

2022 了,手机 app 版 b 站的缓存视频文件在哪里找

简单来说就是到离线缓存 -> 设置 (小齿轮)-> 离线诊断,选择一个缓存过的视频,找到视频 id,到文件管理器搜索,

直接去文件管理器去找 B 站缓存视频的位置:Android\data\tv.danmaku.bili\download

找到位置后复制视频到电脑

编写代码

新建 demo.py,将以下代码复制到 demo.py 中,执行 python demo.py 运行

input_path 就是上传的 B 站缓存视频文件夹

out_path 就是输出视频文件夹

python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import os
import json


input_path="./系统架构师"
out_path="./out"

filename=""
video_path=""
audio_path=""

def read_json(path):
with open(path,'r',encoding='utf-8') as load_f:
return json.load(load_f)

for root,dirs,files in os.walk(input_path):
if root==input_path:
continue
for item in files:
if item == "entry.json":
json_data=read_json(root+"/"+item)
filename=json_data['page_data']['part'].rsplit('_',1)[0].replace(" ","_",10)
if item == "video.m4s":
video_path=root+"/"+item
if item == "audio.m4s":
audio_path=root+"/"+item
if filename!="" and video_path!="" and audio_path!="":
os.system('ffmpeg.exe -i '+video_path+' -i '+audio_path+' -vcodec copy -acodec copy '+out_path+'/'+filename+'.mp4 '+' -y')
filename=""
video_path=""
audio_path=""