Alsa 全双工通信

标签 alsa

我想使用 alsa 实现全双工通信。我首先编写了捕获和回放程序,我正在使用 UDP 通信将数据从捕获的进程传输到回放进程。当我运行两个进程时它工作正常,其中一个正在捕获,另一个正在播放(将其视为从 A 到 B 的半双工),当我尝试实现另一个半双工(从 B 到 A 的半双工)时,问题就出现了然后我得到 断管错误
从麦克风读取数据时。如何解决这个问题?。任何帮助,提前致谢。

注意:我在不同的系统上运行两个进程

最佳答案

当应用程序必须等待 PCM 设备时,它会进入休眠状态并在下一个周期边界唤醒。因此,读/写的最佳大小是一个周期(或它的倍数)。

您应该在某些帧可用时立即读取/写入示例数据。

要减少溢出/不足的可能性,请增加缓冲区大小。
(在捕获设备上,增加缓冲区大小不会增加延迟。)

关于Alsa 全双工通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039573/

相关文章:

c - 在几个 header 中重新定义 'struct timeval'

android - FFMPEG for Android - 缺少 alsa 格式

raspberry-pi - 如何在不重启树莓派本身的情况下重启 ALSA?

c++ - 使用 ALSA 的函数 snd_pcm_writei 我可以立即释放样本缓冲区吗?

audio - 使用 alsa 捕获 pcm

python - Debian 音频问题,包括 Alsa、PulseAudio 和 QJackCtl

c - 从 C 代码设置 ALSA 主音量

linux - sudo alsactl store 不保存捕获设置

python - 如何合成声音?

c - 用 ALSA 录音