管道 arecord 输出和进入 aplay 的延迟

管道 arecord 输出和进入 aplay 的延迟

进行操作时,扬声器发出的声音有明显的延迟,

arecord | aplay

我想减少延迟,因为我想用 bash 脚本编写一个低延迟的声音服务器。

arecord {parameters} | nc    {parameters}   --> in first host
nc      {parameters} | aplay {parameters}   --> in second host 

有什么方法可以减少延迟吗?或者是否可以用 bash 脚本编写一个低延迟的声音服务器?

答案1

Netcat (nc) 很难正常工作,因为您确实需要使用 UDP 协议而不是 TCP。 TCP 总是会出现延迟,并且随着时间的推移,这种延迟会变得更糟。原因是一旦数据包丢失,TCP 就会尝试自动恢复数据包,从而在实时传输中引入更多的滞后延迟。另一方面,UDP 将忽略丢弃的数据包,使实时界面保持最新状态。在 Wi-Fi 上,丢包很常见,因此这个问题非常引人注目。

GStreamer通过 UDP 工作非常容易。我确信有一种方法可以让 gstreamer 使用 arecord 和 aplay,但实际上没有必要,因为 gstreamer 支持阿尔萨斯直接地。例子:

客户端上的麦克风 (192.168.44.10)

答案2

--buffer-size=0

因为 arecord 和 aplay 都适合我。

相关内容