我正在使用 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 软件中搜索引号中的位)。
它几乎没有任何明显的延迟,经过一番搜索后,对我来说是一个完美的解决方案!希望这对某些人有用!
答案3
前段时间,我能够将吉他回送到扬声器,没有明显的延迟,所以 pulseaudio 支持这一点,但我记得延迟少于 10ms 时会遇到问题。我的建议是
- 查看命令参数
- 使用更大的延迟
- 分别测试每个环回并
- 直接向 pulseaudio 开发人员询问说明。