我想使用 alsa 实现全双工通信。我首先编写了捕获和回放程序,我正在使用 UDP 通信将数据从捕获的进程传输到回放进程。当我运行两个进程时它工作正常,其中一个正在捕获,另一个正在播放(将其视为从 A 到 B 的半双工),当我尝试实现另一个半双工(从 B 到 A 的半双工)时,问题就出现了然后我得到 断管错误
从麦克风读取数据时。如何解决这个问题?。任何帮助,提前致谢。
注意:我在不同的系统上运行两个进程
最佳答案
当应用程序必须等待 PCM 设备时,它会进入休眠状态并在下一个周期边界唤醒。因此,读/写的最佳大小是一个周期(或它的倍数)。
您应该在某些帧可用时立即读取/写入示例数据。
要减少溢出/不足的可能性,请增加缓冲区大小。
(在捕获设备上,增加缓冲区大小不会增加延迟。)
关于Alsa 全双工通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039573/