我想在 ALSA 中做一件最简单的事情:让 USB 耳机而不是平板电脑的内部扬声器发出声音。我不想更改配置文件,例如asound.rc
或alsa.conf
或asound.conf
并通过更改设备顺序将耳机永久设置为默认输出设备,我想要一个临时效果,直到我拔下耳机为止。奇怪的是,我无法通过谷歌搜索答案。有alsamixer
能力做到这一点(似乎没有)?
在 Gnome 中,您可以PulseAudio
在其 GUI 或 CLI 界面中轻松选择当前输出设备,但PulseAudio
它本身可以在 ALSA 之上运行!所以我也想知道,它是如何强制ALSA改变输出设备的?
答案1
如果 USB 设备在系统中被列为声卡,您可能需要检查man amixer
并使用该unmute
参数。
amixer -c 1 set Master playback 100% unmute
还要检查其他通道(PCM 等)。手册中的示例是:
amixer -c 1 sset Line,0 80%,40% unmute cap
will set the second soundcard's left line input volume to 80% and right line
input to 40%, unmute it, and select it as a source for capture (recording).
amixer -c 1 -- sset Master playback -20dB
will set the master volume of the second card to -20dB. If the master has
multiple channels, all channels are set to the same value.
amixer -c 1 set PCM 2dB+
will increase the PCM volume of the second card with 2dB. When both play‐
back and capture volumes exist, this is applied to both volumes.
amixer -c 2 cset iface=MIXER,name='Line Playback Volume",index=1 40%
will set the third soundcard's second line playback volume(s) to 40%
amixer -c 2 cset numid=34 40%
will set the 34th soundcard element to 40%
答案2
IIUC你可以更新.asoundrc
或者/etc/asound.conf
动态的。因此应该可以有两个文件headphones.conf
,front.conf
将默认设备设置为适当的hw:channel,device
数字,然后在“ACPI 插孔/耳机 HEADPHONE 插头”事件上将它们切换。我要尝试一下,使用“ln”链接/etc/asound.conf
到其中之一/etc/sounds/{headphones,front}.conf
答案3
许多声音应用程序可以使用其他非默认输出。甚至 Chromium 浏览器也有命令行开关来选择声音输出。您可以创建一个简单的包装器来运行具有所需输出的声音应用程序,以避免每次都弄乱conf。
答案4
我也在寻找这个,但 alsamixer 似乎无法做到这一点。一个稍微离题的方法是启动 pavucontrol,它很容易实现这一点。 pavucontrol 可以从终端启动,如果您要播放,您可以轻松切换可用输出的黑白。