Программа зависает, если сетевое аудиоустройство становится недоступным во время воспроизведения звука

У меня есть программа 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)

0 ответов

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