我有一个 USB 麦克风,我一直将其插入笔记本电脑基座。当我将其插入基座时,我希望麦克风自动设置为当前音频输入。我确实有一个运行的“我已插入基座”脚本,用于设置 xrandr/etc 项目,我只需要一些方法执行以下操作:
gnome-volume-control,输入选项卡,选择麦克风
而是从 cmd 行/脚本。
关于如何自动化/编写脚本有什么提示吗?
答案1
如果您正在使用 ALSA,amixer 可以帮助您进行脚本编程。
amixer --help
当在终端中输入该命令时,你会看到如下内容:
根据您的声卡,级别可能与我的不同,但您可以alsamixer
在终端中使用以检查声卡中的哪些级别和哪些功能可以调用命令来根据需要设置音量。
在我的示例中,使用我的主要声卡(我有 2 个:嵌入式和 PCI 音频卡),级别从 0 到 100,这样我就可以通过在终端中输入下一个命令来更改声卡中所需输入/输出的音量:
amixer -c 0 set Front 50DB
amixer -c 0 set Front 64DB
在第一个命令中,结果将把前面板输出设置为 78% 级别,而第二个命令将把前面板输出设置为 100% 级别。
为了收集与混频器控件相关的信息,请删除amixer
不带参数的命令,您将获得一个列表。或者指出您希望查看哪个音频设备的控件列表amixer -c X
(其中“X”是您的音频设备的编号)。
顺便说一句:请记住 DB 值是以对数方式计算的,而不是以线性方式计算的。
答案2
通过查看文档我找到了更好的答案(可能是最近对 pacmd 的补充......)
用来pacmd list-sources
查看不同的输入设备,带有 的设备* index: ...
为活动的输入设备。
然后您可以使用pacmd set-source-volume <index> <volume>
来设置音量,在我的情况下,使用50%
参数失败,所以我只是尝试了不同的数字,直到它在 UI 中显示为 50%。
对我来说pacmd set-source-volume 1 30000
这是有效的
干杯!
答案3
pacmd set-default-source
如果您使用 pulseaudio 则可能会有效,例如:
pacmd set-default-source alsa_input.usb-046d_0819_9F13DC90-02-U0x46d0x819.analog-mono
使用以下命令查找源名称:pacmd list-sources
。
答案4
关于#4,我编写了一个程序来查找索引,然后将级别设置为250000:
#include <bits/stdc++.h>
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
void exec(string str) {
const char *command = str.c_str();
system(command);
}
int main() {
exec("pacmd list-sources | grep \"*\" > tmp");
fstream file ("tmp");
string output;
if (file.is_open() && !file.eof()) {
getline(file, output, '\n');
}
file.close();
char id;
id = output.back();
exec("rm tmp");
string command = (string) "pacmd set-source-volume " + id + " 250000";
exec(command);
return 0;
}