【发布时间】:2013-12-01 02:50:30
【问题描述】:
我想使用 alsa 实现全双工通信。我首先编写了捕获和回放程序,我正在使用 UDP 通信将数据从捕获的进程传输到回放进程。当我运行两个进程时它工作正常,一个正在捕获另一个正在播放(将其视为从 A 到 B 的半双工),当我试图实现另一个半双工(从 B 到 A 的半双工)时,问题就出现了然后我收到 Broken Pipe 错误 从 Mic 读取数据时。如何解决这个问题?任何帮助,在此先感谢。
注意:我在不同的系统上运行两个进程
【问题讨论】:
-
您的程序如何决定何时读取 PCM 设备?
-
我正在从设备连续读取数据,并且正在使用异步回调(通过设置avail-min)写入设备..
-
Don't use async。 “Broken pipe”是EPIPE,意思是你读的不够快。缓冲区有多大?
-
我正在使用大小为 1880 的缓冲区。我对读写有一些疑问。我一次可以从/向设备写入或读取的最佳大小是多少(一个周期或两个周期)以及在读取/写入后我必须等待下一次读取/写入的时间。
标签: alsa