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

标签 python audio tkinter pygame audio-player

我的 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/

相关文章:

python - 使用 pandas/regex 提取子字符串

python - 如何将 float 舍入为缩放整数?

iphone - CFReadStreamRef 和可用字节大小

python - tkinter,如何跨按钮拖动?

python - POST 上没有 'Access-Control-Allow-Origin' header (Flask API)

python - 在 MacOS 上的 Emacs 中设置 PYTHONPATH?

audio - 在 Tumblr 帖子中创建嵌入式播放列表

javascript - 如何停止声音警报?

python - 如何更改选项卡标题框的大小和 ttk 笔记本选项卡的字体?

python - (Un)多组复选按钮的全选复选按钮功能