2013-10-22 49 views
3
import pyaudio 
import wave 

chunk = 1024 
wf = wave.open('yes.mp3', 'rb') 
p = pyaudio.PyAudio() 

stream = p.open(
    format = p.get_format_from_width(wf.getsampwidth()), 
    channels = wf.getnchannels(), 
    rate = wf.getframerate(), 
    output = True) 
data = wf.readframes(chunk) 

while data != '': 
    stream.write(data) 
    data = wf.readframes(chunk) 

stream.close() 
p.terminate() 

不管我怎麼把這個,而試圖多種方法我似乎不斷收到以下錯誤在終端:MP3與Pyaudio

raise Error, 'file does not start with RIFF id' 

我會用pyglet但媒體和所有其它模塊麥凱納即使我能夠導入pyglet,也檢測不到。

任何幫助?

+0

問題在哪裏發生?當你用'wave.open'打開mp3文件或者當你打算使用'wf'變量時? – jramirez

+0

沒有線索誠實,我希望我可以玩它,看看到底是什麼,但迄今爲止,我在Google上找到的每種方法都給我提供了同樣的錯誤。 – user2852955

回答

1

您使用wave試圖打開一個文件,是不是wav。相反,您試圖打開一個mp3文件。 wave模塊只能打開wav文件,因此您需要將mp3轉換爲wav。這裏是你如何使用pyglet發揮mp3文件:

 import pyglet 

     music = pyglet.resource.media('music.mp3') 
     music.play() 

     pyglet.app.run() 

它會比你想的方法要簡單得多。你用pyglet得到了什麼錯誤?

+0

Traceback(最近調用最後一次): 文件「pyglet2.py」,第3行,在 music = pyglet.resource.media('/ Dropbox/Grad_project/Tests/yes.mp3') File「/ usr/lib/pymodules/python2.7/pyglet/resource.py「,第592行,在媒體中 raise ResourceNotFoundException(name) pyglet.resource.ResourceNotFoundException:找不到資源」/Dropbox/Grad_project/Tests/yes.mp3「路徑。確保文件名具有正確的captialisation。」 是路徑是否正確,以及拼寫是否正確,以及(只是把MP3並沒有指定路徑給出了同樣的錯誤,以及。 – user2852955

+1

真的嗎?路徑是正確的嗎?你有你的文件系統根路徑中的「Dropbox」文件夾?嘗試刪除路徑中的初始「/」.. –