Программа зависает, если сетевое аудиоустройство становится недоступным во время воспроизведения звука
У меня есть программа python, которая зацикливается, воспроизводя аудиофайлы с помощью python-sounddevice на устройстве вывода, подключенном с помощью виртуальной звуковой карты dante.
Если во время воспроизведения звука внезапно обрывается сетевое соединение, программа полностью перестает отвечать и зависает (у компьютера больше нет доступного устройства вывода).
Я пробовал использовать try/except для обработки / перехвата возможного исключения, но кажется, что если это происходит во время воспроизведения звука, это не вызывает никаких исключений.
РЕДАКТИРОВАТЬ: Кроме того, при повторном подключении к сети компьютер снова обнаруживает устройство вывода, но это не помогает решить проблему.
Код:
import os
import sounddevice as sd
import soundfile as sf
import numpy
import time
import errno
if os.path.isfile(path) and os.access(path, os.R_OK):
try:
data, fs = sf.read(path, dtype='float32')
print('START')
sd.play(data, fs, device = device_id)
sd.wait()
print('END') #never gets to this point
except BaseException as err:
print(err.args)
else:
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), path)