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

Giz*_*ork 14 sound webcam skype

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

Tak*_*kat 15

更改 PulseAudio 的默认设置

运行 pulseaudio 时,所有设置都可以通过将自定义配置文件放在.pulseHOME的隐藏目录中来定义。如果这些文件尚不存在,您可以使用标准文件/etc/pulse/作为模板。大多数条目在这些文件中都有详细的解释。

  • ~/.pulse/default.pa 加载模块并定义默认值
  • ~/.pulse/client.conf 为声音服务器配置客户端
  • ~/.pulse/daemon.conf 定义采样率和缓冲区

要使您的网络摄像头成为默认来源,我们需要通过在终端中查看以下命令生成的列表来了解该来源的名称和编号:

pacmd list-sources
Run Code Online (Sandbox Code Playgroud)

然后我们编辑以下行~/.pulse/default.pa

set-default-source [name]
Run Code Online (Sandbox Code Playgroud)

并替换[name]为所需来源的名称或来源编号。然后我们需要通过添加以下行来确保源被取消静音:

set-source-mute [name]|[#n]> 0
Run Code Online (Sandbox Code Playgroud)

给出来源的名称或索引。您可以添加PulseAudio Wiki(现在在手册页:man pulse-cli-syntax)中引用的各种其他设置。

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

  • @ToDo 默认设置在`/etc/pulse/default.pa` 中。在编辑之前使用此文件或将其复制到`~/.pulse`。 (3认同)

Jam*_*ell 7

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

Soo 我对此的解决方案是连接到系统,该系统在连接 USB 设备时发出通知...... UDEV!

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

首先,找出东西

USB ID

第一步是插入您的网络摄像头并通过键入找到神奇的供应商和产品编号

lsusb
Run Code Online (Sandbox Code Playgroud)

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

Bus 001 Device 013: ID 045e:072d Microsoft Corp.
Run Code Online (Sandbox Code Playgroud)

重要的部分是045e:072d

脉冲音频设备

接下来,在连接网络摄像头时,找出pulseaudio 设备名称。类型

pacmd list-sources
Run Code Online (Sandbox Code Playgroud)

再一次,我正在寻找以name:Microsoft Lifecam为开头的那一行……这里是

name: <alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono>
Run Code Online (Sandbox Code Playgroud)

所以我的pulseaudio设备名称将是 alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

UDEV规则

然后我制定了一个新的 udev 规则,当插入供应商 = 045e 和产品 = 072d 的 USB 设备时会触发该规则。要制定规则,请创建一个名为/etc/udev/rules.d/SOMETHING的新文件.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"
Run Code Online (Sandbox Code Playgroud)

别忘了将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
Run Code Online (Sandbox Code Playgroud)

但是该命令需要以我的身份运行(运行桌面的用户),但 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设备。

祝你好运!