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


15

我想在ALSA中做一件最简单的事情:让USB耳机产生声音,而不是平板电脑的内置扬声器。我不想通过更改设备顺序来更改配置文件(例如asound.rcalsa.conf或)asound.conf并将耳机永久设置为默认输出设备,而只是想暂时起到效果,直到拔下耳机。奇怪的是,我无法找到答案。有alsamixer能力做到这一点(似乎没有)吗?

在Gnome中,您可以PulseAudio在GUI或CLI界面中使用轻松选择当前输出设备,但PulseAudio它本身可以在ALSA上运行!所以我也想知道,它如何迫使ALSA更改输出设备?


alsamixer确实在界面中有一个“选择声卡”选项,尽管我不知道这是否还会设置输出设备。
goldilocks 2013年

1
不,不幸的是,它仅显示该声卡的参数并允许对其进行调整,但不会将输出重定向至该参数
Boris Burkov

您好,您可以alsamixer从终端尝试执行,然后按F6选择另一个声卡。:)
slackmart

@sgmart嗨,sgmart,我确实做到了,但它不会将声音传输到该设备,它只是选择该设备来调整其参数,而不是流输出到该设备。
鲍里斯·伯科夫

4
alsamixer实用程序具有一些控件:主控,PCI等。检查是否有MM标签(MM =静音),因此请使用M键盘上的键启用声音。
slackmart

Answers:


4

如果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%

谢谢,贾里(Jari),它有效。我一直在阅读有关ALSA的手册,并且有一个问题:amixer和alsamixer列出的设备实际上不是硬件设备,而是由/usr/share/alsa/alsa.conf和朋友中的alsa插件创建的ALSA设备吗?我最了解这些插件的语法,但找不到非常基本的关键字的定义,例如“ pcm”或“ ctl”或“ type”。我在doxygen文档中找不到任何关键字列表:alsa-project.org/alsa-doc/alsa-lib,alsa-project.org/alsa-doc/alsa-lib/conf.html。您知道有关它们的任何信息来源吗?
鲍里斯·伯科夫

8
这并不能真正解决最初的问题。您可以设置参数,但不会更改输出音频的卡。
自己2014年

2
如果这确实回答了原始问题,则需要一个完整的示例。这怎么做alsamixer无法做的事情?显然,alsamixer无法切换到通过其他声卡输出。或者,就我而言,我也想通过相同的声卡而不是扬声器/耳机通过HDMI输出。Pulseaudio做这些事情,但是如何呢?需要一个从头到尾的例子来使这个答案很好。
科林·基南2015年

1
Pitty,这已被选作答案-问题恰恰是我要寻找的:如何临时更改用于输出的卡。但是,正如@oneself所指出的那样,此答案实际上并未解释如何执行此操作。现在,问一个几乎相同标题的新问题很可能会被重复。
domsson

1
@domsson只是链接回到此链接,并说明答案不能解决您的问题。那应该确保它不会被欺骗。
terdon

0

您可以更新.asoundrc/etc/asound.conf动态地更新IIUC 。因此,应该有两个文件headphones.conffront.conf可以将默认设备设置为适当的hw:channel,device编号,然后在“ ACPI插孔/耳机HEADPHONE插头”事件上进行切换。我将尝试使用“ ln”链接/etc/asound.conf到以下网址之一/etc/sounds/{headphones,front}.conf

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.