包只能在IDLE或Interpreter中正常工作,但不能独立使用?

时间:2011-02-21 16:56:57

标签: 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,但我无法弄清楚他们的文档)?

1 个答案:

答案 0 :(得分:1)

我用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也很有帮助。