【问题标题】:Low latency audio capture with gstreamer使用 gstreamer 进行低延迟音频捕获
【发布时间】:2017-02-03 11:57:49
【问题描述】:

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

gst-launch-1.0 pulsesrc ! alsasink
gst-launch-1.0 alsasrc ! alsasink

两者都产生了相同的延迟。 alsasrclatency-time 属性没有帮助(它确实增加了给定的延迟)。我可以产生我需要的效果

pactl load-module module-loopback latency_msec=1

但是我不知道是否可以为gstreamerpulsesrc插件设置设备延迟。我想,如果可能的话,我应该在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-time alsasrc 属性都没有达到预期的效果。 (buffer-time 低时,回送声音开始出现故障,latency-time 可以增加但不能减少延迟。)
  • 看起来 gstreamer 有太多延迟。我实际上确认脉冲音频有 1 毫秒的延迟,但 gstreamer 提供的最好的是 100 毫秒

标签: audio gstreamer low-latency


【解决方案1】:

使用 pulsesink 代替 alsasink 可能会解决问题。试试这个:

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

【讨论】:

    【解决方案2】:

    通过网络达到零延迟大约是 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
    

    【讨论】:

      猜你喜欢
      • 2020-10-11
      • 2012-04-27
      • 1970-01-01
      • 2014-10-28
      • 2015-12-28
      • 1970-01-01
      • 2021-11-23
      • 2019-01-04
      • 1970-01-01
      相关资源
      最近更新 更多