Windows下如何用Python实时检测特定程序是否正在播放音频?
实时检测Windows程序是否正在播放音频,实现Spotify自动启停控制
我正在开发一个管理Windows本地Spotify音乐状态的程序,核心需求如下:
- 当电脑一段时间无音频播放时,自动播放Spotify
- 当其他程序(比如播放YouTube视频的Google Chrome)发声时,自动暂停Spotify
目前的难题是无法实时检测特定程序是否正在播放音频。我用Python3开发,也可以接受其他语言的现有库。
我试过pycaw库,但它只能获取进程过去是否播放过音频的信息,满足不了实时检测的需求。
以下是我目前最接近需求的代码实现:
import psutil from pycaw.pycaw import AudioUtilities, ISimpleAudioVolume excluded_process_name = "Spotify.exe" # 要排除的进程名称 def is_sound_playing(): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session.Process and session.Process.name() != excluded_process_name: print(session.Process.name()) if volume.GetMasterVolume() > 0 and psutil.pid_exists(session.Process.pid) and psutil.Process(session.Process.pid).cpu_percent() > 0: print(volume.GetMasterVolume()) return True
这个代码在启动YouTube视频时能正常触发,但停止视频后,volume.GetMasterVolume()会保持1.0长达3-5分钟,直到重新播放视频才会变回0,没法实时反映音频停止的状态。
希望能得到解决思路或可行的方案,谢谢!
内容的提问来源于stack exchange,提问作者Mr.Sosa
相关产品推荐
相关产品推荐

