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 getopt模块处理命令行选项实例
May 13 Python
python插入数据到列表的方法
Apr 30 Python
利用Python实现图书超期提醒
Aug 02 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
python爬虫之快速对js内容进行破解
Jul 09 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
Nov 29 Python
深入浅析python的第三方库pandas
Feb 13 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
Python如何定义有可选参数的元类
Jul 31 Python
python在协程中增加任务实例操作
Feb 28 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 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新建文件自动编号的思路与实现
2011/06/27 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
python实现输入数字的连续加减方法
2018/06/22 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
python标记语句块使用方法总结
2019/08/05 Python
python 实现多线程下载视频的代码
2019/11/15 Python
基于python3生成标签云代码解析
2020/02/18 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
Django多个app urls配置代码实例
2020/11/26 Python
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
学习十八大宣传标语
2014/10/09 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
JS封装cavans多种滤镜组件
2022/02/15 Javascript
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
Docker下安装Oracle19c
2022/04/13 Servers