MP4文件批量转码成MP3
需求背景:
最近为了学python爬虫,在论坛里找了不少视频教程,非常棒。但有时看视频不方便,就想着能否把视频批量转码成音频,这样在乘坐地铁公交的时候也能学习了。
解决路径:
有了需求,我首先在论坛里搜了下有没有这样的软件,还真有,我也下了,但体验并不是特别好。
然后我其实知道QQ影音是带有转码的功能的,功能很强大,但有个缺陷就是每次只能添加一个文件夹下的视频,并不能直接转码父文件夹下包括子文件夹内的文件。
功能介绍:
1、批量将父文件夹下及子文件夹内所有的MP4或者avi格式的文件自动转码成MP3音频格式;
2、自动删除MP4格式的文件;(加此段代码的目的是方便直接将转码后的文件夹下的音频文件拷入手机,而不拷视频文件,如不需要自行删除。)
代码关键部分说明:
既然现有的工具并不能解决我的需求,那我就准备自己用python实现个,刚好练练手。说干就干。
1、glob模块 官方文档
主要功能是匹配所有的符合条件的文件,并将其以list的形式返回。通过pip安装即可。
2、pydub模块官方文档
主要功能是处理音频文件,依赖于ffmpeg,所以还需要安装ffmpeg。通过pip安装即可。
3、ffmpeg官方文档
视频转音频就是依靠这个。
从上面的网站下载后,将path添加到环境变量中去,具体操作可以参考链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import os import glob from 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) |
千行代码,Bug何处藏。 纵使上线又怎样,朝令改,夕断肠。
分类:
Python开发笔记
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析