前言
前段时间我买了一个平板,但是不得不说,实在是是太卡了(某多多平台购买)甚至连b站都打不开,上网太卡。尽管有个大屏幕。。。所以视频啥的只能下载观看。电脑下载b站视频没倒腾明白,不过肯定不能直接下载,然后我就用手机下载,然后导出为MP4,然后再传到平板上,本文将着重讲解后者。就当拿个python程序练练手吧。
前期准备
- 下载ffmpeg,windows下载地址戳我
- 准备好python环境
python 2 3 均可
第一步 解压ffmpeg
解压如下:
然后,电脑连接手机(视频已经提前下载好),找到视频文件目录( 我的是内部存储\Android\data\tv.danmaku.bili,可以参考)
把download文件夹复制到一个空文件夹中。download内部如下
第二步 运行python程序
将下面的代码保存到convert.py中,并且新建目录video作为输出文件夹,此时目录结构如下。
# convert.py
import os
import glob
import re
import time
import json
root = "D:\\手机\\bilibili\\" # 根文件夹
videoDir = root + "video\\" # 输出MP4文件夹
files = glob.glob(root+"download\\*\\*\\*\\audio.m4s") # 获取路径
# '\\'/ '/' ':' '*' '?' '\"' '<' '>' '|'
for file in files:
file = re.sub(r"audio\.m4s","",file)
titlefile = re.sub(r"\\\d*?\\$","",file)+"\\entry.json"
title = None
with open(titlefile,"r",encoding="utf-8") as f:
title = json.load(f)
names = file.split("\\")# names 做备用万一在json中找不到就用names命名文件
if title == None or (title!=None and title.get("title")==None):
title={"title":names[-4],"page_data":{"part":names[-3]}}
elif title.get("page_data").get("part") == None:
title["page_data"]["part"] = names[-3]
title["page_data"]["part"] = re.sub(r"\\| |/|:|\*|\?|\"|<|>|\|","",title["page_data"]["part"])
title["title"] = re.sub(r"\\| |/|:|\*|\?|\"|<|>|\|","",title["title"])
print(title["page_data"]["part"])
print(title["title"])
output = videoDir+title["title"]+"\\"+title["page_data"]["part"]+".mp4"
if not os.path.exists(output):
if not os.path.exists(videoDir+title["title"]):
os.mkdir(videoDir+title["title"])
os.system("ffmpeg -i " + file + "video.m4s -i "+ file +"audio.m4s -codec copy " + output)
然后cmd进入bin目录,如下操作。
输入:python youraddress/convert.py
第三步 将视频复制到平板中
此时,在video目录就有了MP4文件(每个文件夹下面都有MP4文件),直接连上数据线复制到平板即可。
PS:当新的b站视频需要转MP4时,直接放到download目录,运行convert.py即可。程序将仅仅转换新文件。
附录 可以将bin设置成环境变量,此时cmd进入哪个目录都可以运行程序了。
复制bin路径:E:\ffmpeg\bin(我的是这个)
然后回到桌面,右键此电脑->属性 如下
此时,cmd进入随便一个目录,输入ffmpegz,出现如下界面,则说明配置成功!