python - 程序包只能在IDLE或解释器中正常工作,而不能独立运行吗?

标签 python audio python-idle

我一直在尝试向使用Py-Audiere的程序添加音频提示。但是,只有当我在IDlE中使用run命令(或将其手动放入解释器中)时,然后才以特定方式进行调用时才播放声音。这是代码片段:

import audiere

filename = 'Bell'
d = audiere.open_device()
filename += '.mp3'
bell = d.open_file(filename)
bell.repeating = True

def play_tone():
    bell.play()

play_tone()

如果我在IDLE之外运行它,则不会发生任何事情。如果我在IDLE中运行它,但将其全部移入函数并传递文件名,则不会发生任何事情。

我对这个库发生了什么感到非常困惑,在这一点上,我不确定我是否应该使用这个库。有谁知道发生了什么事或有其他选择(我考虑过GStreamer,但无法弄清楚他们的文档)吗?

最佳答案

我已经对audiere进行了一些实验(以前从未听说过该库),并且看起来它在后台的新线程中播放声音。

在您的代码段中,您告诉audiere开始演奏铃,但是您从来没有给它足够的时间来完全演奏它。当您在Idle或Python解释器中运行此程序时,这无关紧要,因为Python进程仍在运行,因此声音仅在后台播放。

他们的website有一个小片段,显示了如何实现此目的:

import time
def play_tone():
    bell.play()
    while bell.playing:
        time.sleep(0.1)

对于gstreamer,如果您以前从未使用过它,则文档可能会有些复杂。我发现学习如何使用它的最好方法就是尝试一下。这个tutorial是一些很好的起点,它解释了gstreamer的工作原理。此code snippet显示了如何播放单个声音文件。如果您想阅读它,那么irc conversation也很有帮助。

关于python - 程序包只能在IDLE或解释器中正常工作,而不能独立运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5068807/

相关文章:

python - 如果页码超出范围,Django PageNumberPagination 自定义错误

python - 计算文件文本中的共现情况

python 从 u'\\u795d\\u798f' 到 u'\u795d\u798f' 的转换

javascript - 点击时,如何让音频一直播放?

python - 适用于 Mac 的 native Python 编辑器?

python - 选择文本时 Python 3.3.0 中的 IDLE 崩溃

python - 在 Linux 上使用 python 3 启动 IDLE(同时安装了 python 2.7)

python - math.fsum 用于多维数组

java - JLayer Player 控制音量

javascript - 加载失败,因为未找到受支持的源。播放 HTML5 音频元素时