利用Python小工具实现3秒钟将视频转换为音频
最近,有读者微信上私聊我,想让我写一篇视频批量转换成音频的文章,我答应了,周末宅家里把这个小工具做出来了。
这样,对于有些视频学习文件,我们可以批量转换成音频文件,学习方式更多样化了。
之前也用过ffmpeg处理视频文件。ffmpeg这个程序处理视频是好用,但是有没有更轻便的呢?可以不下载这个程序吗?还真有,Python里有ffmpeg相关的库:ffmpy3。
ffmpy3是ffmpy的一个分支,它是一个简单的FFmpeg命令行包装程序。ffmpy实现了一个Pythonic接口,用于通过命令行执行FFmpeg,并使用Python的子进程模块进行同步执行。使用Python的asyncio.subprocess模块也支持异步执行。
安装导入
用pip命令快速安装。
pipinstallffmpy3
导入刚才安装好的ffmpy3库,等下需要读取视频存放的目录和音频存放的目录,所以我们需要导入os模块。
importos fromffmpy3importFFmpeg
创建保存音频的目录
我们需要把转换后的音频文件存放在指定的文件夹里,为了更智能,我们做一个判断,如果不存在这个目录,我们就创建,存在的话就保持不变。
defmkdir_output(output_dir): existence=os.path.exists(output_dir) ifnotexistence: print('创建音频存放目录') os.makedirs(output_dir)#创建目录 os.chdir(output_dir)#切换到创建的文件夹 returnTrue else: 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()
效果
我在test目录下放在两个视频文件,一个是我用手机拍摄的mp4格式的视频,为了测试出效果,录了一段语音,另一个视频是mkv格式的一部电影。
运行代码后,会自动创建一个output文件夹,里面就是转换好的音频文件。
用支持音频的软件打开,可以清晰听到音频。
运行报错处理
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]
总结
以上所述是小编给大家介绍的利用Python3秒钟将视频转换为音频,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。