声明:本文展示的方法,绝对不是最佳方案,仅供参考
我一直把B站当成一座知识的宝库,偶尔也能挖到意想不到的资源。一般这时,我就会小手一抖,缓存这种限时特供的资源。那么问题来了,怎么把视频从手机搞到电脑或其他设备上呢?
第一步:找到缓存的文件
以android手机为例,B站缓存的资源路径为:内部存储设备>Android>data>tv.danmaku.bili>download
第二步:将文件拷贝到电脑
如上图,将10000XXXX和882XXXXXXX文件夹拷贝到电脑,传输工具可以选择Android传输工具(Mac端)
第三步:分析缓存结构
882XXXX文件下,按视频集数序号生成文件夹,文件夹内结构基本固定。
第四步:利用moviepy合并视频音频安装moviepy
sudo pip install --ignore-installed moviepy
编写实现代码
from moviepy.editor import *
import json
import os
def getTitle(entry_json_path):
"""
读取entry.json,获取资源标题
"""
f = open(os.path.join(entry_json_path, "entry.json"), encoding='utf-8')
entry = json.load(f)
return entry['page_data']['download_subtitle']
def mix(video_path, target_dir):
"""
合并video.m4s和audio.m4s,输出mp4文件
"""
video = VideoFileClip(os.path.join(video_path, "video.m4s"))
audio_clip = AudioFileClip(os.path.join(video_path, "audio.m4s"))
movie = video.set_audio(audio_clip)
movie.audio = movie.audio.set_duration(video.duration)
title = getTitle(os.path.dirname(video_path))
print("开始渲染文件:" + title)
movie.write_videofile(os.path.join(target_dir, title) + ".mp4", fps=25)
print("结束渲染文件:" + title)
def getVideoPath(parent_path, dir, video_paths):
"""
递归获取视频文件路径
"""
path = os.path.join(parent_path, dir)
if os.path.isdir(path):
files = os.listdir(path)
for file in files:
if file == '.DS_Store':
continue
if file == 'video.m4s':
video_paths.append(path)
if os.path.isdir(os.path.join(path, file)):
getVideoPath(path, file, video_paths)
elif dir == 'video.m4s':
video_paths.append(parent_path)
if __name__ == '__main__':
# 缓存目录
base_dir = '/Users/admin/Downloads/882576229'
# 合成文件存储路径
target_dir = '/Users/admin/Downloads/882576229'
# 遍历缓存目录,执行合并文件
video_paths = []
filenames = os.listdir(base_dir)
for filename in filenames:
if filename == '.DS_Store':
continue
getVideoPath(base_dir, filename, video_paths)
for video_path in video_paths:
mix(video_path, target_dir)
第五步:执行合并
python av.py
总结
本方案适合喜欢动手的同学,在资源允许的情况下,执行批量操作。
moviepy比较吃资源。
限时特惠:本站每日持续更新5-20节内部创业项目课程,一年会员
只需199元,全站资源免费下载点击查看详情
站长微信:
jjs406
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。