Python 音频只会让窗户发出叮叮当当的声音

Posted

技术标签:

【中文标题】Python 音频只会让窗户发出叮叮当当的声音【英文标题】:Python audio just makes the windows ding noises 【发布时间】:2015-07-03 17:11:34 【问题描述】:

所以,我正在使用 Python3 制作一些可以播放歌曲的东西。我有它工作,所以如果我按 1,它会播放播放列表,如果我按 2,它会播放第一首歌曲,如果我按 3,它会播放第二首歌曲。它适用于 Circles,但在播放列表中,一旦进入 Bullseye,它就会不断发出叮当声(就像出现通知并点击其他地方一样)。当您按 3 时,它会叮一声并停在那里。我认为这可能与歌曲(BullsEye.mp3)有关,这是我的代码还是其他人之前遇到过这个问题?

from time import *
import winsound
from winsound import *
input = input('1 for playlist - 2 for Circles - 3 for BullsEye ')
var = int(input)
while var==1:
    winsound.PlaySound("Circles.mp3", winsound.SND_ALIAS)
    winsound.PlaySound("BullsEye.mp3", winsound.SND_ALIAS)
if var==2:
    winsound.PlaySound("Circles.mp3", winsound.SND_ALIAS)
if var==3:
    winsound.PlaySound("BullsEye.mp3", winsound.SND_ALIAS)

【问题讨论】:

哦,废话,你能改一下标题吗?那是草稿:/ 【参考方案1】:

使用winsound.SND_FILENAME 而不是winsound.SND_ALIAS,如果你想传递一个文件名而不是一个预定义的别名,比如'SystemExit',否则如果你传递一个无法识别的别名,它只会播放一个默认的声音(这可能是一个任意的文件名) :

#!/usr/bin/env python3

audio_files = ["Circles.wav", "BullsEye.wav"]

def play(filename):
    winsound.PlaySound(filename, winsound.SND_FILENAME)

choice = int(input('1 for playlist - 2 for Circles - 3 for BullsEye '))
if choice == 1:
    for filename in audio_files:
        play(filename)
elif choice in 2, 3:
    play(audio_files[choice-2])
else:
    assert 0

注意:PlaySound 播放 wav 文件,而不是 mp3。要使用默认播放器播放 mp3,您可以使用os.startfile()

【讨论】:

以上是关于Python 音频只会让窗户发出叮叮当当的声音的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法拦截从扬声器发出的声音,以便我可以插入基于 C#.NET 软件的音频过滤器?

Chrome 中的 HTML5 音频噼啪声

使用 Python 在 Windows 上检测系统声音

华为云服务器没有声卡如何让服务器发出声音

什么软件可以创作声音,主要可以定义声音的频率,连续播放

电脑插入耳机后声音还是从电脑端发出