如何将进程(或一组知道父进程 ID 的进程)生成的音频重定向到 PulseAudio,然后重定向到特定的音频硬件(甚至到特定的通道)?
最小的 PulseAudio 配置应该是什么?
我有一个生成正弦曲线的 Python 脚本,例如,我只想将该声音重定向到我的低音炮(我有 5.1 音频系统)。我只想捕获该过程产生的每个声音。
这是几个问题。:-)
1a) 一般来说,为 Pulseaudio 产生声音的应用程序通过某个名称向 Pulseaudio 服务器标识自己,并使用该名称标识它们,您可以将音频流重定向到特定的硬件接收器。
1b) 如果您的进程通过以某种格式写入stdout或类似格式来产生声音,您可以将其通过管道传输到paplay,然后像来自 Pulseaudio 应用程序一样处理它。使用该-n选项为其指定特定于您的进程的客户端名称(例如paplay -n "sinusoid generator")。
1c) 如果您的进程使用 ALSA 产生声音,请pulse在以下位置选择默认设备.asoundrc:
pcm.!default pulse
ctl.!default pulse
Run Code Online (Sandbox Code Playgroud)
这将添加一个兼容层并将声音转发到 Pulseaudio,在那里它将再次显示为具有特定名称的应用程序。
1d) 如果您的流程以不同的方式产生声音,您必须告诉我们更多细节。
2a) 您可以使用 GUI 将 Pulseaudio 声音输出从应用程序重定向到特定接收器pavucontrol。标准 Pulseaudio 设置包括一个模块,该模块会记住哪些应用程序使用哪些接收器,并在应用程序下次启动时自动恢复这些分配。所以你只需要这样做一次。
2b) 您还可以从命令行执行此操作,pacmd move-sink-input在使用其他pacmd和后使用grep来获取所需的名称。不过,仅使用 GUI 更简单。
3a) 您只能移动完整的音频流,而不能移动通道。但是,您可以在一个接收器上同时播放多个流,因此,如果您的正弦波发生器仅在低音炮通道上产生 5.1 音频,并且正弦波仅在低音炮通道上播放,那么您可以同时在 5.1 音频系统上播放其他声音时间。
3b) 如果您使用paplay(sa),您可以使用--channels和--channel-map来确保您的正弦曲线在低音炮通道上播放。man paplay详情请参阅。
3c) 如果上述方法都不适合您,您可以在硬件接收器顶部创建一个额外的(虚拟)接收器,并重新映射通道(例如单个单声道接收器输入 -> 低音炮通道输出)。
4) 大多数发行版使用的标准 Pulseaudio 配置应该足够了。通过识别和删除不会使用的模块和包来使其更加最小化是可能的,但需要相当多的工作(当然这取决于您的发行版)。
| 归档时间: |
|
| 查看次数: |
2809 次 |
| 最近记录: |