说明:我发现命令'sleep'是必要的,这意味着命令在暂停后执行,我设置为30秒(我认为这可以更少,玩弄这个)。下一个命令(在“&&”之后)是获取默认(内部)卡配置文件以从输入+输出(双工,这是默认设置)切换到仅输出。下一个命令是关闭 USB 声卡(在我的例子中,数字是“1”)。最后一个命令是让同一张卡在“输入:模拟单声道”模式下重新打开
您可能必须尝试使用这些设置,才能找到有效的设置。
现在,当我启动时,我的 USB 麦克风在 30 秒后就可以使用了,并且 Skype 使用了正确的麦克风。
更改 PulseAudio 的默认设置
运行 pulseaudio 时,可以通过将自定义配置文件放在
.pulse
HOME 的隐藏目录中来定义所有设置。如果这些文件尚不存在,您可以使用标准文件/etc/pulse/
作为模板。大多数条目在这些文件中都有详细的解释。~/.pulse/default.pa
加载模块并定义默认值~/.pulse/client.conf
为声音服务器配置客户端~/.pulse/daemon.conf
定义采样率和缓冲区为了使您的网络摄像头成为默认源,我们需要通过在终端中查看以下命令生成的列表来了解该源的名称和编号:
然后我们编辑以下行
~/.pulse/default.pa
:并替换
[name]
为所需来源的名称或来源编号。然后,我们需要通过添加以下行来确保源未静音:给出来源的名称或索引。您可以添加PulseAudio Wiki中引用的各种其他设置(现在在手册页上:)
man pulse-cli-syntax
。建议在更改配置文件之前先通过命令行界面测试所有命令。这可以
pacmd
在终端中打开我同意问题在于 Pulseaudio 没有将 USB 设备设置为默认设备,因为它在脉冲启动时不存在。
所以我对此的解决方案是连接到系统,当连接 USB 设备时会注意到...... UDEV!
顺便说一句,这些说明有点时髦,我假设您习惯在命令行上做事,并成为更新 udev 文件的 root 用户,并使脚本可执行。
首先,找出东西
USB 标识
第一步是插入您的网络摄像头并通过键入找到神奇的供应商和产品编号
我正在使用 Microsoft Lifecam,它显示为
重要的部分是045e:072d
脉冲音频设备
接下来,在连接网络摄像头时,找出 pulseaudio 设备名称。类型
再次,我正在寻找开始
name:
然后有一些关于 Microsoft Lifecam 的线路......这里是所以我的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
的新文件(我称之为 my file/etc/udev/rules.d/95-webcam-mic.rules
)。将此行放入文件中
请记住将ATTR{idVendor }和ATTR{idProduct}替换为您的网络摄像头的值。
这条规则的作用是运行一个脚本来设置 USB 设备进行输入,这就是其中的
RUN+="/usr/local/bin/webcam-mic"
一部分。最后,设置网络摄像头进行输入
快速概览时间。每次连接网络摄像头时,我都想运行命令
但是命令需要以我(运行桌面的用户)身份运行,但 udev 以 root 用户身份运行 - 所以当 udev 运行我的命令时,我需要将其更改为我的用户,然后运行命令。
所以我们有两个选择。
又快又脏。让 udev 规则运行
su james -c pacmd set-default-source...
这太错误了,我什至无法完成输入命令。如果您更换网络摄像头怎么办?如果您为其他用户安装它怎么办?稍微干净一点。运行一个脚本,该脚本读取一个默认文件,该文件包含 pulseaudio 设备名称和您的用户名。如果你想要他们在 GitHub 上的文件。首先是脚本
/usr/local/bin/webcam-mic
。根据 gist 中的注释,默认文件/etc/default/webcam-mic
只需要定义 2 个 shell 变量。将脚本放入/usr/local/bin/
并使其可执行。然后将默认文件放入/etc/defaults/
并编辑它以使用您的用户名和之前的 pulseaudio 设备。祝你好运!
Takkat 的解决方案对我不起作用,这是我的解决方案,适用于任何对此仍有疑问的人。
Takkat 的解决方案对我来说有两个问题。首先,我意识到启动后需要延迟一段时间才能切换到麦克风(我在下面的解决方案中使用了命令“睡眠”)。此外,“set-default-source”命令正在打开 USB 麦克风,但不知何故 Skype 无法识别这一点并继续使用内置麦克风。
为此,首先安装 pavucontrol 很有用。在 pavucontrol 中,打开“配置”选项卡,观察下面的命令会发生什么,以检查事情是否按预期工作。
然后,从终端输入:
从那里输入:
在输出中,找到您想要的 USB 音频的索引号(在我的例子中,这是“1”)。然后查看默认卡和 USB 卡的“配置文件”下列出的行。这些应该与 pavucontrol 中列出的相同,可以是 'ouput:input+output'、'off' 或 'input:analog-mono' 等。仍然在 pacmd 命令行中,命令
set-card-profile <index number> <profile name>
应该更改pavucontrol 中的设置。我们在这里要做的是将内部音频从双工切换为仅输出,并将 USB 切换为输入。一旦找到合适的配置文件,我们想创建一个启动命令来在启动后更改一些设置。要创建启动命令,请打开破折号并搜索“启动应用程序”,然后单击“添加”,然后在下面输入您选择的名称和适当的命令。
经过反复试验,我的启动命令最终看起来像这样:
说明:我发现命令'sleep'是必要的,这意味着命令在暂停后执行,我设置为30秒(我认为这可以更少,玩弄这个)。下一个命令(在“&&”之后)是获取默认(内部)卡配置文件以从输入+输出(双工,这是默认设置)切换到仅输出。下一个命令是关闭 USB 声卡(在我的例子中,数字是“1”)。最后一个命令是让同一张卡在“输入:模拟单声道”模式下重新打开
您可能必须尝试使用这些设置,才能找到有效的设置。
现在,当我启动时,我的 USB 麦克风在 30 秒后就可以使用了,并且 Skype 使用了正确的麦克风。
试试这个,点击顶部面板上的扬声器图标,点击首选项。在那里,您可以为麦克风选择默认输入选项,并可能更改一些硬件配置以使其正常工作。