安卓手机上批量合并b站视屏并重命名

现在b站缓存好的视屏是音视频分离的;output.mp4是合并好的的视屏;
视屏的信息在父路径下的entry.json文件里面,另外一个xml文件是弹幕信息
安卓手机上批量合并b站视屏并重命名_第1张图片
在手机上安装一个软件Termux
安卓手机上批量合并b站视屏并重命名_第2张图片
各个版本的下载地址
目前最新的下载地址

1.安装ffmpeg

pkg install ffmpeg

安卓手机上批量合并b站视屏并重命名_第3张图片

2.申请访问手机目录

termux-setup-storage

3.找到手机上视屏的缓存路劲

最好有es文件浏览器路劲复制过来

  • 这不是完成路径,自己补充完整
cd    /storage/emulated/0/Android/data/tv.danmaku.bili/download/
ffmpeg -i video.m4s -i audio.m4s -c:v copy -c:a aac -strict experimental output.mp4

安卓手机上批量合并b站视屏并重命名_第4张图片

以上完成了合并一个视屏

批量合并要安装python

1.安装python

pkg install python

安装完成后输入:

python

如下图所示
安卓手机上批量合并b站视屏并重命名_第5张图片

把代码放到视屏路径下

tv.danmaku.bili/download/视屏的AV号/

win10版

ffmpeg批量合并b站的视屏和音频并修改文件的名称

import os
import json

def path(path,name):
    """
    :param path: 视屏项目的总目录
    :param name: audio.m4s 音频的文件名,每个音频的名字是一样的
    :return: (视屏路劲,音频路径,视屏信息的json文件路径)
    """
    res=[]
    base=os.path.abspath(path)
    for root,dirs,files in os.walk(base):
        if not dirs:
            for file in files:
                if name in file:
                    r=os.path.join(root,file)
                    res.append((r,r.replace('audio.m4s','video.m4s'),os.path.join(os.path.dirname(os.path.dirname(r)),'entry.json')))
    return res


def get_info(file_path):
    """
    :param file_path: entry.json文件的路径
    :return: 视屏的标题信息
    """
    with open(file_path,'rb')as f:
        obj=json.load(f)
    return obj['page_data']['part']

def has_mp4(file_path):
    """
    过滤掉已有.mp4文件的目录
    :param file_path: 视屏目录
    :return: True or False
    """
    return any(['.mp4'in x for x in os.listdir(file_path)])

if __name__ == '__main__':
    #test
    # test=path(".", "audio.m4s")
    # print(test)
    
    file_list=path(".", "audio.m4s")
    #先测试一个
    for x in file_list[:1]:
    #全部
    #for x in file_list:
        video_name=get_info(x[2])
        work_path=os.path.dirname(x[0])
        #把已转换的目录过滤掉
        if has_mp4(work_path):
            continue
        print(work_path)
        #判断是否是win的系统
        if "win" in sys.platform:
            cmd = 'cd %s & ffmpeg -i audio.m4s -i video.m4s -c:v copy -c:a aac -strict experimental "%s.mp4"' % (
            work_path, video_name)
        else:
	        cmd='cd %s ; ffmpeg -i audio.m4s -i video.m4s -c:v copy -c:a aac -strict experimental "%s.mp4"'%(work_path,video_name)
        print(cmd)
        os.system(cmd)

批处理中的&、&&、|、||、>、>>符号

win10是

cd 1 & cd 1

这里是

cd 1  ;   cd 1

Syntax error: “(” unexpected报错的原因的是,获取的文件信息里面有带括号的文件名导致的,给输出的文件名加上引号解决

"%s.mp4"

此时合并完成一个

安卓手机上批量合并b站视屏并重命名_第6张图片

去目录下查看

安卓手机上批量合并b站视屏并重命名_第7张图片

你可能感兴趣的:(python)