Answers:
运行Pulseaudio时,可以通过将自定义配置文件放在.pulse
HOME 的隐藏目录中来定义所有设置。如果这些文件尚不存在,则可以使用中的标准文件/etc/pulse/
作为模板。这些文件中的大多数条目都有详细的解释。
~/.pulse/default.pa
加载模块并定义默认值~/.pulse/client.conf
为声音服务器配置客户端~/.pulse/daemon.conf
定义采样率和缓冲区为了使您的网络摄像头成为默认来源,我们需要通过在终端中查看以下命令生成的列表来了解该来源的名称和编号:
pacmd list-sources
然后,我们在中编辑以下行~/.pulse/default.pa
:
set-default-source [name]
并替换[name]
为所需来源的名称或来源编号。然后,我们需要通过添加以下行来确保源未静音:
set-source-mute [name]|[#n]> 0
输入源名称或索引。您可以添加PulseAudio Wiki(现在位于手册页:)上引用的各种其他设置man pulse-cli-syntax
。
建议先通过命令行界面测试所有命令,然后再更改配置文件。可以 在终端中打开pacmd
/etc/pulse/default.pa
。~/.pulse
在编辑之前,请使用此文件或将其复制到。
pacmd list-sources
。即与我的设备set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-mon
。
我同意这个问题是,Pulseaudio不会将USB设备设置为默认设备,因为Pulse开始时不存在该设备。
所以我的解决方案是挂接到连接USB设备时会注意到的系统... UDEV!
顺便说一句,这些说明有点时髦,我假设您可以在命令行上轻松地做些事情,并成为更新udev文件和使脚本可执行的root用户。
第一步是插入您的网络摄像头,并通过键入以下内容查找魔术供应商和产品编号
lsusb
我正在使用Microsoft Lifecam,它显示为
Bus 001 Device 013: ID 045e:072d Microsoft Corp.
重要的部分是045e:072d
接下来,在连接网络摄像头后,找出pulseaudio设备的名称。类型
pacmd list-sources
再次,我正在寻找那条线,name:
然后有关于Microsoft Lifecam的东西……
name: <alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono>
所以我的PulseAudio设备名称将是 alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono
然后,我创建了一个新的udev规则,当插入了带有vendor = 045e和product = 072d的USB设备时将触发该规则。要制定规则,请创建一个名为/etc/udev/rules.d/
SOMETHING的新文件.rules
(我称为我的file /etc/udev/rules.d/95-webcam-mic.rules
)。
将此行放入文件
SUBSYSTEMS=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="072d", ACTION=="add", GROUP="audio", RUN+="/usr/local/bin/webcam-mic"
别忘了将ATTR {idVendor}和ATTR {} idProduct为您的网络摄像头的值。
该规则的作用是运行一个脚本来设置用于输入的USB设备,这就是该RUN+="/usr/local/bin/webcam-mic"
部分。
快速概览时间。每次连接网络摄像头时,我要运行命令
pacmd set-default-source alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono
但是该命令需要以我(运行桌面的用户)身份运行,而udev以根用户身份运行-因此,当udev运行我的命令时,我需要将其更改为我的用户,然后运行该命令。
因此,我们有2个选项。
快速而肮脏。使udev规则运行,su james -c pacmd set-default-source...
这太糟糕了,我什至无法完成键入命令。如果您更换摄像头怎么办?如果您为其他用户安装该怎么办?
稍微清洁一点。运行一个脚本,该脚本读取一个默认文件,该文件中包含pulseaudio设备名称和您的用户名。如果您需要文件,则它们位于GitHub上。首先是脚本 /usr/local/bin/webcam-mic
。根据/etc/default/webcam-mic
要点中的注释,默认文件仅需要定义2个shell变量。将脚本放入/usr/local/bin/
并使其可执行。然后将默认文件放入/etc/defaults/
并进行编辑,以使用您的用户名和之前的pulseaudio设备。
祝好运!
Takkat的解决方案对我不起作用,这是我对仍然对此有疑问的任何人的解决方案。
Takkat的解决方案对我来说有两个问题。首先,我意识到启动后需要一段时间才能切换到麦克风(我在下面的解决方案中使用“ sleep”命令)。同样,命令“ set-default-source”可以打开USB麦克风,但是Skype无法识别出该声音,因此继续使用内部麦克风。
为此,首先安装pavucontrol非常有用。在pavucontrol中,打开“配置”选项卡,并观察下面的命令发生了什么,以检查事情是否按预期进行。
然后,从终端输入:
pacmd
在此处输入:
list-cards
在输出中,找到所需的USB音频的索引号(在我的情况下为1)。然后,查看默认卡和USB卡在“配置文件”下列出的行。这些名称应与pavucontrol中列出的名称相同,并且可以类似“ ouput:input + output”,“ off”或“ input:analog-mono”等。仍在pacmd命令行中,该命令set-card-profile <index number> <profile name>
应更改pavucontrol中的设置。我们在这里要做的是将内部音频从双工切换到仅输出,将USB切换到输入。
找到合适的配置文件后,我们想创建一个启动命令以在启动后立即更改一些设置。要创建启动命令,请打开破折号并搜索“启动应用程序”,然后单击“添加”,然后在下面输入您选择的名称和相应的命令。
经过反复试验,我的启动命令最终看起来像这样:
bash -c "sleep 30 && pacmd set-card-profile 0 output:analog-stereo && pacmd set-card-profile 1 off && pacmd set-card-profile 1 input:analog-mono"
说明:我发现命令'sleep'是必要的,这意味着该命令在暂停后执行,我将其设置为30秒(我认为这可以少一些,可以试一下)。下一个命令(在“ &&”之后)是获取默认(内部)卡配置文件,以从输入+输出(双工,这是默认设置)切换到仅输出。下一个命令用于关闭USB声卡(在我的情况下,数字为'1')。最后一条命令是针对同一张卡以“ input:analog-mono”模式重新打开
您可能需要尝试这些设置,才能找到可行的设置。
现在,当我启动时,我的USB麦克风在30秒后即可使用,并且Skype使用正确的麦克风。
尝试此操作,单击顶部面板上的扬声器图标,单击首选项。在那里,您可以为麦克风选择默认输入选项,并可能更改一些硬件配置以使其正常运行。