我想在命令行上将程序的音频输出重定向到文件,例如在
$ redirect-wrapper file.wav my-program
以便
- 我听不到程序的输出,即输出只应转到文件
- 除了程序之外,我什么都没记录,即只有该特定程序被重定向到文件
- 音频系统的其余部分完全不受干扰,没有来回更改任何配置选项或类似的操作
有没有办法做到这一点?此相关的问题并没有帮助,我需要一个命令行的解决方案,也没有“点击那里,再有”。这可能也是相关的,但也依赖于图形应用程序pavucontrol。我找到了pavucontrol,pacmd的终端替代品。
但这仍然只能使以下折衷成为可能:
- 获取默认接收器并保存它是什么。怎么样?大概通过
pacmd list-sinks
- 使用将默认接收器设置为snd-aloop接收器
pacmd set-default-sink
。 - 从该接收器记录。
- 启动程序
- 等待应用程序打开其接收器输入:
pacmd list-sink-inputs | grep name-of-my-program
如果找到接收器,则输入已打开。 - 将默认值改回原来的状态
pacmd set-default-sink
。 - 应用程序关闭后,停止记录。
但这仍会更改默认接收器长达几分钟的时间(接收器输入通常不会打开,直到程序实际播放声音后才启动它)。我实施了这个折衷方案;Github。
仍在寻找不妥协的答案。
@rudimeier这是全局设置默认输出设备。不管是从〜/ .asoundrc还是以其他方式,它将始终使音频系统的其余部分混乱。
—
没人
不知道,但我认为您的做法正确。的输出
—
乔
pacmd list
显示了将哪些源和接收器附加到特定程序,因此可能有一种更改它们的方法。尝试在list.freedesktop.org/mailman/listinfo/pulseaudio-discuss上询问pulseaudio列表。维护人员/开发人员在那儿,非常有帮助。
@Joe可以使用pacmd重新分配接收器,是的,但是因为只有在音频实际开始播放时才分配接收器(至少对于某些程序; Firefox),这意味着我将需要在紧密的循环中搜索它们,并且可能会错过音频的前0.5秒左右。感谢您提供有关邮件列表的提示。:-)
—
没人
~/.asoundrc
。也许您可以以某种方式避免这种情况。