PulseAudio 环回延迟

PulseAudio 环回延迟

我正在使用 pulseaudio loopback 将我的系统声音和麦克风连接在一起。问题是我的系统声音有时会延迟一秒甚至更长时间。我已经更改了同时输入,paprefs但这并没有解决问题。我正在使用此脚本来执行此操作。

STREAM_MODULE=$(pactl load-module module-null-sink sink_name=StreamAudio sink_properties=device.description="StreamAudio")

pactl load-module module-loopback source=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor sink=StreamAudio latency_msec=1 >> /dev/null  
pactl load-module module-loopback source=alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono sink=StreamAudio latency_msec=1 >> /dev/null

pactl load-module module-device-manager >> /dev/null  

read -p "Loaded! Press enter to unload!"

pactl unload-module $STREAM_MODULE
pactl unload-module module-device-manager
pactl unload-module module-null-sink
pactl unload-module module-loopback

我搜索了好几页,但似乎都无法解决这个问题。我是不是忽略了什么明显的东西?

alsa_output.pci-0000_00_1b.0.analog-stereo.monitor都是我的系统声音。

alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono我的麦克风

下面是延迟变为 3.4 秒的示例:http://screencloud.net/v/tNAQ而另一个环回则少得多http://screencloud.net/v/suIF

据我所知,由于某种原因,缓冲区已填满。有什么方法可以刷新它吗?

答案1

我找到了一个临时的解决方法,但这仍然让我感到困惑。我制作了一个组合模块,然后将我想要的每个声源链接到组合模块,然后将其路由到我的系统声音和流接收器。

STREAM_MODULE=$(pactl load-module module-null-sink sink_name=StreamAudio sink_properties=device.description="StreamAudio")
COMBINE_MODULE=$(pactl load-module module-combine-sink sink_name=Combined sink_properties=device.description="Combined" slaves=StreamAudio,alsa_output.pci-0000_00_1b.0.analog-stereo)

pactl load-module module-loopback rate=44000 adjust_time=0 source=alsa_input.usb-AKM_AK5370-00-AK5370.analog-mono sink=StreamAudio latency_msec=1 >> /dev/null

pactl load-module module-device-manager >> /dev/null  

read -p "Loaded! Press enter to unload!"

pactl unload-module $COMBINE_MODULE
pactl unload-module $STREAM_MODULE
pactl unload-module module-device-manager
pactl unload-module module-loopback

可能有一种方法可以让我 grep 结果pacmd list-clients,然后只清除有效的源,并将其输出更改为组合接收器,但这会花费太长时间且太复杂。

虽然现在出现了一个新问题,但我甚至通过终端运行命令对其进行了测试。出于某种原因,我无法更改 Java 的输出接收器。以下是我尝试过的方法以及它返回的结果:

vilsol@skynet:~$ pacmd move-sink-input 6421 124
Welcome to PulseAudio! Use "help" for usage information.
>>> Moved failed.

我也尝试了其他人的方法,并且都成功了。6421 是 Java 索引,124 是接收器索引。

答案2

有点晚了,但对于那些仍然需要帮助的人来说:
安装“PulseAudio Loopback Device”GNOME Shell 扩展(只需在 Ubuntu 软件中搜索引号中的位)。

PA 环回设备扩展截图

它几乎没有任何明显的延迟,经过一番搜索后,对我来说是一个完美的解决方案!希望这对某些人有用!

答案3

前段时间,我能够将吉他回送到扬声器,没有明显的延迟,所以 pulseaudio 支持这一点,但我记得延迟少于 10ms 时会遇到问题。我的建议是

  1. 查看命令参数
  2. 使用更大的延迟
  3. 分别测试每个环回并
  4. 直接向 pulseaudio 开发人员询问说明。

相关内容