2013-06-13 88 views
1

我正在使用pyglet的Player类在python中编写音频播放器。这个模块只是对Player和Source类的测试,它什么都不会产生。没有声音,没有错误,只是关于vsync的一个警告,可能与实际问题无关。Pyglet播放器不会播放

import pyglet.media as media 
def main(): 
    fname='D:\\Music\\JRR Tolkien\\LotR Part I The Fellowship of the Ring\\01-- 0001 Credits.mp3' 
    src=media.load(fname) 
    player=media.Player() 
    player.queue(src) 
    player.volume=1.0 
    player.play() 
if __name__=="__main__": 
    main() 

此外,src.play()也不起作用。我究竟做错了什么?

编辑:我也确认media.drivermedia.drivers.directsound模块。我担心它使用silent

回答

1

你必须以某种方式启动pyglet循环。除了绘制屏幕之外,还可以调用事件处理程序并播放声音。

import pyglet 
import pyglet.media as media 
def main(): 
    fname='D:\\test.mp3' 
    src=media.load(fname) 
    player=media.Player() 
    player.queue(src) 
    player.volume=1.0 
    player.play() 
    try: 
     pyglet.app.run() 
    except KeyboardInterrupt: 
     player.next() 

if __name__=="__main__": 
    main() 

类似这样的工作,但如果你使用Pyglet也确定你会想画一些东西。

+0

好吧,我试过了,但现在它在'player.play()'没有达到我放在pyglet.app.run()'和'player.next()'后面没有错误的打印语句后立即冻结。 – user1472751

+0

我现在正在'Thread'中运行'pyglet.app.run'并持续打印'player.time',但显示为零,因此它一定不能播放。 – user1472751

+0

这个例子适用于我。尝试创建一个pyglet窗口,当你关闭窗口时你的打印语句会被触及。你有没有安装AVBin?它可以与wav文件一起使用吗? – Txema