在 python 脚本中使用 winsound 时音乐突然停止播放

Posted

技术标签:

【中文标题】在 python 脚本中使用 winsound 时音乐突然停止播放【英文标题】:Music suddenly stops playing while using winsound in python script 【发布时间】:2021-12-31 12:09:55 【问题描述】:

我有一个使用 tkinter 制作 GUI 应用程序的计算机项目。用户可以选择通过窗口中的单选按钮打开或关闭音乐。我制作了下面的代码,以便你们可以复制它并自己尝试。

import tkinter as tk
import winsound as ws
import sys

root = tk.Tk()                         # Main window
root.geometry("200x200")
myColor = '#40E0D0'                 # Its a light blue color
root.configure(bg=myColor)          # Setting color of main window to myColor


def musicplayer(music_onoff):
    if sys.platform == "win32":
        if music_onoff == True:
            ws.PlaySound('8-bit.wav', ws.SND_FILENAME |
                         ws.SND_ASYNC | ws.SND_LOOP)
        else:
            ws.PlaySound(None, ws.SND_ASYNC)
    else:
        popup.showwarning('Warning', "Only supported on Windows devices")
        

# Linking style with the button
rb1 = tk.Radiobutton(text="Off")
rb2= tk.Radiobutton(text="On")

rb1.configure(command=lambda x=False: musicplayer(x))
rb2.configure(command=lambda x=True: musicplayer(x))

rb1.pack()                          # Placing Radiobutton
rb2.pack()
root.mainloop()                    

8-bit.wav 文件对应于 video,它是 Never Gonna Give You Up 的 8 位版本。我将视频转换为 .wav 格式。当我在我的 Windows 默认 mp3 播放器(即 Groove 音乐)上播放 .wav 文件时会播放完整的歌曲,但当我使用 winsound 时不会播放。我不确定为什么会发生这种情况,因为当音乐停止时,我的控制台上也没有出现错误。

【问题讨论】:

更新:意识到问题是由 winsound 引起的,因为它是一个 8 位声音文件。使用 convertio.co 等在线转换器将其转换为 16 位签名的 wav 文件,然后使用它可以解决问题。 你可以删除问题然后 @CoolCloud 或发布答案,因为它可能会在未来帮助某人 @Matiiss & Cool_Cloud,我已将其发布为答案,以便其他使用不同格式的人可以了解他们需要做什么。马蒂斯感谢您的建议 @CoolCloud 我只是说将来有人可能会遇到同样的问题,这将是对他们有帮助的问题(也许是因为他们会通过制定与制定相同的问题来找到它在这里),他们将看到答案(您在该答案下的评论),这将解决他们的问题,仅此而已 【参考方案1】:

更新: 意识到问题是由 winsound 引起的,因为它是一个 8 位声音文件。使用convertio.co 之类的在线转换器将其转换为 16 位签名的 wav 文件,然后使用它可以解决问题。

【讨论】:

我能够使用 this 将视频下载为 wav 并且没有进一步的转换并且代码运行良好 我不知道转换是如何工作的,但我先将我的下载为 mp3,遇到了一些问题,然后将 mp3 转换为 .wav。所以也许这就是我遇到问题的原因。 好的,但是当你不确定的时候不要使用诸如8位wav之类的术语,它会完全混淆意思

以上是关于在 python 脚本中使用 winsound 时音乐突然停止播放的主要内容,如果未能解决你的问题,请参考以下文章

python winsound.playsound 找不到我的声音文件

如何使用winsound同时播放多个声音?

适用于 Mac 的 Python Winsound 等效项

如何在 python (Windows) 中播放声音

Pygame 加载音频

如何更改单个音符的音量并在 python 中重叠三个音符?