什么阻止声音文件在这个pygame混音器设置中播放?

时间:2014-12-07 22:36:06

标签: python python-2.7 pygame mixer

我正在尝试编写一小段代码来在游戏背景中播放音乐文件。我遇到的问题是,尽管所有代码都已正确布局并且措辞正确,但不会播放声音文件。我在代码中放了几个打印语句,它似乎表明声音文件要么没有加载,要么一旦加载就不会播放?

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

正如你所看到的,它不会引发任何错误。

2 个答案:

答案 0 :(得分:2)

我用mid文件尝试了你的代码,它工作正常,但有一些调整:

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"

如果脚本结束,游戏就不会发生,因为你需要在while循环中使用get_busy()。

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"

答案 1 :(得分:0)

我对pygame及其方法不太熟悉,但我的猜测是它无法正确找到文件,或者它无法正确处理它找到的文件。

我建议将完整路径放到音频文件中以查看是否有帮助。这将排除它没有正确找到文件的问题(虽然硬编码这显然不是一个长期的好主意,因为您对程序的组织结构所做的任何更改都可能会破坏这些路径 )。

根据他们的文档,他们的MP3支持有限。您可以尝试使用.ogg文件(http://www.pygame.org/docs/ref/music.html),因为它可能只是编码不完全支持的问题。