Posts
手机缓存的B站转MP4
手机缓存的B站转MP4
手机下载的盗版视频被和谐了 导出B站手机m4s视频存到电脑上
# cmd chcp to check cmd encode
# encode No
# 65001 utf-8
# 20936 : GB2312
# 936 : GBK
# 437 : en-us
# D:\m4s转换\ffmpeg\bin\ffmpeg -i video.m4s -i audio.m4s -c:v copy -strict experimental output.mp4
import sys, os, json
from pathlib import Path
def m4s2mp4(root, out_dir):
root = Path(root)
out_dir = Path(out_dir)
for video_folder in root.iterdir():
for video_wrapper in video_folder.iterdir():
try:
# parse json file to get video information
config = video_wrapper / 'entry.json'
if config.exists():
# may face some encoding problem and then covnert format mannually
cfg = json.load(open(config, 'rb'))
title = cfg['title']
title = ''.join(title.split())
part = cfg['page_data']['part']
part = '-'.join(part.split('丨'))
size = int(cfg['total_bytes'] / 2 ** 20)
sub_dir = out_dir / video_folder.name
os.makedirs(sub_dir, exist_ok=True)
filename = f"{part}-{title}-{size}m"
output = sub_dir / filename
for video in video_wrapper.iterdir():
if not os.path.exists(f"{output}.mp4") and video.is_dir():
print(video_wrapper)
os.system(f"D:\\m4s\\ffmpeg\\bin\\ffmpeg -i {video / 'video.m4s'} -i {video / 'audio.m4s'} -c:v copy -strict experimental {output}.mp4")
except:
print(video_wrapper)
if __name__ == "__main__":
root = "D:/m4s_video"
out_dir = "D:/mp4_video"
m4s2mp4(root, out_dir)Updated at