Python使用ffmpy将amr格式的音频转化为mp3格式的例子


Posted in Python onAugust 08, 2019

最近做了一个项目,将从微信下载的音频文件(默认为.amr格式)转化为mp3格式(否则前端播放将会遇到困难)上传到云端。经过一番研究,最终决定采用Python的ffmpy包。

首先是ffmpy的文档:http://ffmpy.readthedocs.io/en/latest/index.html

安装只需执行

pip install ffmpy

注意,ffmpy只是命令行工具FFmpeg的一个包装,若要成功执行任务,还需要安装FFmpeg

在Ubuntu上:

sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
 
sudo apt-get update
 
sudo apt-get install ffmpeg

查看是否安装成功:

ffmpeg -versionx

下面是一个很简单的例子,这里没有对转音频的质量等具体参数进行设置,全部都是用的默认选项。建议由这类需求的朋友们参考一下FFmpeg的文档。

@classmethod
def transformat_voice(cls, amr_voice_b):
  from_fn = 'from.amr'
  to_fn = 'target.mp3'
  mp3_file = BytesIO()
  with open(from_fn, 'wb') as f_from:
    f_from.write(amr_voice_b.getvalue())
  ff = ffmpy.FFmpeg(inputs={from_fn: None}, outputs={to_fn: None})
  ff.run()
  with open(to_fn, 'rb') as f_to:
    f_to.seek(0)
    mp3_file.write(f_to.read())
  os.remove(from_fn)
  os.remove(to_fn)
  mp3_file.seek(0)
  return mp3_file

这里有一点,由于ffmpy只是一个命令行的wrapper,所以无法对BytesIO进行操作,这里只能先把二进制文件写到硬盘上进行操作,转换完后再把文件删除。最后的返回值会是一个BytesIO类型,方便作为后台程序使用。

以上这篇Python使用ffmpy将amr格式的音频转化为mp3格式的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解python里使用正则表达式的分组命名方式
Oct 24 Python
python验证码识别实例代码
Feb 03 Python
Python操作Oracle数据库的简单方法和封装类实例
May 07 Python
Django 实现购物车功能的示例代码
Oct 08 Python
在python中实现强制关闭线程的示例
Jan 22 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
Mar 20 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
Python加速程序运行的方法
Jul 29 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 Python
Django rest framework jwt的使用方法详解
Aug 08 #Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 #Python
django基于restframework的CBV封装详解
Aug 08 #Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 #Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 #Python
Python generator生成器和yield表达式详解
Aug 08 #Python
利用python实现短信和电话提醒功能的例子
Aug 08 #Python
You might like
php curl的深入解析
2013/06/02 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
Laravel下生成验证码的类
2017/11/15 PHP
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
详解VSCode配置启动Vue项目
2019/05/14 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python 魔法函数实例及解析
2019/09/25 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
python 通过文件夹导入包的操作
2020/06/01 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
在校硕士自我鉴定
2014/01/23 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
学校施工安全责任书
2015/01/29 职场文书
淮海战役观后感
2015/06/11 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
使用Pytorch训练two-head网络的操作
2021/05/28 Python