进行操作时,扬声器发出的声音有明显的延迟,
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 都适合我。