Pulseaudio环回卸载音频输出设备

AkB*_*ukU 13 pulseaudio

我试图找出如何卸载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
Run Code Online (Sandbox Code Playgroud)

它关闭后留下两个输出设备。unload-module 命令摆脱了录音,但我找不到输出命令。

Tak*_*kat 23

卸载模块的适当方式

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

pactl load-module module-null-sink sink_name=test
24
Run Code Online (Sandbox Code Playgroud)

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

pactl unload-module 24
Run Code Online (Sandbox Code Playgroud)

您的脚本必须解析pactl.

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

pactl list short modules
Run Code Online (Sandbox Code Playgroud)

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

pactl unload-module <name>
Run Code Online (Sandbox Code Playgroud)

快速而肮脏的方法

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

pulseaudio -k
Run Code Online (Sandbox Code Playgroud)

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