Kivy не воспроизводит звуковой файл при первом вызове play()

Я запускаю простое приложение Kivy в Windows. При нажатии кнопки выполняется следующий метод из документа Kivy ( ссылка):

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()

При первом нажатии кнопки она либо воспроизводит примерно полсекунды звука, а затем немедленно останавливается, либо вообще ничего не воспроизводит. Когда я снова нажимаю кнопку, он воспроизводит весь файл, как и ожидалось.

Почему он не воспроизводит файл при первом нажатии кнопки и как мне заставить его работать должным образом?

Любая помощь с благодарностью.

1 ответ

Я думаю, что эта тема будет полезна. Попробуйте загрузить звук один раз, прежде чем кнопка будет нажата, вот так:

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"))

play_sound() на моем компьютере эта функция заняла примерно в десять раз меньше времени sound.seek(0),

Другие вопросы по тегам