1. 程式人生 > >Python使用ffmpy將amr格式的音訊轉化為mp3格式

Python使用ffmpy將amr格式的音訊轉化為mp3格式

最近做了一個專案,將從微信下載的音訊檔案(預設為.amr格式)轉化為mp3格式(否則前端播放將會遇到困難)上傳到雲端。經過一番研究,最終決定採用Python的ffmpy包。

安裝只需執行

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型別,方便作為後臺程式使用。