利用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抓取网页时字符集转换问题处理方案分享
Jun 19 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
Feb 20 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
Django实现分页显示效果
Oct 31 Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 Python
jupyter notebook读取/导出文件/图片实例
Apr 16 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
Python对excel的基本操作方法
Feb 18 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 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
PHP语法速查表
2006/12/06 PHP
php strtotime 函数UNIX时间戳
2009/01/14 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
解读python如何实现决策树算法
2018/10/11 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
医务人员自我评价
2014/01/26 职场文书
房屋产权证明书
2014/10/15 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
给朋友的赠语
2015/06/23 职场文书
军训通讯稿范文
2015/07/18 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
Python Django搭建文件下载服务器的实现
2021/05/10 Python
Python上下文管理器Content Manager
2021/06/26 Python
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
SQL Server中的游标介绍
2022/05/20 SQL Server