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

yipeiwu_com6年前Python基础

最近做了一个项目,将从微信下载的音频文件(默认为.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中的rjust()方法使用详解

 rjust()该方法返回字符串合理字符串的右边的长度宽度。填充是通过使用指定的fillchar(默认为空格)。如果宽度小于len(s)返回原始字符串。 语法 以下是rjust...

对django2.0 关联表的必填on_delete参数的含义解析

一对多(ForeignKey) class ForeignKey(ForeignObject): def __init__(self, to, on_delete, relate...

Python存取XML的常见方法实例分析

本文实例讲述了Python存取XML的常见方法。分享给大家供大家参考,具体如下: 目前而言,Python 3.2存取XML有以下四种方法: 1.Expat 2.DOM 3.SAX 4.E...

Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)

Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)

django默认是有一个admin的后台管理模块,但是丑,功能也不齐全,但是大神给我们已经集成好了xadmin后台,我们拿来用即可,但是呢,django已经升级到2.1版本了,xadmi...

Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录

Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录

本文介绍了Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录,分享给大家,具体如下: Python 2.7 IDE Pycharm 5.0.3...