在alsa / libasound中是否有任何方法来检查SPDIF中的SPDIF实际上是否有连接的设备?
我目前正在使用带有USB声卡的Raspberry Pi将来自我的PC机的音频与Pi的音频合并,然后再输出给我的扬声器。
问题是,如果我关掉我的电脑或者让它进入睡眠状态,扬声器就会发出几秒钟的敲门声,然后保持沉默,而我的程序会导致大量的捕获缓冲区溢出。
因此,在读取PCM输入之前,我需要检查是否有实际连接的设备。
发布于 2019-01-08 22:07:42
我找到了一个解决方案,尽管不是我所期望的最佳解决方案。
如果有人有主意,我会很高兴听到的。在此之前,我将按以下方式处理这一问题:
我注意到,当电缆被移除时,取样率下降了。我希望当电脑关机时也是如此,但我认为这是相当安全的假设。
无论如何,为了找出是播放还是忽略流,我使用了high_precision_clock的时间间隔在20个周期之间。
在每一段时间里,我使用snd_pcm_readi收集读取样本的数量(我使用非阻塞模式和超时以防止在读取过程中停留超过一段时间所需的时间)。
最后,我计算了样本率,如果它与我期望的采样率相差超过2 2kHz,我会忽略这个流,直到它再次回到预期的范围。
https://unix.stackexchange.com/questions/492351
复制相似问题