【发布时间】:2017-02-03 11:57:49
【问题描述】:
我需要(几乎)在 Linux 上使用 gstreamer 进行实时音频捕获。我的问题是我无法将延迟降低到 ~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插件设置设备延迟。我想,如果可能的话,我应该在stream-properties 中添加一些内容,但无法弄清楚是什么(I searched for it here)以及如何。
是否可以为任何gstreamer 源设置此设备延迟,如果可以,如何设置?
【问题讨论】:
-
其中一些音频库 (jack) 在安装过程中提供实时选项...您看到这样的选项了吗? ...它不是默认设置,因为它将优先级转移到音频处理上,从而损害了非音频进程
-
也许您想在 ALSA 级别测试延迟,看看这是否可能更多是 ALSA 问题而不是 GStreamer 问题? alsa-project.org/main/index.php/Test_latency.c
-
我还看到 alsasrc 上有一个
buffer-time属性,您可能想尝试一下。默认值是 200000 微秒,这看起来有点像您看到的延迟...... -
我确信系统能够以低延迟工作,因为
pactl工作并且 alsa 延迟测试程序也报告了大约 2 毫秒的延迟。但是设置buffer-time(我之前也发现过)或latency-timealsasrc 属性都没有达到预期的效果。 (buffer-time低时,回送声音开始出现故障,latency-time可以增加但不能减少延迟。) -
看起来 gstreamer 有太多延迟。我实际上确认脉冲音频有 1 毫秒的延迟,但 gstreamer 提供的最好的是 100 毫秒
标签: audio gstreamer low-latency