Python使用ffmpy將amr格式的音訊轉化為mp3格式
阿新 • • 發佈:2019-01-27
最近做了一個專案,將從微信下載的音訊檔案(預設為.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() withopen(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型別,方便作為後臺程式使用。