首頁  >  文章  >  後端開發  >  Python 多種音樂格式批次轉換實戰教程

Python 多種音樂格式批次轉換實戰教程

WBOY
WBOY轉載
2023-04-12 12:16:141765瀏覽

Python 多種音樂格式批次轉換實戰教程

Pydub是一個基於ffmpeg的Python音訊處理模組,封裝了許多ffmpeg底層接口,因此用它來做音樂歌曲檔案格式轉換會非常方便。

如果你有閱讀過我們之前的文章,你就知道 Pydub 有多強大了。

今天要為大家介紹它的音樂檔案格式轉換功能,幾乎支援所有音樂音訊格式,非常屌。

1. 安裝

##安裝Pydub前需要先安裝ffmpeg:


(可選一) Mac (開啟終端(Terminal), 用homebrew 安裝):

brew install ffmpeg --with-libvorbis --with-sdl2 --with-theora

(可選二) Linux:

apt-get install ffmpeg libavcodec-extra

(可選三) Windows:

1. 進入http://ffmpeg.org/download.html#build-windows,點擊windows 對應的圖標,進入下載介面點擊download 下載按鈕。


2. 解壓縮下載好的zip檔到指定目錄。


3. 將解壓縮後的檔案目錄中 bin 目錄(包含 ffmpeg.exe )加入 path 環境變數。


(必須) 依照上述ffmpeg安裝步驟成功後就可以開啟命令提示字元(cmd)或終端(Terminal),安裝pydub:


pip install pydub

2.mp3轉wav或其他格式


將單一mp3音訊檔案轉換為wav音訊格式:

from pydub import AudioSegment
def trans_mp3_to_wav(filepath):
 """
 将mp3文件转化为wav格式
 Args:
 filepath (str): 文件路径
 """
 song = AudioSegment.from_mp3(filepath)
 filename = filepath.split(".")[0]
 song.export(f"{filename}.wav", format="wav")

可以繼續封裝該函數,將單一mp3檔案轉換為任一其他音樂音訊格式:

from pydub import AudioSegment
def trans_mp3_to_any_audio(filepath, audio_type):
 """
 将mp3文件转化为任意音频文件格式
 Args:
 filepath (str): 文件路径
 audio_type(str): 文件格式
 """
 song = AudioSegment.from_mp3(filepath)
 filename = filepath.split(".")[0]
 song.export(f"{filename}.{audio_type}", format=f"{audio_type}")

如ogg格式:


trans_mp3_to_any_audio("Alone.mp3", "ogg")

只要是ffmpeg支援的音樂音訊格式,它都可以轉換,支援的格式長達幾十個,下面我簡單列一些:


wav

#avi

#mp4

flv

ogg

flac

#ape

##mp2

aiff

voc

au

3. 更加通用的转换函数

刚刚是mp3转任意音频格式,我希望把它写成任意音频格式转任意音频格式:

from pydub import AudioSegment
def trans_any_audio_types(filepath, input_audio_type, output_audio_type):
 """
 将任意音频文件格式转化为任意音频文件格式
 Args:
 filepath (str): 文件路径
 input_audio_type(str): 输入音频文件格式
 output_audio_type(str): 输出音频文件格式
 """
 song = AudioSegment.from_file(filepath, input_audio_type)
 filename = filepath.split(".")[0]
 song.export(f"{filename}.{output_audio_type}", format=f"{output_audio_type}")

比如将ogg音乐音频格式转化为flv音乐音频格式:

trans_any_audio_types("Alone.ogg", "ogg", "flv")

或者MP4格式,总之,一般你需要的格式它都能满足。

trans_any_audio_types("Alone.ogg", "ogg", "mp4")

4. 批量转化音频格式

现在,尝试将一个文件夹下的所有非mp3音频格式的文件转化为mp3音频格式:

def trans_all_file(files_path, target="mp3"):
 """
 批量转化音频音乐格式
 Args:
 files_path (str): 文件夹路径
 target (str, optional): 目标音乐格式. Defaults to "mp3".
 """
 for filepath in os.listdir(files_path):
 # 路径处理
 modpath = os.path.dirname(os.path.abspath(sys.argv[0]))
 datapath = os.path.join(modpath, files_path + filepath)
 # 分割为文件名字和后缀并载入文件
 input_audio = os.path.splitext(datapath)
 song = AudioSegment.from_file(datapath, input_audio[-1].split(".")[-1])
 # 导出
 song.export(f"{input_audio[0]}.{target}", format=target)

只要输入文件夹名称,即可全部转化该文件夹下的音乐文件格式为mp3格式:

trans_all_file("F:\push\20200607\music\")

看了我们今天的教程,学会这招后,你再也不用担心格式之间的转化问题,通过使用 pydub模块你能轻易地解决这些问题。如果本篇文章对你有帮助,请在文末点个赞在看支持一下哦。

以上是Python 多種音樂格式批次轉換實戰教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除