You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:20:59