Windows XP - 在Python中程序化静音/取消静音音频

2 投票
4 回答
4361 浏览
提问于 2025-04-15 12:44

我的电脑有两个音频输入:一个是我用来玩游戏的麦克风,另一个是我用来弹吉他的线路输入。当我使用其中一个时,另一个必须静音,这样才能消除噪音和静电。因此,我希望能写一个小脚本,来切换哪个输入是静音的(每次都去点击托盘图标,切换输入设备,静音和取消静音,实在是太麻烦了)。

我想也许可以用 pywin32 来实现这个功能,但我找到的所有资料似乎都是关于设置输出音量的,而不是输入音量,而且我对win32不太熟悉,甚至不知道该往哪里找更好的信息。

有没有人能给我指个方向?

4 个回答

1

你可能更适合使用 ctypes。如果你使用的是已经包含的API,那么 pywin32 还不错,但我觉得在处理声音相关的API时,你可能会遇到问题。结合 tgray 提供的C#示例代码,使用 ctypeswinmm.dll,或者你也可以用 SWIG 来封装 winmm.dll。这样做可能会更快,因为你不需要在 ctypes 中为像 MIXERCONTROLDETAILS 这样的类型构建C结构映射。

6

免责声明: 我并不是Windows编程方面的专家……但这是我最好的猜测。

根据pywin32常见问题解答

我该如何使用暴露的Win32函数来做xyz?

一般来说,诀窍是不要把它当作一个Python/PyWin32的问题来考虑,而是要寻找与你的问题相关的文档或示例,无论是哪个编程语言。这样通常能给你提供执行相同操作所需的信息。附带的文档会告诉你函数的参数和返回类型,这样你就能轻松确定在Python中如何正确地“拼写”这些内容。

听起来你想控制“终端设备”的音量(也就是你的声卡或线路输入)。这里有一个API参考,可以帮助你。

如果上面的内容不是你想要的,这里有一个更广泛的关于控制Windows音频设备的介绍

这里有一篇来自某人的博客文章,讲的是他如何在C#中实现你想做的事情(我知道你指定的是Python,但你可能能从代码中提取出正确的API调用)。点击这里查看。

祝你好运!如果你能写出可用的代码,我很想看看。

3

我之前也遇到过类似的问题,搞不清楚怎么用Windows的API来实现我想要的功能。最后我选择用AutoIt来自动化图形用户界面(GUI)。我觉得这个方法是最快最简单的解决方案,虽然有点“黑科技”。正如我今天早些时候提到的,你可以在Python里面使用AutoIT。

撰写回答