0

我正在做一个项目,从将要播放声音的计算机上任意拔出和插入 USB 声卡。插入卡后,我的软件应该尽快播放声音。

为了检测正在连接的 USB,我使用了 libusbLIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVEDLIBUSB_HOTPLUG_EVENT_DEVICE_LEFT事件,它完美地工作。一旦设备连接到 USB 端口,就会触发该事件。去掉的时候也一样。

我面临的问题是在 libusb 检测到设备的那一刻与我真正开始使用该设备播放声音的那一刻之间存在时间间隔。我正在使用miniaudio播放正弦波,但使用 Qt Multimedia 的问题是相同的,所以我猜它与后端(ALSA)有关。

在 libusb 检测到设备后,我必须明确等待大约 5/6 秒才能使用 miniaudio 安全地打开它,但我宁愿没有那个神奇的数字。

有没有其他方法可以知道设备何时准备就绪?我试过检查udev,但它与libusb同时被激活。

4

0 回答 0