我一直在尝试向使用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/

10-12 21:17