Мне нужно отключить / включить микрофон в Windows 8 с помощью python2.7. Я нахожу Pyaudio и пимедиа для взаимодействия со звуковыми устройствами, но не могу найти конкретных методов / реализаций.





Беглый взгляд на документация pymedia подтверждает, что найти этот метод сложно. Pymedia, похоже, плохо документирована. Я предлагаю, ничего не зная о библиотеке, взглянуть на
Mixer(<Microphone Device ID>).getControls()
Это предположительно возвращает словарь с возможными элементами управления, доступными устройству. Однако затем вам нужно выяснить, какой из них вам нужен. Документация подразумевает, что должны существовать записи «Громкость» и «Линия входа», оба из которых кажутся правдоподобно полезными.
Затем, я полагаю, вам нужно изучить объект «элементы управления» в этом словаре и посмотреть, что вам доступно, возможно, используя отражение, потому что документации так не хватает.
Окончательный код может выглядеть примерно так:
Mixer(<Microphone Device ID>).getControls()["Line In"].control.off()
(off() - это не настоящий метод, но нечто подобное может существовать)
Надеюсь это поможет.
Обновлено: ИМО, это не дубликат Как включать и выключать микрофон с помощью Python. Этот вопрос на самом деле ни на что не отвечает, а вместо этого просто перечисляет библиотеки, упомянутые в вопросе. Я чувствую, что этот вопрос заслуживает реального кода от кого-то, кто более осведомлен о данной библиотеке.
Этого легко добиться с помощью PyWin32:
import win32api
import win32gui
WM_APPCOMMAND = 0x319
APPCOMMAND_MICROPHONE_VOLUME_MUTE = 0x180000
hwnd_active = win32gui.GetForegroundWindow()
win32api.SendMessage(hwnd_active, WM_APPCOMMAND, None, APPCOMMAND_MICROPHONE_VOLUME_MUTE)
В отличие от названия APPCOMMAND_MICROPHONE_VOLUME_MUTE, это фактически переключает микрофон
mute → unmute | unmute → mute
Вот список других полезных параметров, которые можно использовать с WM_APPCOMMAND: Сообщение WM_APPCOMMAND (Winuser.h) - приложения Win32 | Документы Microsoft
В указанной ссылке
APPCOMMAND_MICROPHONE_VOLUME_MUTEимеет ключевой код (или как он там называется)24(десятичный).0x180000генерируется с помощью(0xFFFF + 1) * 24. Таким образом, для всех кодов клавиш вы должны сделать(0xFFFF + 1) * keycode, чтобы получить этот номер. Почему-то разработчикиwin32считают, что немой означает переключать. Это также происходит сAPPCOMMAND_VOLUME_MUTE, который переключает звук вместо отключения звука. СуществуетAPPCOMMAND_MIC_ON_OFF_TOGGLEс надписью переключать микрофон, но, похоже, ничего не делает, несмотря на название.