simpleaudio ломает скрипт

При остановке проигрывания через sa.stop_all()/play_obj.stop() скрипт "виснет" и останавливается с ошибкой

import simpleaudio as sa
wave_obj = sa.WaveObject.from_wave_file("music.wav")
play_obj = wave_obj.play()

play_obj.stop()
print('hello')

код ничего не выводит и просто останавливается с ошибкой (в VS code слева от команды запуска стоит крестик)


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Скрипт не останавливается с ошибкой. Вызов wave_obj.play() асинхронный. Он начинает проигрывание звука, но не ожидает его окончания. Ваш скрипт почти немедленно останавливает воспроизведение (play_obj.stop()) и завершается.

Чтобы дождаться окончания проигрывания, сделайте так:

import simpleaudio as sa

wave_obj = sa.WaveObject.from_wave_file("music.wav")
play_obj = wave_obj.play()  # запускает проигрывание
play_obj.wait_done()        # ожидает окончания мелодии

print('hello')
→ Ссылка