Pulseaudio回送卸载音频输出设备


12

我正在尝试找出如何卸载Pulseaudio回送输出。我正在使用Pulseaudio创建回送混音以捕获我的麦克风和系统音频以进行流式传输。每次我启动包含以下代码的脚本时:

pactl load-module module-null-sink sink_name=mix 
pactl load-module module-loopback sink=mix
pactl load-module module-loopback sink=mix

avconv ...

pactl unload-module module-loopback

关闭后,它会留下两个输出设备。unload-module命令摆脱了记录之一,但我找不到用于输出的命令。

Answers:


17

卸载模块的适当方法

卸载加载到Pulse Audio的模块是通过模块的索引号完成的,该索引号在加载时给出:

pactl load-module module-null-sink sink_name=test
24

在上面的示例中,Pulseaudio服务器使用索引id加载了模块24。可以使用以下命令卸载此模块:

pactl unload-module 24

您的脚本将必须解析的输出pactl

如果我们不知道模块号,我们可以发出以下命令来显示模块号和模块名称:

pactl list short modules

较新的版本还允许按名称卸载:

pactl unload-module <name>

快速而肮脏的方法

如果将pulseaudio设置为自动生成的恶魔(应该是默认行为),我们可以通过重置PulseAudio服务器来快速卸载登录后加载的所有模块,以default.pa通过运行以下命令加载我们定义的默认模块:

pulseaudio -k

这将有效地从脚本中卸载所有模块,并将加载默认接收器以进行输出。


值得一提的是,并不是所有的应用程序都可以通过减少流来恢复。
Aurelia

通过接收器名称获取模块号:它MODULE_NUMBER=$(pacmd list-sinks | grep -E "^\s*name:|^\s*module:" | grep -A 1 -E "^\s*name: <MY-SINK-NAME>" | grep -oP "module: \K[0-9]+")在哪里MY-SINK-NAME说。保留< >代码中!
KrisWebDev

1
@KrisWebDev:谢谢,添加了一行关于如何获取模块索引以获得更一般的方法的内容。
塔卡特

太好了,然后变成:pactl list short modules | grep "sink_name=MY-SINK-NAME" | cut -f1 | xargs -L1 pactl unload-module。它具有删除所有已命名模块的优点MY-SINK-NAME(接收器名称不是唯一的)。
KrisWebDev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.