首页 > 其他分享 >批量合并手机上下载的B站视频

批量合并手机上下载的B站视频

时间:2022-09-05 13:12:37浏览次数:60  
标签:视频 ffmpeg 批量 m4s part dir av 下载

import os
import subprocess   # 进行命令行操作


def merge(inDir, outDir, ffmpeg):
    av_list = os.listdir(inDir)  # 获取视频列表,视频目录名就是视频的av号
    for av in av_list:           # 遍历每个视频,
        av_dir = inDir + "\\" + av      # 拼接路径与文件名,得到每个av号的路径
        part_list = os.listdir(av_dir)   # 分P(part)的视频,每个av号会对应多个视频,在此得到part的列表

        for part in part_list:       # 遍历视频的每P
            part_dir = av_dir + "\\" + part    
            # 在每个part下面,会有一个用数字命名文件夹,一个xml,一个json。猜测数字代表的是视频的清晰度
            # 我们的视频在那个用数字命名的文件夹里面
            sub_part_list = os.listdir(part_dir)   # 得到每P文件夹下的文件目录

            for sub_part in sub_part_list:     # 遍历每P下的文件
                if (sub_part.isdigit()):    # 只需要对 以数字命名的文件夹 进行操作
                    # 在以数字命名的文件夹下面,会有三个文件,其中audio.m4s和video.m4s是我们需要的
                    # 他们分别是我们下载的视频的 音频和没有声音的视频 
                    # 我们把这两个文件通过ffmpeg混流,就可以还原出之前下载的视频
                    file_path = part_dir + "\\" + sub_part  
                    # file_path即为audio.m4s和video.m4s的路径
                    command = ffmpeg + '"' + file_path + '\\audio.m4s' + '"' + ' -i ' \
                        + '"' + file_path + '\\video.m4s' + '"' + ' -acodec copy -vcodec copy '\
                        + '"' + outDir + '\\' + av + "→" + part+'.mp4"'
                        # 使用命令行进行混流
                    subprocess.Popen(command, stdout=subprocess.PIPE)   # 执行命令
                break

def main():
    inDir = "D:\\wenjian\\temp\\download"  # 视频的总目录,即输入内容。注意双反斜线
    outDir = "D:\\wenjian\\temp\\download_res"  # 视频的输出目录,转换好的视频会放到这里

    # ffmpeg的路径,注意'-i'后面有空格
    ffmpeg = 'D:\\ruanjian2\\ffmpeg-2022-08-31-git-319e8a49b5-full_build\\bin\\ffmpeg.exe -i '
    merge(inDir, outDir, ffmpeg)

if __name__ == '__main__':
    main()

标签:视频,ffmpeg,批量,m4s,part,dir,av,下载
From: https://www.cnblogs.com/runner-sky/p/16657741.html

相关文章

  • FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社
    大家好,我的第一本书正式出版了,可以在京东各大店铺抢购哦。《FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社》         出书过程非常艰辛,来......
  • 如何使用 Python 翻译 YouTube 上的视频
    如何使用Python翻译YouTube上的视频Photoby诺德伍德主题on不飞溅大家好,今天我们将构建一个有趣的应用程序Python将音频语言从YouTube进入另一个语.这......
  • python 下载url函数
    importrequestsimportshutildefdownload_file(url,local_filename):""":paramurl:url连接:paramlocal_filename:下载后保存文件名字"""......
  • 多文件,从url地址中下载文件并进行压缩
    直接上代码Controller层 //我这里直接拿实体接收,entity.getFile()是List<对象>,对象里面存储文件相关的内容@PostMapping("/zipDownload")@ApiOperation(value......
  • 拿来即用的下载Excel模板
    模板导出拿来即用 @PostMapping("/templateExport") @ApiOperation(value="模板导出",notes="作者:yysd") publicReturnObjectexportAuditContent(HttpServletRe......
  • 文献管理软件zotero | 下载安装使用与配置分享
    前言最开始阅读文献是使用readpaper平台,在线翻译、做笔记、文献管理都很方便,具体使用可以参考同济子豪兄和官方ReadPaper保姆级教程。但随着科研深入,readpaper的文献管理......
  • 【django学习-08】视图之HttpResponse文件下载
    一:前言:响应内容除了返回网页信息外,还可以实现文件下载功能,是网站常用的功能之一。Django提供三种方式实现文件下载功能,分别是HttpResponse,StreamingHttpResponse和FileRe......
  • 【PR】如何裁剪视频得页面?
    【PR】如何裁剪视频得页面?选择视频轨道|效果|裁剪(可以搜索)|调整上下左右需要裁剪的大小|选择缩放,去掉黑边......
  • linux的下载
           ......
  • Java实现文件下载Zip压缩
    Java实现文件下载Zip压缩目录一、概述二、代码功能实现一、概述开发过程中碰到一个需求,需要将服务器上的多个文件打包为zip,并进行下载响应到客户端,写了一个Demo总......