我需要(几乎)使用gstreamer
在Linux上进行实时音频捕获。我的问题是我无法将延迟降低到〜210ms以下。我尝试了从麦克风到耳机的简单环回:
gst-launch-1.0 pulsesrc ! alsasink
gst-launch-1.0 alsasrc ! alsasink
两者都产生了相同的延迟。 latency-time
的{{1}}属性没有帮助(它确实添加了给定的延迟)。
alsasrc
但我无法弄清楚是否可以为pactl load-module module-loopback latency_msec=1
的{{1}}插件设置设备延迟。我想,如果有可能的话,我应该向pulsesrc
添加一些内容,但无法弄清楚(I searched for it here)及其内容。
是否可以为任何gstreamer
来源设置此设备延迟,如果是,可以如何设置?
答案 0 :(得分:1)
使用pulseink而不是alsasink可以解决问题。试试这个:
gst-launch-1.0 -v alsasrc buffer-time=35000 ! pulsesink
答案 1 :(得分:0)
尽可能接近网络上的零延迟约为20毫秒。此示例生成与在会话描述协议中最大ptime为20的VoIP呼叫相同的RTP流。第一个管道是扬声器,第二个管道是监听器。我没有以较低的延迟测试这个问题,也没有用本地的水槽测试,但是这个设置确实存在。
gst-launch alsasrc name=mic provide-clock=true actual-buffer-time=20000 do-timestamp=true buffer-time=20000 \
mic. \
! alawenc \
! rtppcmapay max-ptime=20000000 \
! udpsink host=192.168.1.2 port=5000
gst-launch udpsrc port=5000 caps="application/x-rtp, media=(string)audio, clock-rate=(int)8000, encoding-name=(string)PCMA" \
! rtppcmadepay \
! audio/x-alaw, rate=8000, channels=1 \
! alawdec \
! alsasink buffer-time=80000