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 相关文章推荐
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
Python中optparser库用法实例详解
Jan 26 Python
详解python中Numpy的属性与创建矩阵
Sep 10 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
python读取各种文件数据方法解析
Dec 29 Python
python数据预处理之数据标准化的几种处理方式
Jul 17 Python
学习Django知识点分享
Sep 11 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
解决json中ensure_ascii=False的问题
Apr 03 Python
Python实现爬取并分析电商评论
Jun 19 Python
详细介绍python操作RabbitMq
Apr 12 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
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
php生成短域名函数
2015/03/23 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
使用python开发vim插件及心得分享
2014/11/04 Python
python3处理含有中文的url方法
2018/05/10 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
python获取url的返回信息方法
2018/12/17 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
Python3 元组tuple入门基础
2020/02/09 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
Python正则表达式如何匹配中文
2020/05/27 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
爷爷追悼会答谢词
2014/01/24 职场文书
迟到检讨书500字
2014/02/05 职场文书
五年级学生评语大全
2014/12/26 职场文书
2015年副班长工作总结
2015/05/15 职场文书
2015年工商所工作总结
2015/05/21 职场文书