我的音频输入如何始终是网络摄像头麦克风?


14

每次我想使用Skype时,都必须输入声音首选项。然后,将音频输入转到“ 网络摄像头 ”,然后取消选中“ 静音 ”按钮。真烦人。有没有办法始终保持相同的配置?


1
Logitech Quickacam也存在此问题。每次重新启动后,我都必须浏览首选项并将其重置为默认输入,以使其正常工作。我认为这与以下事实有关:在设置声音首选项后加载USB设备,因此脉冲或Alsa不会“看到” USB麦克风。不幸的是,因为“问题”并不是真正的问题,只是给您带来不便,所以我不想卷起衬衫袖子并开始通过配置文件进行挖掘和编辑并不是很重要。

Answers:


14

更改PulseAudio的默认设置

运行Pulseaudio时,可以通过将自定义配置文件放在.pulseHOME 的隐藏目录中来定义所有设置。如果这些文件尚不存在,则可以使用中的标准文件/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


我的.pulse文件夹中没有default.pa。我应该用一行创建一个新文件:set-default-source x吗?

3
@ToDo默认设置在中/etc/pulse/default.pa~/.pulse在编辑之前,请使用此文件或将其复制到。
塔卡特2012年

为了完整起见:必须将写在输出的尖括号内的内容作为输入设备名称pacmd list-sources。即与我的设备set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-mon
Hi-Angel 2015年

@ Hi-Angel:谢谢您-答案来自Pulseaudio的较旧版本。现在,我们可以使用接收器的专有名称。
塔卡特2015年

6

我同意这个问题是,Pulseaudio不会将USB设备设置为默认设备,因为Pulse开始时不存在该设备。

所以我的解决方案是挂接到连接USB设备时注意到的系统... UDEV!

顺便说一句,这些说明有点时髦,我假设您可以在命令行上轻松地做些事情,并成为更新udev文件和使脚本可执行的root用户。

首先,找出东西

USB ID

第一步是插入您的网络摄像头,并通过键入以下内容查找魔术供应商和产品编号

lsusb

我正在使用Microsoft Lifecam,它显示为

Bus 001 Device 013: ID 045e:072d Microsoft Corp.

重要的部分是045e:072d

Pulseaudio设备

接下来,在连接网络摄像头后,找出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规则

然后,我创建了一个新的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个选项。

  1. 快速而肮脏。使udev规则运行,su james -c pacmd set-default-source... 这太糟糕了,我什至无法完成键入命令。如果您更换摄像头怎么办?如果您为其他用户安装该怎么办?

  2. 稍微清洁一点。运行一个脚本,该脚本读取一个默认文件,该文件中包含pulseaudio设备名称和您的用户名。如果您需要文件,则它们位于GitHub上。首先是脚本 /usr/local/bin/webcam-mic。根据/etc/default/webcam-mic要点中的注释,默认文件仅需要定义2个shell变量。将脚本放入/usr/local/bin/并使其可执行。然后将默认文件放入/etc/defaults/并进行编辑,以使用您的用户名和之前的pulseaudio设备。

祝好运!


您有机会再次上传这些脚本;他们似乎已经从pastebin中消失了?
2014年

我已将该脚本放入GitHub的要点,并更新了答案。
詹姆斯·米切尔

2

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使用正确的麦克风。


0

尝试此操作,单击顶部面板上的扬声器图标,单击首选项。在那里,您可以为麦克风选择默认输入选项,并可能更改一些硬件配置以使其正常运行。


1
谢谢您的帮助,但这就是我现在正在做的事情。但是,我看不到任何将其设置为默认设置的方法。有时,我将不得不再次执行此操作,因为设置可能已更改。
Gizmoatwork 2011年
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.