Python使用ffmpy将amr格式的音频转化为mp3格式的例子
作者:hectorli36 发布时间:2021-06-14 13:50:07
标签:Python,ffmpy,amr,mp3
最近做了一个项目,将从微信下载的音频文件(默认为.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类型,方便作为后台程序使用。
来源:https://blog.csdn.net/hectorli36/article/details/80885004


猜你喜欢
- 本文实例讲述了mysql show操作。分享给大家供大家参考,具体如下:SHOW CHARACTER SET显示所有可用的字符集SHOW C
- Python 操作 Excel本篇博客介绍一种 Python 操作 Excel 的办法,核心用到 xlrd与xlwt模块。xlrd 
- 以住做B/S的系统都是以IE浏览器为主,基本上忽略其他的浏览器,这次决定来个大兼容,但在实现背景渐变上就是个 * 烦。本想用图片来实现的,但要
- step函数概述step函数用于绘制阶梯图。根据源码可知,step函数是对plot函数的轻量级封装,很多概念和用法与plot函数非常相似。d
- python去重及数据合并drop_dupicates参数含义:subset:即表示要去重指定参考的列keep : {‘
- Transformer模型概述Transformer是一种用于序列到序列学习的神经网络架构,专门用于处理输入和输出序列之间的依赖关系。该模型
- I/O吞吐量小,形成了瓶颈效应。 没有创建计算列导致查询不优化。 内存不足。 网络速度慢。 查询出的数据量过大(可以采用多次查询,其他的方法
- python的dict用起来很方便,可以自定义key值,并通过下标访问,示例如下:>>> d = {'key1
- element-ui form或table lable换行问题今天在写项目,突然遇到个需求,需要将form里面的lable换行,百度了下,发
- 目录深度遍历递归用栈来遍历磁盘广度遍历磁盘用队列遍历磁盘深度遍历递归import osdef get_files(path):
- 简介单例模式是创建型对象的一种,用于如何优雅的创建对象。让一个类最多产生一个对象。场景只需要一个对象就能解决并且要使用多次的场景,比如框架的
- 这个需求是产品提的,一开始只是设置了 <input style="padding-top: 3px;" type=
- 学习目的 掌握如何用ADO.NET插入新的记录 我们学得好快,今天做一个简易的新闻发布网页,可以说是个演示型的,只是让大家能理插入数据的最主
- 在Python中,类表示具有相同属性和方法的对象的集合。在使用类时,需要先定义类,然后再创建类的实例,通过类的实例就可以访问类中的属性和方法
- Python单例模式的两种实现方法方法一 import threading class Singleton(object): &
- 本文实例讲述了Python基于二分查找实现求整数平方根的方法。分享给大家供大家参考,具体如下:x=int(raw_input('pl
- Excel的最合适列宽(openpyxl)Python的Pandas模块是处理Excel的利器,尤其是加工保存Excel非常方便,但是唯独想
- 先创建表,然后生成批量数据。在models文件里from django.db import models# Create your mode
- 本文实例讲述了JavaScript设计模式之原型模式。分享给大家供大家参考,具体如下:从设计模式的角度讲,原型模式是用于创建对象的一种模式,
- eval是Python的一个内置函数,功能十分强大,这个函数的作用是,返回传入字符串的表达式的结果。就是说:将字符串当成有效的表达式 来求值