python ffmpeg模块mp4岀错_利用ffmpeg+Python实现MP4格式音频与视频的合并的方法

本文介绍了如何使用Python结合ffmpeg模块来合并MP4格式的音频和视频。首先,设置ffmpeg的环境变量,然后通过命令行验证安装。接着,详细展示了如何使用ffmpeg命令合并文件,以及如何用Python自动化处理多个文件。最后提供了完整的Python代码示例,用于读取info文件获取视频信息,合并指定路径的音频和视频,并保存到自定义位置。
摘要由CSDN通过智能技术生成

利用ffmpeg+Python实现MP4格式音频与视频的合并的方法

发布时间:2020-10-26 17:11:27

来源:亿速云

阅读:206

作者:Leah

本篇文章给大家分享的是有关利用ffmpeg+Python实现MP4格式音频与视频的合并的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

环境变量

此电脑--属性--高级系统设置--环境变量

在系统变量(也就是下面那一半)处找到新建,按如下所示的方法填写

04fc2f30e9ee118ea76c11e50eec9e28.png

再将%FFMPEG_HOME%以及%FFMPEG_HOME%\bin写入系统变量的Path中

然后一路确定即可

验证

win+R,cmd

输入ffmpeg -version

987cdc5b2d30118473e0fbb9d9028525.png

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可以实现自动化,减少时间的浪费,但最快的还是以后记得缓存时勾选自动合并

cabdea396e5090aea0efb0f25e2d8294.png

文件结构

PC端缓存的视频保存的文件结构有很多种,我只是根据我碰到的情况写的,但大同小异,修改起来也不麻烦,只是再加个if和else罢了

番剧缓存结构

缓存的番剧是这种结构:

0cf581d3a46930238f89d1f4519ca890.png

b7b3814b818f1317343f510994d10522.png

924c972994842a3e65edbc3e55860aae.png

上面举的例子是Dr.stone石纪元,我缓存的鬼灭之刃也是如此

特点是在一个以视频ID号名称的文件夹(ss27993)后,跟着许多子文件夹(57983089等),然后在这些子文件夹中又有一个或多个子文件夹(比如1),然后缓存的视频保存在这个文件夹里,里面有一个info文件(就是json格式),还有audio1.mp4和video.mp4。

PS:

还有一个xml文件,是弹幕信息,暂时我不知道怎么处理

690f02b86ccf936b892a6e13a78f2721.png

常规缓存结构

除了番剧,一般的视频缓存的结构是这样的

34aaace0253d901803eda102654bfd97.png

cde88d29e3c96d4283f9c7f19e5d6614.png

不难看出,这比番剧要少一个层级

文件信息

文件信息主要由info文件和dvi文件来记录

这两种文件都可以直接以json文件来处理,也就是,首先open函数打开文件,然后用json.load转成字典。。。

然后我还发现了一个特点是,视频和音频所在的目录下是info文件,而它的上一层目录下是dvi文件

虽然文件格式基本是一致的,但是里面的键-值关系却不一致,单集视频的名称在番剧中对应的是键Description,在其他视频中对应的是PartName

视频总的名称保存在外层的目录下的info文件或dvi文件中,番剧中对应的键是SeasonTitle,在其他视频中对应的是Title

8ee8b8ab4064c6945307c153a06a0caf.png

具体问题具体分析,首先由于我实践得较少,这样的总结不一定对,然后以后也许也会有新的格式、新的变化

代码

具体代码

以下是我的Python代码,你可以先试试能不能用,用不了的话,可以在理解的基础上修改。理解不了的话可以看我的后面的解释,以及代码中的注释,对于运行过程中一些变量的值,我都把它放在注释中了,方便你理解。

# -*- coding = utf-8 -*-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值