我的音频输入怎么能一直是网络摄像头麦克风呢?

我的音频输入怎么能一直是网络摄像头麦克风呢?

每次我想使用 Skype 时,我都必须进入声音偏好设置。然后,将音频输入设置为“摄像头“并取消选中”沉默的“按钮。这很烦人。有没有办法始终保持相同的配置?

答案1

更改 PulseAudio 的默认设置

运行 pulseaudio 时,可以通过将自定义配置文件放入 HOME 中的隐藏目录中来定义所有设置.pulse。如果这些文件尚不存在,您可以使用标准文件作为/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 维基(现在在手册页上man pulse-cli-syntax:)。

建议在更改配置文件之前先通过命令行界面测试所有命令。可以使用以下命令打开 pacmd 在终端

答案2

我同意问题在于 Pulseaudio 没有将 USB 设备设置为默认设备,因为脉冲启动时它不存在。

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

顺便说一句,这些说明有点奇怪,我假设您可以轻松地在命令行上执行操作,并成为 root 用户来更新 udev 文件并使脚本可执行。

首先,找出一些东西

USB 标识

第一步是插入你的网络摄像头,然后输入以下代码找到神奇的供应商和产品编号

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/某物.rules(我将我的档案命名为/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{供应商编号}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 以 root 用户身份运行 - 因此当 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 设备。

祝你好运!

答案3

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 切换到输入。

找到合适的配置文件后,我们要创建一个启动命令,以便在启动后立即更改一些设置。要创建启动命令,请打开 Dash 并搜索“启动应用程序”,然后单击“添加”,然后在下面输入您选择的名称和适当的命令。

经过反复试验,我的启动命令最终看起来像这样:

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

答案4

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

相关内容