ALSA:如何临时更改输出设备

ALSA:如何临时更改输出设备

我想在 ALSA 中做一件最简单的事情:让 USB 耳机而不是平板电脑的内部扬声器发出声音。我不想更改配置文件,例如asound.rcalsa.confasound.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.conffront.conf将默认设备设置为适当的hw:channel,device数字,然后在“ACPI 插孔/耳机 HEADPHONE 插头”事件上将它们切换。我要尝试一下,使用“ln”链接/etc/asound.conf到其中之一/etc/sounds/{headphones,front}.conf

答案3

许多声音应用程序可以使用其他非默认输出。甚至 Chromium 浏览器也有命令行开关来选择声音输出。您可以创建一个简单的包装器来运行具有所需输出的声音应用程序,以避免每次都弄乱conf。

答案4

我也在寻找这个,但 alsamixer 似乎无法做到这一点。一个稍微离题的方法是启动 pavucontrol,它很容易实现这一点。 pavucontrol 可以从终端启动,如果您要播放,您可以轻松切换可用输出的黑白。

相关内容