保姆级教程,如何将b站下载视频m4s文件批量转换成mp4 |
您所在的位置:网站首页 › 如何将rar转化成安装包手机版 › 保姆级教程,如何将b站下载视频m4s文件批量转换成mp4 |
本文适用于:使用安卓手机下载后导入至windows系统电脑的b站视频。 示例使用XIAOMI MIUI 13.0.12,B站版本6.77.0,windows 11, python 3.10.5,ffmpeg (2022-08-10-git-8fc7f0fdec) 注意事项:使用批量化python脚本需要电脑有python环境,以及安装ffmpeg,后文有详细介绍。python文件将在评论区置顶连接中下载(写的真的很随意,大佬不要骂我,感恩)。 此专栏为批量转换需求而写,所以较为繁琐。若是少量或单个视频转换,请参考CV14802750,这位大佬所使用的方法。 1. b站下载的视频存放位置以及传输(小米,大部分安卓手机应该是相同的) a) 连接电脑与手机,选择文件传输模式 b) 在文件夹 Android/data/tv.danmaku.bili/download 下可以找到下载的视频及文件夹,文件夹名是B站a_v号。 c) 将想要转换的视频的文件夹复制至电脑D盘bilibiliVideoDLSmall文件夹中。(D:\bilibiliVideoDLSmall)。可以是别的文件夹,只需要在 python 文件中修改 mydir 变量即可。 d) mp4生成文件存放位置,请在D盘新建文件夹名为”bilibiliVideoDLOutput“。完整路径是D:/bilibiliVideoDLOutput。可以是别的文件夹,只需要在 python 文件中修改 finalDir 变量即可。 e) 转化失败的情况:1. 在没有完全下载完成时复制了文件夹,这使得ffmpeg找不到video.m4s或audio.m4s. 2. 视频本身没有声源audio.m4s 2. ffmpeg 安装与环境配置 a) (不知道需不需要魔法上网)请从官网 https://ffmpeg.org/download.html 下载。 ffmpeg 官网下载界面ffmpeg官方下载网站(如若不能成功下载,version: 2022-08-10-git-8fc7f0fdec 的 ffmpeg 已经放在评论区链接中) b) 将下载的 ffmpeg-git-full.7z 解压缩在你想解压缩的位置。无需安装等步骤。 c) 环境配置 请打开你解压缩的位置 ffmpeg-git-full.7z 解压缩的位置请选择bin 进入bin文件夹点击上方导航栏复制完整路径 bin文件夹完整路径windows搜索“编辑系统环境变量” 并打开 编辑系统环境变量点击环境变量环境变量设置过程环境变量设置过程打开cmd, 运行指令ffmpeg -version, 如果没出现红字提示就代表设置没问题。若有红字,请以管理员模式启动,或重启电脑尝试。 3. Python3 安装与环境配置 请直接在b站搜索“python3安装与环境配置”,有相应详细视频或专栏讲解。 4. 批量转换 请将下载的python文件置于桌面(放哪都无所谓, 只要记住路径)。打开windows powershell 或 cmd。 cmdpowershell运行指令: python 文件存放路径 指令若出现一下信息则代表正在运行 运行时截图运行完毕后会显示新的可输入指令行 运行结束然后你可以在D:/bilibiliVideoDLOutput找到转换完成的mp4。 5. 代码 修正:REMOVEOri = True 时,会降原文件删除,注释写错了 import os import subprocess import shutil mydir = "D:/bilibiliVideoDLSmall" # 存放从手机复制而来的文件夹的地方 finalDir = "D:/bilibiliVideoDLOutput" # 存放最终mp4文件的地方 REMOVEOri = False # 如果需要将源文件删除,将其更改为False os.chdir(mydir) directory = os.getcwd() for videoNameDir in list(filter(os.path.isdir, os.listdir())): videoName = videoNameDir videoMainDir = os.path.join(directory, videoNameDir) os.chdir(videoMainDir) # reach 视频主文件夹 for cDir in list(filter(os.path.isdir, os.listdir())): eachPartPath = os.path.join(directory, videoNameDir, cDir) os.chdir(eachPartPath) # reach 这视频主文件夹中的一个分p for digitFolder in list(filter(os.path.isdir, os.listdir())): # 视频一般放在分p文件夹中的数字文件夹中,一般数字文件夹仅一个 sepPath = os.path.join(directory, videoNameDir, cDir, digitFolder) os.chdir(sepPath) # reach 这只视频主文件夹中的一个分p的数字文件夹 # 在此路径下调用cmd : ffmpeg -i video.m4s -i audio.m4s -codec copy Output.mp4 subprocess.call('ffmpeg -i video.m4s -i audio.m4s -codec copy Output.mp4', shell=True) # output.mp4的绝对路径 filePathOfOutput_oldName = os.path.join(directory, videoNameDir, cDir, digitFolder, "Output.mp4") newName = videoName + cDir + ".mp4" filePathOfOutput_newName_with_NewPath = os.path.join(finalDir, newName) os.rename(filePathOfOutput_oldName, filePathOfOutput_newName_with_NewPath) if (REMOVEOri) : # remove 源文件夹 os.chdir(mydir) directory = os.getcwd() for videoNameDir in list(filter(os.path.isdir, os.listdir())): videoNameDirPath = os.path.join(directory, videoNameDir) shutil.rmtree(videoNameDirPath)真的写的很随意,勿骂) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |