gpt4 book ai didi

python - 用 Pygame 播放音乐不可靠

转载 作者:太空宇宙 更新时间:2023-11-04 10:57:58 24 4
gpt4 key购买 nike

我正在尝试编写一个简单的程序来使用 Pygame 播放音乐文件。我的脚本如下。

import pygame

import sys
import time

FRAMERATE = 30

if len(sys.argv) < 2:
sys.exit(2)

filename = sys.argv[1]

clock = pygame.time.Clock()

pygame.init()

pygame.mixer.init(frequency=44100)
pygame.mixer.music.load(filename)
print "%s loaded!" % filename
pygame.mixer.music.play(1)

while pygame.mixer.music.get_busy():
clock.tick(FRAMERATE)

但我遇到了一些令人费解的问题。 [File name] loaded!" 消息总是打印出来,但有时它永远不会进入循环并立即退出。如果我检查 pygame.mixer.music.get_busy() 的状态,它在 pygame.mixer.music.play(1) 命令后立即显示为 false .这种情况不规律地发生;我只是尝试在不更改代码的情况下运行程序,让它工作一次,然后立即遇到这个问题。有谁知道是什么导致了这些看似随机的播放问题?

最佳答案

我想这是因为实际的音乐播放是在另一个线程上进行的,所以有时在您第一次调用 get_busy() 时它还没有开始播放。

如果是这样的话,这似乎是 pygame 或 SDL_mixer(pygame 使用的)中的错误。

作为检查音乐是否完成的替代方法,您可以让 pygame 在音乐结束时为您提供一个事件并进行检查。像这样:

pygame.mixer.music.set_endevent(pygame.USEREVENT)

quit = False
while not quit:
clock.tick(FRAMERATE)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit = True
if event.type == pygame.USEREVENT:
print "Music ended"
quit = True

关于python - 用 Pygame 播放音乐不可靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com