Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 使用gstreamer进行低延迟音频捕获_Audio_Gstreamer_Low Latency - Fatal编程技术网

Audio 使用gstreamer进行低延迟音频捕获

Audio 使用gstreamer进行低延迟音频捕获,audio,gstreamer,low-latency,Audio,Gstreamer,Low Latency,我需要使用gstreamer在Linux上(几乎)实时捕获音频。我的问题是,我无法将延迟降低到~210毫秒以下。我尝试了从麦克风到耳机的简单回环: gst-launch-1.0 pulsesrc ! alsasink gst-launch-1.0 alsasrc ! alsasink 两者都产生了同样的延迟。alsasrc的latency time属性没有帮助(它确实添加了给定的延迟)。我可以用它来产生我需要的效果 pactl load-module module-loopback laten

我需要使用
gstreamer
在Linux上(几乎)实时捕获音频。我的问题是,我无法将延迟降低到~210毫秒以下。我尝试了从麦克风到耳机的简单回环:

gst-launch-1.0 pulsesrc ! alsasink
gst-launch-1.0 alsasrc ! alsasink
两者都产生了同样的延迟。
alsasrc
latency time
属性没有帮助(它确实添加了给定的延迟)。我可以用它来产生我需要的效果

pactl load-module module-loopback latency_msec=1
但是我无法确定是否可以为
gstreamer
pulsesrc
插件设置设备延迟。我想,如果可能的话,我应该向
流属性
中添加一些内容,但无法确定是什么()以及如何添加


是否可以为任何
gstreamer
源设置此设备延迟,如果可以,如何设置?

网络延迟最接近于零大约为20ms。此示例生成的RTP流与会话描述协议中最大ptime为20的VoIP呼叫相同。第一条管道是说话人,第二条管道是听众。我还没有用较低的延迟或本地接收器板对此进行测试,但该设置确实是出于您的目的而存在的

演讲者 听众
用pulsesink代替alsasink可以解决这个问题。试试这个:

gst-launch-1.0 -v alsasrc buffer-time=35000 !  pulsesink

其中一些音频库(插孔)在安装过程中提供实时选项。。。你看到这样的选择了吗。。。这不是默认设置,因为它将优先级转移到音频处理上,而不利于非音频处理。您可能想在ALSA级别测试延迟,看看这是否更像是ALSA问题而不是GStreamer问题?我还看到,在alsasrc上有一个
缓冲时间
属性,您可能想试试。默认值为200000微秒,看起来与您看到的延迟非常相似。.我确信系统能够在低延迟下工作,因为
pactl
工作,alsa延迟测试程序也报告约2ms的延迟。但是设置
缓冲时间
(我之前也发现过)或
延迟时间
alsasrc属性都没有达到预期效果。(当
缓冲时间较低时,
环回声音开始闪烁,
延迟时间可以增加,但不能减少延迟。)
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
gst-launch-1.0 -v alsasrc buffer-time=35000 !  pulsesink