在模拟立体声输出和 HDMI 音频输出之间切换的快捷方式

sof*_*ter 19 sound software-recommendation

要切换到 HDMI 音频输出(显示器)并从系统音频插孔恢复正常音频输出(对于耳机,因为我的显示器没有音频输出),我发现自己每次都打开声音首选项并选择正确的频道。有什么办法可以在面板中创建一个切换按钮或分配一些快捷键来切换,因为我经常进行切换。

:aplay -l 
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: STAC92xx Analog [STAC92xx Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 3: HDMI 0 [HDMI 0]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 7: STAC92xx Digital [STAC92xx Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Tak*_*kat 11

使用pulseaudio,我们可以从命令行选择输出接收器:

pacmd set-default-sink "SINKNAME"
Run Code Online (Sandbox Code Playgroud)

此命令可用于启动器、脚本,甚至可以分配给键盘快捷键,以便在不同接收器之间快速切换。请将“SINKNAME”替换为所需接收器的名称或编号。命令给出了已知接收器及其相关编号和名称的列表:

pacmd list-sinks
Run Code Online (Sandbox Code Playgroud)

注意:通过命令行界面更改输出接收器只有在禁用流目标设备读取时才能生效。这可以通过编辑相应的行/etc/pulse/default.pa来完成:

load-module module-stream-restore restore_device=false
Run Code Online (Sandbox Code Playgroud)

或者,我们可以运行pulseaudio来同时向内部音频设备和hdmi设备输出声音,方法是运行paprefs并选择添加虚拟输出设备:

纸条

  • `pacmd set-default-sink "alsa_output.pci-0000_00_1b.0.analog-stereo"` 和 `pacmd set-default-sink "alsa_output.pci-0000_00_1b.0.hdmi-stereo"` 仅在选择相应的配置文件后才起作用在声音首选项中。如果我设置了 HDMI 并运行模拟立体声的 pacmd 命令,我会收到错误消息“Sink alsa_output.pci-0000_00_1b.0.analog-stereo 不存在。”但是如果我从声音首选项中手动选择配置文件GUI 并运行相同的命令,我没有收到错误消息。所以它无助于切换。 (2认同)

小智 9

我自己发现这很烦人,并编写了一个脚本来切换输出:

#!/bin/bash

CURRENT_PROFILE=$(pacmd list-cards | grep "active profile" | cut -d ' ' -f 3-)

if [ "$CURRENT_PROFILE" = "<output:hdmi-stereo+input:analog-stereo>" ] ; then
  pacmd set-card-profile 0 "output:analog-stereo+input:analog-stereo"
else 
  pacmd set-card-profile 0 "output:hdmi-stereo+input:analog-stereo"        
fi
Run Code Online (Sandbox Code Playgroud)

然后在我的键盘上绑定一个未使用的键来执行它(见这个)。