0

我有一个循环的 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)
4

0 回答 0