计算机系统

MP4文件批量转码成MP3

本文发布日期:2020-06-04 01:05:01

最近为了学python爬虫,在论坛里找了不少视频教程,非常棒。但有时看视频不方便,就想着能否把视频批量转码成音频,这样在乘坐地铁公交的时候也能学习了。g78免费资源网

解决路径:g78免费资源网

有了需求,我首先在论坛里搜了下有没有这样的软件,还真有,我也下了,但体验并不是特别好。g78免费资源网

然后我其实知道QQ影音是带有转码的功能的,功能很强大,但有个缺陷就是每次只能添加一个文件夹下的视频,并不能直接转码父文件夹下包括子文件夹内的文件。g78免费资源网

功能介绍:g78免费资源网

1、批量将父文件夹下及子文件夹内所有的MP4或者avi格式的文件自动转码成MP3音频格式;g78免费资源网

2、自动删除MP4格式的文件;(加此段代码的目的是方便直接将转码后的文件夹下的音频文件拷入手机,而不拷视频文件,如不需要自行删除。)g78免费资源网

代码关键部分说明:g78免费资源网

既然现有的工具并不能解决我的需求,那我就准备自己用python实现个,刚好练练手。说干就干。g78免费资源网

1、glob模块 官方文档g78免费资源网

主要功能是匹配所有的符合条件的文件,并将其以list的形式返回。通过pip安装即可。g78免费资源网

2、pydub模块官方文档g78免费资源网

主要功能是处理音频文件,依赖于ffmpeg,所以还需要安装ffmpeg。通过pip安装即可。g78免费资源网

3、ffmpeg官方文档g78免费资源网

视频转音频就是依靠这个。g78免费资源网

从上面的网站下载后,将path添加到环境变量中去,具体操作可以参考链接g78免费资源网

import osimport globfrom pydub import AudioSegment  wenjianjia = []path = input('请输入要转码的父文件夹路径:')for root, dirs, files in os.walk(path):    wenjianjia.append(root)wjj = wenjianjia  for dir in wjj:    video_dir = dir    extension_list = ('*.mp4', '*.flv')    i=1      os.chdir(video_dir)    for extension in extension_list:        for video in glob.glob(extension):            mp3_filename = os.path.splitext(os.path.basename(video))[0] + '.mp3'            AudioSegment.from_file(video).export(mp3_filename, format='mp3')            print('已转码', str(i) ,'个视频!')            i += 1                  for infile in glob.glob(os.path.join(video_dir, '*.mp4')):        os.remove(infile)
免责声明:本站部分图片,文章,均来源于网络收集,版权归原作者所有,如有侵权,请与我联系删除!