我正在尝试从命令行在我的视频卡的音频输出之间切换。我可以通过 GUI 设置来做到这一点,如图所示。如何以编程方式执行此操作?
图片上显示了两个音频设备,每个设备都有两个输出:
(绿色)设备 1 -具有两个输出的内置音频:
- 数字输出
- 耳机
(红色)设备 2 - NVidia GTX 660 的HDMI 音频控制器。视频卡上连接了两台显示器:
第一台显示器是LG 电视,它连接到HDMI-0。
第二台显示器是LG ULTRAWIDE,它连接到DVI-I-1。
所以我想通过命令行在红色输出(两个监视器)之间切换。在我的研究中,我发现的一切都是如何在音频设备(声卡)之间切换。我已经阅读了一些主题作为这些问题:
当第一台显示器LG电视| HDMI-0用作音频输出:
$ pactl list sinks short
8 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
16 alsa_output.pci-0000_03_00.1.hdmi-stereo module-alsa-card.c s16le 2ch 44100Hz RUNNING
$ pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
name: <alsa_output.pci-0000_03_00.1.hdmi-stereo>
当第二台显示器LG ULTRAWIDE | DVI-I-1用作音频输出:
$ pactl list sinks short
8 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
17 alsa_output.pci-0000_03_00.1.hdmi-stereo-extra1 module-alsa-card.c s16le 2ch 44100Hz RUNNING
$ pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
name: <alsa_output.pci-0000_03_00.1.hdmi-stereo-extra1>
pacmd list-cards
和的输出在此处pactl list cards
提供。
您可以看到(在这种特殊情况下)我正在寻找一种在sink 16
和之间切换的方法sink 17
。但是当sink 16
出现在 中时pactl list sinks
,sink 17
不会出现,反之亦然。我只能从 GUI 设置中切换它们。有没有办法通过命令行做到这一点?
感谢与@Thomas的讨论,我意识到正确的 therms (关键词)是profile和card。在问题配置文件方面是输入和输出。这些卡是音频设备。接收器编号并不那么重要,但我们需要它们。
pacmd list-cards
我们可以通过命令或pactl list cards
输出相同信息的命令找到每个卡名称的所有可用配置文件:可以通过命令设置某个配置文件,格式如下:
根据提到的四个输出的问题,命令是:
如this answer所示,设置新配置文件后,接下来要做的事情是:
根据我在问题中描述的需要,我创建了以下脚本:
该脚本已准备好与自定义键盘快捷键一起使用,因为它可以处理第一个位置参数的值 (
1
-4
)。当它在没有额外参数的情况下被调用时,它会询问您的选择: