【问题标题】:Playing sound from a specific location in Python Tkinter在 Python Tkinter 中从特定位置播放声音
【发布时间】:2013-03-27 15:20:37
【问题描述】:

目标

当用户启动应用程序时,从位置D:1.wav播放wav文件

研究

看到以下问题:

How would I go about playing an alarm sound in python?

Play audio with Python

我尝试了什么

我尝试了以下几行:

示例 1

import winsound
winsound.PlaySound('D:\1.wav',winsound.SND_FILENAME)  ##Did not work

示例 2

import winsound
winsound.PlaySound('1.wav',winsound.SND_FILENAME)  ##DID not work

两次我都得到了默认声音,但没有按照音频文件播放的声音

还有

  1. 当我写winsound.PlaySound('1.wav',winsound.SND_FILENAME) 时,python 在哪里检查文件1.wav?在哪个目录?
  2. 为什么使用标志winsound.SND_FILENAME

规格 Python 2.7 TKinter 8.5 Windows XP SP

帮我解决这个问题。

【问题讨论】:

    标签: python audio


    【解决方案1】:

    改变

    winsound.PlaySound('D:\1.wav',winsound.SND_FILENAME)
    

    winsound.PlaySound('D:\\1.wav',winsound.SND_FILENAME)
    

    为了防止 python 逃离你的路径:

    >>> a = '\1.wav'
    >>> a
    '\x01.wav'
    

    winsound.SND_FILENAME

    sound 参数是 WAV 文件的名称。不要与 SND_ALIAS 一起使用。

    (来自winsound docs

    如果您不同时使用标志winsound.SND_NODEFAULT,winsound 会在找不到您指定的文件时播放默认声音。

    创建一个文件夹(比如D:\test_sounds\),其中包含您的wav 文件,add that folder 到您的PYTHONPATH 变量,然后尝试再次运行您的代码。或者(更好的是,如果您打算分发您的代码),按照我刚刚链接的同一篇文章,将其添加到您的代码中:

    import sys
    if "D:\\my_sound_folder" not in sys.path:
        sys.path.append("D:\\my_sound_folder")
    

    然后你就可以打电话给winsound.PlaySOund('1.wav', winsound.SND_FILENAME),因为它会在你的可用路径中

    【讨论】:

    • 我知道它说的是 winsound。但我有一个问题(如果太明显,请提供)。我用winsound。然后我创建一个 exe,然后将其发送到运行 linux 的 PC:它会工作吗?声音会播放吗??
    • winsound 仅适用于 windows
    • 是的。我猜到了,但只是想确定一下。我什至在 Linux 中运行它,发现它不起作用!还是谢谢!
    • 我试过了,但对我来说也触发了默认声音。 wav 文件与 py 文件位于完全相同的目录中。 winsound.PlaySound("notify.wav",winsound.SND_FILENAME)。我错过了什么吗? wav 和 py 文件所在的路径已经显示在使用 print(sys.path) 生成的列表中。
    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多