一篇关于将视频批量转换成音频的文章,我同意了,周末在家做了这个小工具。这样,对于一些视频学习文件,我们可以将其批量转换成音频文件,学习方式更加多样。我之前也用过ffmpeg来处理过视频文件。ffmpeg是一款简单易用的视频处理程序,但是有没有更轻便的呢?可以不下载这个程序吗?是的,Python中有一个ffmpeg相关的库:ffmpy3。ffmpy3是ffmpy的一个分支,它是FFmpeg的简单命令行包装器。ffmpy实现了通过命令行执行FFmpeg的Pythonic接口,并使用Python的subprocess模块进行同步执行。使用Python的asyncio.subprocess模块也支持异步执行。安装导入使用pip命令进行快速安装。pipinstallffmpy3导入刚刚安装的ffmpy3库。后面我们需要读取存放视频的目录和存放音频的目录,所以需要导入os模块。importosfromffmpy3importFFmpeg创建一个用于保存音频的目录我们需要将转换后的音频文件存放在指定的文件夹中。为了更聪明,我们做出判断。如果这个目录不存在,我们将创建它。如果它存在,我们将保留它。改变。defmkdir_output(output_dir):existence=os.path.exists(output_dir)ifnotexistence:print('Createaudiostoragedirectory')os.makedirs(output_dir)#创建目录os.chdir(output_dir)#切换到创建的文件folderreturnTrueelse:print('该目录已经存在,即将保存!')returnFalse我们使用存储路径作为参数,后面调用时给出存储路径即可。文件格式处理我们把需要转成音频文件的视频文件放在一个文件夹下,使用os模块读取视频文件名放到列表中。filepath=r"/Users/brucepk/test"#待转换视频的存放路径os.chdir(filepath)#切换到更改后的路径filename=os.listdir(filepath)#获取目录中的所有文件名文件夹然后我们把所有的视频文件后缀替换成音频格式。视频文件格式有很多种,我列出了常见的。将对应目录下的所有视频文件转换为wav音频文件,存放到指定目录下。当然,仅仅改变音频文件属性的文件后缀是不够的。文件属性没有改变,无法读取这样的文件。我们需要使用FFmpeg的方法为转换后的音频文件分配音频属性。ff=FFmpeg(inputs={changefile:None},outputs={outputfile:'-vn-ar44100-ac2-ab192-fwav'})print(ff.cmd)ff.run()效果我正在测试目录中有两个视频文件。一个是我用手机拍的mp4格式的视频。为了测试效果,录了一段语音,另一段视频是mkv格式的电影。运行代码后,将自动创建一个输出文件夹,其中包含转换后的音频文件。用支持音频的软件打开,可以清晰的听到音频。运行错误处理1.运行代码时,Windows系统可能会报找不到ffmpeg等错误,如下图。这个时候我们需要下载FFmpeg,访问下面的地址,根据自己的电脑版本下载对应的安装包。https://ffmpeg.zeranoe.com/builds/解压ffmpeg文件,打开ffmpy3.py文件(按住Ctrl键,点击ffmpy3,快速跳转到该模块),修改参数executable中的值下面的代码到ffmpeg。exe可执行文件的绝对路径。__init__(self,executable='ffmpeg',global_options=None,inputs=None,outputs=None)解压后的ffmpeg.exe文件在bin目录下,替换路径。修改后再次运行,即可转换成功。2.路径拼接的问题我的代码是在Mac系统下完成的。Mac中的路径以/分隔,而在Windows中,则以/分隔。为了防止转义字符的影响,最好在路径前加上r。filepath=r"/Users/brucepk/test"所以路径拼接的时候,windows电脑记得把"/"换成"\"。changefile=filepath+"/"+filename[i]在Mac系统中写法,在Windows中改为:changefile=filepath+"\\"+filename[i]。》获取源码地址,感觉不错,在GitHub上给个stars:文章开头说了之前用ffmpeg处理视频文件,当时把MJ的舞蹈视频转成人物,让人物与MJ共舞,感兴趣的可以看看:让代码与迈克尔·杰克逊共舞关注微信公众号Python知识圈,获取更多精彩Python内容。
