alsamixer
我有一张 Xonar DGX 卡,我可以通过转到Analog Output
选项并在Stereo Headphones
和之间切换来更改音频输出Stereo Headphones FP
。如何使用命令行执行相同的操作?
我查找并找到了有关接收器以及如何使用它们进行切换的信息pacmd
,但据我了解,我的两个输出都在同一个接收器内,即我的 Xonar 卡。
答案1
我相信您可以使用多种工具来完成此操作,例如amixer
、 或pamd
、 或pactl
。
笔记:你的假设也是我理解事物的方式。接收器我相当于实际的声卡(输出),它们的输出称为端口。
本指南的实际定义标题为PulseAudio 的底层原理:
下沉
接收器是一个输出设备。它是消耗样本的活动单元。
Sink 通常运行一个具有自己的事件循环的线程,从连接的接收器输入中查看样本块,然后混合它们。它还实现时钟并保持延迟。世界其他地方通常使用消息与接收器进行通信。
典型的接收器代表输出声音设备,例如连接到声卡线路输出或蓝牙耳机上的耳机。 PulseAudio 自动为每个检测到的输出设备创建一个接收器。
例子
这是一个展示如何使用的示例pactl
:
$ pactl list sinks |& grep -E "Sink|Ports|analog-ou"
Sink #0
Ports:
analog-output-lineout: Line Out (priority: 9900, not available)
analog-output-headphones: Headphones (priority: 9000, not available)
Active Port: analog-output-lineout
在上面您可以看到我Active Port:
当前的声卡线路输出。让我们把它换成耳机。
$ pactl set-sink-port 0 analog-output-headphones
如果我们再次检查:
$ pactl list sinks |& grep -E "Sink|Ports|analog-ou"
X11 connection rejected because of wrong authentication.
Sink #0
Ports:
analog-output-lineout: Line Out (priority: 9900, not available)
analog-output-headphones: Headphones (priority: 9000, not available)
Active Port: analog-output-headphones
从man pactl
:
set-sink-port SINK PORT
Set the specified sink (identified by its symbolic name or
numerical index) to the specified port (identified by its symbolic
name).
如果音频设备消失怎么办?
在极少数情况下,我注意到音频输出设备从设备列表中神秘地消失。如果您发现发生这种情况,您可以通过告诉 Pulse Audio 重新加载其模块来轻松解决此问题:
$ pactl load-module module-detect
参考
答案2
我曾经pacmd
将声音从电脑扬声器自动切换到 HDMI:
if grep '^connected$' /sys/class/drm/card0/card0-HDMI*/status ;then
sleep 2
pacmd set-card-profile 0 output:hdmi-stereo
else
sleep 2
pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
fi
要获取活动声音配置文件:
pacmd list |grep 'active profile'
active profile: <output:analog-stereo+input:analog-stereo>
要列出支持的所有可用输出声音配置文件:
pacmd list |grep 'output:'
答案3
这里的所有其他答案都没有解决我的问题,因为它们不要更改配置的必要部分或不要移动活动流。这个问答提供了一些相当复杂的答案。但请注意,今天(截至 2022 年 7 月 15 日)乌班图22.04), 这是很多比描述的更容易slm 的回答或者其他相关的askubuntu Q/A。
尤其这个答案在那里让我也在这里考虑一个答案。
你可以只使用
pactl list short sinks
和pactl list short sources
获取可用接收器和源的列表
(从那个答案)。之后,您可以切换
pactl set-default-sink '<the name of the sink from the list>'
这提到的答案还提供了一个脚本来在两个不同的设备之间切换/切换。
可持续土地管理提到“一些工具,例如amixer
、 或pamd
、 或pactl
”。这些都可以在不同的答案中找到。这里有一些参考使用
- 旧的技能PulseAudio 又名
pactl
(by slm) pacmd
(乔治·瓦西里乌)amixer
(查德·斯基特斯)(它是“alsamixer 的命令行版本”),但给了我此评论错误。因此,我在这里仅提及它以供参考和完整性起见。
答案4
你可以用 来做到这一点amixer
。
amixer -c 0 cset name='Analog Output Playback Enum' 0
其中0-c 0
代表卡号。最后一个参数如下:
0 - 'Stereo Headphones'
1 - 'Stereo Headphones FP'
2 - 'Multichannel'