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 opencv判断图像是否为空的实例
Jan 26 Python
Python实现DDos攻击实例详解
Feb 02 Python
Python面向对象程序设计之私有属性及私有方法示例
Apr 08 Python
django query模块
Apr 20 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
python实现宿舍管理系统
Nov 22 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
Python 机器学习工具包SKlearn的安装与使用
May 14 Python
详解Python中__new__方法的作用
Mar 31 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 项目的方法
2007/01/02 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
接收键盘指令的脚本
2006/06/26 Javascript
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
python将unicode转为str的方法
2017/06/21 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
优秀高中生事迹材料
2014/02/11 职场文书
大学学生个人总结
2015/02/15 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
旷工检讨书大全
2015/08/15 职场文书
早上好问候语大全
2015/11/10 职场文书
Python自动化测试PO模型封装过程详解
2021/06/22 Python
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL