2014-12-07 50 views
0

我試圖寫一小段代碼來播放遊戲背景中的音樂文件。我遇到的問題是,儘管所有的代碼正在佈局和措辭正確,沒有聲音文件將播放。我在代碼中放了幾個打印語句,它似乎暗示聲音文件不是加載,或者一旦加載就不會播放?什麼是防止在這個pygame調音臺中播放聲音文件?

import pygame 
def musicPlayer(): 
    print "Playing music now" 
    pygame.init() 
    pygame.mixer.music.load('01ANightOfDizzySpells.mp3') 
    print "load song1" 
    pygame.mixer.music.play(loops=0, start=0.0) 
    print "play song1" 
    pygame.mixer.music.queue('01HHavok-intro.mp3') 
    pygame.mixer.music.queue('02HHavok-main.mp3') 
    pygame.mixer.music.queue('02Underclockedunderunderclockedmix.mp3') 
    pygame.mixer.music.queue('03ChibiNinja.mp3') 
    pygame.mixer.music.queue('04AllofUs.mp3') 
    pygame.mixer.music.queue('05ComeandFindMe.mp3') 
    pygame.mixer.music.queue('06Searching.mp3') 
    pygame.mixer.music.queue('07WeretheResistors.mp3') 
    pygame.mixer.music.queue('08Ascending.mp3') 
    pygame.mixer.music.queue('09ComeandFindMe-Bmix.mp3') 
    pygame.mixer.music.queue('10Arpanauts.mp3') 
    pygame.mixer.music.queue('DigitalNative.mp3') 
    pygame.mixer.music.set_endevent() 
    #musicPlayer() 
musicPlayer() 

我是否缺少一些基本的東西?或者它可能需要我的電腦而不是代碼?

編輯:這是從運行代碼

Playing music now 
load song1 
play song1 

正如你可以看到它不引發錯誤的輸出。

+1

也許該文件。你試過用另一個文件嗎? – 2014-12-07 22:38:19

+0

是的,我試過。相同的輸出。我認爲所說的代碼聽起來很正確嗎? – 2014-12-07 22:48:10

回答

0

我對pygame及其方法不是很熟悉,但我的猜測是要麼無法正確找到文件,要麼無法正確處理找到的文件。

我會建議把音頻文件的完整路徑,看看是否有幫助。這將排除它沒有正確查找文件的問題(,雖然硬編碼顯然不是一個好主意長期,因爲您對程序的組織結構所做的任何更改都可能會破壞這些路徑)。

並根據他們的文件,他們的MP3支持是有限的。您可以嘗試使用.ogg文件(http://www.pygame.org/docs/ref/music.html),因爲這可能只是編碼不完全受支持的問題。

+0

我試着換成ogg,但它沒有什麼區別。然而f.rodrigues給了我一些幫助。 mp3確實是一個問題。 – 2014-12-07 23:36:00

+0

很高興你能夠得到它的工作! – Nwilson 2014-12-09 00:45:38

2

我想你的代碼中間文件,它工作正常,但有一些調整:

import pygame 

def musicPlayer(): 
    pygame.init() 
    pygame.mixer.music.load('test.mid') 
    print "load song1" 
    pygame.mixer.music.play() 
    print "play song1" 
    pygame.mixer.music.queue('test_2.mid') 

musicPlayer() 
while pygame.mixer.music.get_busy(): 
    pygame.time.Clock().tick(10) 
print "DONE" 

如果腳本結束比賽不會happend,對於需要get_busy()在while循環。

pygame.music的文檔中聲明:請注意,MP3支持是有限的[...]請考慮使用OGG代替。


我在Sound類中玩過一點。

這裏就是我想出了:

import pygame 

def musicPlayer(): 
    pygame.mixer.init() 
    channel = pygame.mixer.Channel(1) 
    sound = pygame.mixer.Sound('test.ogg') 
    channel.play(sound) 

musicPlayer() 
while pygame.mixer.get_busy(): 
    pygame.time.Clock().tick(10) 
print "DONE" 
+0

謝謝!我試過你的編輯,它運行良好。從輸出結果來看,它似乎代碼運行良好。但是,仍然沒有聲音作爲輸出!仍然拒絕使用mp3,但ogg轉換確實有點奏效。代碼運行但沒有聲音。但我可以告訴輸出的東西是否正在工作可能是ogg? – 2014-12-07 23:34:44

+0

我不能說,只能用我可以測試自己的文件。我嘗試了幾個mp3文件,只有幾個工作,ogg文件也有一些問題,我不知道如何解決。 MIDI文件似乎總是工作。 – 2014-12-07 23:39:25

+0

你有沒有嘗試過mixer.Sound類? http://www.pygame.org/docs/ref/mixer.html#pygame.mixer。聲音 – 2014-12-07 23:50:06