Как отключить микрофон с помощью Python

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
2 307
2

Ответы 2

Беглый взгляд на документация 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, это фактически переключает микрофон

muteunmute | unmutemute

Вот список других полезных параметров, которые можно использовать с 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 с надписью переключать микрофон, но, похоже, ничего не делает, несмотря на название.

Countour-Integral 23.01.2021 16:04

Другие вопросы по теме