安装
官网下载
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
http://ffmpeg.org/
选择需要的版本
在这个网址下载ffmpeg, https://github.com/BtbN/FFmpeg-Builds/releases
将解压后得到的以下几个文件放置在 E:\FFmpeg 下
环境变量
此电脑–属性–高级系统设置–环境变量
在系统变量(也就是下面那一半)处找到新建,按如下所示的方法填写
再将 %FFMPEG_HOME% 以及 %FFMPEG_HOME%\bin 写入系统变量的Path中
然后一路确定即可
验证
win+R,cmd
输入 ffmpeg -version
ffmpeg的使用
对于我将B站PC端缓存的音频mp4和视频mp4文件合并的需求,需要用到的命令为:
ffmpeg.exe -i audio1.mp4 -i video.mp4 -acodec copy -vcodec copy output.mp4
可以把mp4的文件设置成绝对路径,这样就可以转换指定路径的文件以及保存到指定路径了,比如这样:
ffmpeg.exe -i “E:\哔哩哔哩视频\ss27993\77413703\1\audio1.mp4” -i “E:\哔哩哔哩视频\ss27993\77413703\1\video.mp4” -acodec copy -vcodec copy “E:\B站导出视频\Dr.STONE石纪元\第22话宝物.mp4
通过PC端缓存的未合并的视频和音频,全都是命名为video.mp4和audio.mp4
PS:有些兄弟是导出的手机端缓存的视频和音频,是m4s格式的,方法也一样
但光有这条命令还不够,需要自己手动一个个操作,太麻烦了
因此我还需要使用Python来自动帮我完成工作
Python实现自动处理
虽然Python可以实现自动化,减少时间的浪费,但最快的还是以后记得缓存时勾选自动合并
文件结构
PC端缓存的视频保存的文件结构有很多种,我只是根据我碰到的情况写的,但大同小异,修改起来也不麻烦,只是再加个if和else罢了
番剧缓存结构
缓存的番剧是这种结构:
上面举的例子是Dr.stone石纪元,我缓存的鬼灭之刃也是如此
特点是在一个以视频ID号名称的文件夹(ss27993)后,跟着许多子文件夹(57983089等),然后在这些子文件夹中又有一个或多个子文件夹(比如1),然后缓存的视频保存在这个文件夹里,里面有一个info文件(就是json格式),还有audio1.mp4和video.mp4。
PS:
还有一个xml文件,是弹幕信息,暂时我不知道怎么处理
常规缓存结构
除了番剧,一般的视频缓存的结构是这样的
不难看出,这比番剧要少一个层级
文件信息
文件信息主要由info文件和dvi文件来记录
这两种文件都可以直接以json文件来处理,也就是,首先open函数打开文件,然后用json.load转成字典。。。
然后我还发现了一个特点是,视频和音频所在的目录下是info文件,而它的上一层目录下是dvi文件
虽然文件格式基本是一致的,但是里面的键-值关系却不一致,单集视频的名称在番剧中对应的是键 Description ,在其他视频中对应的是 PartName
视频总的名称保存在外层的目录下的info文件或dvi文件中,番剧中对应的键是 SeasonTitle ,在其他视频中对应的是 Title
具体问题具体分析,首先由于我实践得较少,这样的总结不一定对,然后以后也许也会有新的格式、新的变化
代码
具体代码
以下是我的Python代码,你可以先试试能不能用,用不了的话,可以在理解的基础上修改。理解不了的话可以看我的后面的解释,以及代码中的注释,对于运行过程中一些变量的值,我都把它放在注释中了,方便你理解。
# -*- coding = utf-8 -*- # @time:2020/10/17/017 23:0