我有一个循环的 python 程序,在使用 dante 虚拟声卡连接的输出设备上使用 python-sounddevice 播放音频文件。
播放音频时,如果网络连接突然断开,程序将完全无响应并死机(计算机不再有可用的输出设备)。
我曾尝试使用 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)