利用Python小工具实现3秒钟将视频转换为音频


Posted in Python onOctober 29, 2019

最近,有读者微信上私聊我,想让我写一篇视频批量转换成音频的文章,我答应了,周末宅家里把这个小工具做出来了。

利用Python小工具实现3秒钟将视频转换为音频 

这样,对于有些视频学习文件,我们可以批量转换成音频文件,学习方式更多样化了。

之前也用过 ffmpeg 处理视频文件。ffmpeg 这个程序处理视频是好用,但是有没有更轻便的呢?可以不下载这个程序吗?还真有,Python 里有 ffmpeg 相关的库:ffmpy3。

ffmpy3 是 ffmpy 的一个分支,它是一个简单的 FFmpeg 命令行包装程序。ffmpy 实现了一个 Pythonic 接口,用于通过命令行执行 FFmpeg,并使用 Python 的子进程模块进行同步执行。使用 Python 的 asyncio.subprocess 模块也支持异步执行。

安装导入

用 pip 命令快速安装。

pip install ffmpy3 

导入刚才安装好的 ffmpy3 库,等下需要读取视频存放的目录和音频存放的目录,所以我们需要导入 os 模块。

import os 
from ffmpy3 import FFmpeg

创建保存音频的目录

我们需要把转换后的音频文件存放在指定的文件夹里,为了更智能,我们做一个判断,如果不存在这个目录,我们就创建,存在的话就保持不变。

def mkdir_output(output_dir): 
  existence = os.path.exists(output_dir) 
  if not existence: 
    print('创建音频存放目录') 
    os.makedirs(output_dir)  # 创建目录 
    os.chdir(output_dir)    # 切换到创建的文件夹 
    return True 
  else: 
    print('目录已存在,即将保存!') 
    return False

存放路径我们作为参数,等下调用时给出存放路径即可。

文件格式处理

我们把需要转换为音频的视频文件放在一个文件夹下面,用 os 模块把视频的文件名称读取出来,放在列表中。

filepath = r"/Users/brucepk/test"  # 待转换视频存放的路径 
os.chdir(filepath)         # 切换到改路径下 
filename = os.listdir(filepath) # 得到文件夹下的所有文件名称

然后我们把所有视频文件后缀替换成音频的格式,视频文件格式较多,我把常见的基本都列出来了。

利用Python小工具实现3秒钟将视频转换为音频 

把相应目录下所有视频文件转换成 wav 音频文件储存在指定目录下。

音频文件属性

只改文件后缀当然是不行,文件属性没有转变,这样的文件是无法读取的,我们需要用 FFmpeg 方法对转换后的音频文件赋予它音频的属性。

ff = FFmpeg( 
      inputs={changefile: None}, 
      outputs={outputfile: '-vn -ar 44100 -ac 2 -ab 192 -f wav'} 
      ) 
    print(ff.cmd) 
    ff.run()

效果

我在 test 目录下放在两个视频文件,一个是我用手机拍摄的 mp4 格式的视频,为了测试出效果,录了一段语音,另一个视频是 mkv 格式的一部电影。

利用Python小工具实现3秒钟将视频转换为音频 

运行代码后,会自动创建一个 output 文件夹,里面就是转换好的音频文件。

利用Python小工具实现3秒钟将视频转换为音频 

用支持音频的软件打开,可以清晰听到音频。

运行报错处理

1、当你运行代码时,Windows 系统可能会出现 ffmpeg 无法找到之类的报错,如下图所示。

利用Python小工具实现3秒钟将视频转换为音频 

这时,我们需要下载 FFmpeg,访问下面的地址,根据自身电脑版本下载相应安装包。

https://ffmpeg.zeranoe.com/builds/

利用Python小工具实现3秒钟将视频转换为音频 

解压 ffmpeg 文件,打开 ffmpy3.py 文件(按住Ctrl键,点击ffmpy3,快速跳转到该模块),将下面代码中参数 executable 的值改为 ffmpeg.exe 可执行文件的绝对路径。

__init__(self, executable='ffmpeg', global_options=None, inputs=None, outputs=None)

解压后的 ffmpeg.exe 文件在 bin 目录下,把路径替换掉。

利用Python小工具实现3秒钟将视频转换为音频 

修改后,再次运行,就可以顺利转换了。

2、路径拼接的问题

我的代码是在 Mac 系统中完成的,Mac 中路径是用 / 隔开,而 Windows 中是用 \,为了防止收到转义字符的影响,路径前面最好加上 r。

filepath = r"/Users/brucepk/test"

所以在路径拼接时,Windows 电脑记得 "/" 换成 "\"。

changefile = filepath+"/"+filename[i]

以上时 Mac 系统的写法,Windows 中改成:

changefile = filepath+"\\"+filename[i]

总结

以上所述是小编给大家介绍的利用Python 3秒钟将视频转换为音频,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python将html转成PDF的实现代码(包含中文)
Mar 04 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
详解django三种文件下载方式
Apr 06 Python
python+splinter实现12306网站刷票并自动购票流程
Sep 25 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
python与idea的集成的实现
Nov 20 Python
Python实战之实现康威生命游戏
Apr 26 Python
python的变量和简单数字类型详解
Sep 15 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 Python
pygame实现打字游戏
Feb 19 #Python
Python 实现自动导入缺失的库
Oct 29 #Python
python实现的读取网页并分词功能示例
Oct 29 #Python
python实现LRU热点缓存及原理
Oct 29 #Python
Python 中的 import 机制之实现远程导入模块
Oct 29 #Python
Centos7 下安装最新的python3.8
Oct 28 #Python
Python any()函数的使用方法
Oct 28 #Python
You might like
一个程序下载的管理程序(一)
2006/10/09 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
vue深入解析之render function code详解
2017/07/18 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
详解Python中for循环的使用方法
2015/05/14 Python
一百多行python代码实现抢票助手
2018/09/25 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
快速了解Python开发环境Spyder
2020/06/29 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
个人简历的自荐信
2013/10/23 职场文书
班队活动设计方案
2014/01/30 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
安全标兵事迹材料
2014/08/17 职场文书
学校运动会开幕词
2016/03/03 职场文书
倡议书怎么写?
2019/04/11 职场文书
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python