gpt4 book ai didi

python - pygame.错误: set_pos unsupported for this codec

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:12 24 4
gpt4 key购买 nike

我的 python 音频播放器有问题。我使用此功能来暂停正在播放的音乐:

def pause(event):
global time
pygame.mixer.music.pause()
time=pygame.mixer.music.get_pos()

然后,我尝试从使用此函数停止的位置再次播放它:

def play(event):
global time
name=listbox.get(ACTIVE)
file="music/"+str(name)
mixer.music.load(file)
pygame.mixer.music.play()
if time >0:
pygame.mixer.music.set_pos(time)
mixer.music.play()
else:
mixer.music.play()

但之后我收到此错误:

pygame.error: set_pos unsupported for this codec

我还尝试了pygame.mixer.music.unpause()函数:

def play(event):
global time
name=listbox.get(ACTIVE)
file="music/"+str(name)
mixer.music.load(file)
if time >0:
mixer.music.unpause()
else:
mixer.music.play()

但它根本不起作用,在这种情况下根本没有错误。我在 Windows 10(64 位)上使用 python 3.6 和 pygame 1.9.3。

最佳答案

没有足够的代表发表评论。

不幸的是 pygame.mixer.music.set_pos() 仅在 v 1.9.2 之后受支持。由于您有 1.9.3,它应该在您的代码中运行。我找不到原因,但我可以为您提供替代方案:

play_time = pygame.mixer.music.get_pos()

这将为您提供以毫秒为单位的游戏时间。 “play_time”的类型是“int”。初始化变量“start = 0”。您现在可以使用

start = start + play_time/1000.0

每次你暂停()或停止()以获取以秒为单位的时间。为什么将其添加到之前的值是因为如果您不将 'play_time/1000.0' 添加到之前的 start 值,那么 get_pos() 只会计算自您开始播放以来耗时,而不会为您提供当前的时间播放暂停或停止的位置,但距上次播放开始仅过去了一段时间。

现在您可以在之前或之后执行此操作

pygame.mixer.music.pause() #or stop()

您现在将看到它暂停的时间。

不要使用 set_pos(),而是使用

pygame.music.play(-1, start)

请注意,play(loop, start_pos) 以秒为单位获取 start_pos。所以我们需要在几秒钟内得到它。您现在可以删除 set_pos()

替代方案:只需使用

pygame.mixer.music.pause()
pygame.mixer.music.unpause()

您不需要计算时间然后再次设置。

关于python - pygame.错误: set_pos unsupported for this codec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44133774/

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