Python 基维没有';第一次调用play()时不能播放声音文件

Python 基维没有';第一次调用play()时不能播放声音文件,python,audio,kivy,Python,Audio,Kivy,我在Windows上运行一个简单的Kivy应用程序。按下按钮时,将执行Kivy docs()中的以下方法: def play_audio(self): sound = SoundLoader.load('output.wav') if sound: print("Sound found at %s" % sound.source) print("Sound is %.3f seconds" % sound.length) sound

我在Windows上运行一个简单的Kivy应用程序。按下按钮时,将执行Kivy docs()中的以下方法:

def play_audio(self):
    sound = SoundLoader.load('output.wav')
    if sound:
        print("Sound found at %s" % sound.source)
        print("Sound is %.3f seconds" % sound.length)
        sound.play()
第一次按下按钮时,它要么播放大约半秒钟的声音,然后立即停止,要么根本不播放任何东西。当我再次按下按钮时,它会按预期播放整个文件

为什么不在第一次按下按钮时播放文件?如何使其正常工作

非常感谢您的帮助。

我认为这条线索会很有用。在按下按钮之前尝试加载一次声音,如下所示:

from kivy.core.audio import SoundLoader
from kivy.base import runTouchApp
from kivy.uix.button import Button
import time

sound = SoundLoader.load('output.wav')
sound.seek(0)

class MyLabel(Button):
    def on_release(self):
        start_time = time.time()
        self.play_sound()
        print("--- %s seconds ---" % (time.time() - start_time))

    def play_sound(self):
        if sound:
            print("Sound found at %s" % sound.source)
            print("Sound is %.3f seconds" % sound.length)
            sound.play()

runTouchApp(MyLabel(text="Press me for a sound"))

如果在我的机器上运行
sound()
函数,则在我的机器上完成
play\u sound()函数所需的时间将减少约十倍。seek(0)

是否正在运行kivy eventloop?您可能会遇到中断。我假设eventloop的意思是MyApp().run()(很抱歉,我是新手)。如果是,则它正在运行。我想如果这个问题与主循环有关,那么在我第二次点击按钮时它就没有任何意义了(除非我遗漏了什么,这是完全可能的)。很抱歉(很晚)回复,我不在。我想我真的试过了(我在研究中发现了这个线索),但它并没有解决这个问题。我有时间再试试。另外,我刚刚意识到我没有安装kivy.deps.gstreamer(),我稍后会检查gstreamer是否修复了它。是的,gstreamer可能会有所帮助。如果你有时间,让我知道进展如何,我很感兴趣。。。