使用Python播放mp3格式音頻(全過程講解,簡單實用易上手,這一篇就足夠了!)


環境

Pycharm,Python3.x,pydub庫(帶介紹),ffmpeg(帶介紹),simpleaudio庫(帶介紹)

 

探索之路(可略過)


 

一開始選的是用PyAudio,安裝還要借用wheel,極其麻煩!

PyAudio的說明文件看的也是一頭霧水

這個是我首先經過PyAudio的說明文件改過來的

 1 import pyaudio
 2 import wave
 3 from demo import pubdat
 4 
 5 loadchunk=1024
 6 wf=wave.open(pubdat.musicpath,"rb")
 7 p=pyaudio.PyAudio()
 8 stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
 9           channels=wf.getnchannels(),
10           rate=wf.getframerate(),
11           output=True)
12 data = wf.readframes(loadchunk)
13 datas = []
14 while len(data) > 0:
15     data = wf.readframes(loadchunk)
16     datas.append(data)
17 for d in range(len(datas)):
18     stream.write(d)
19 stream.stop_stream()
20 stream.close()
21 p.terminate()

運行的時候會有這樣的錯誤提示:

 百度上找,發現好像是說這個wave(甚至python大多數的庫)只支持.wav格式的文件

但是我要播放的是.mp3格式的怎么辦呢

唔。。。好像用PyAudio行不通啊。。。

 

之前也嘗試過像playsound這樣的方法,但是會出現這樣的錯誤,不知道為什么,如果有大佬知道請教教我!

 

解決方案


 

因為這個wave(甚至python大多數的庫)只支持.wav格式的文件,所以試着去搜了一下.wav轉.mp3的代碼,卻意外地發現了一個pydub庫(依賴於ffmpeg)(對音視頻進行處理),有超級強大的功能,不僅支持.mp3轉.wav,還支持各種格式的音視頻互轉!(參看這個的第二條,ffmpeg下載看這篇的中間下載及安裝方法

.wav轉.mp3代碼:

from pydub import AudioSegment

#這里filepath填的是.mp3文件的名字(也可加上路徑)
def trans_mp3_to_wav(filepath):
    song = AudioSegment.from_mp3(filepath)
    song.export("now.wav", format="wav")

就這么簡單!在項目文件夾里就出現了我們期盼已久的轉換后的.wav文件!(音質也還不錯,速度挺快的)

哇塞,我狂喜!!!

 

更貼心的是,在pydub官方的說明文件中(中文版的翻譯看這里)很直接地這樣推薦了一個簡單又強大的庫simpleaudio(真正用來播放的)

 這里官網這里講的是播放

 

最簡單的播放功能:

import simpleaudio as sa

wave_obj = sa.WaveObject.from_wave_file(path_to_file)
play_obj = wave_obj.play()
play_obj.wait_done()

運行成功!

 

這。。。這拼在一起不就全了嗎??就這么做到了啊!

完整代碼(其實挺短的):

from pydub import AudioSegment
import simpleaudio as sa

def trans_mp3_to_wav(filepath):
    song = AudioSegment.from_mp3(filepath)
    song.export("此處填wav文件名稱及路徑", format="wav")

trans_mp3_to_wav("原mp3文件名稱及路徑")
wave_obj = sa.WaveObject.from_wave_file("此處填wav文件名稱及路徑")
play_obj = wave_obj.play()
play_obj.wait_done()

成功啦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM