如何用Python检测Linux系统音视频播放状态(附Windows实现方案)
检测系统是否正在播放音视频(Python实现)
Linux系统实现方案
Linux下可通过查询PulseAudio的音频会话状态判断是否有正在播放的音视频,核心是调用pacmd命令解析输出:
import subprocess import re def is_audio_playing_linux(): try: # 调用pacmd获取所有音频输入会话状态 result = subprocess.run( ["pacmd", "list-sink-inputs"], capture_output=True, text=True, check=True ) # 匹配处于RUNNING状态的会话 running_pattern = re.compile(r'state: RUNNING') return running_pattern.search(result.stdout) is not None except subprocess.CalledProcessError: # 处理命令执行失败(如未安装PulseAudio)的情况 return False
函数返回True代表存在正在播放的音频会话,反之返回False。
Windows系统实现方案
Windows下可借助pycaw库访问系统音频会话,检测活跃播放状态:
- 先安装依赖库
pip install pycaw
- 编写检测代码
from pycaw.pycaw import AudioUtilities, ISimpleAudioVolume def is_audio_playing_windows(): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) # 排除静音会话,检查活跃播放状态 if session.Process and not volume.GetMute(): session_state = session.GetState() if session_state == 1: # 1对应AudioSessionStateActive(活跃播放) return True return False
函数遍历所有音频会话,返回True代表存在非静音的活跃播放会话。
内容的提问来源于stack exchange,提问作者code by Abhishek Bharti
相关产品推荐
相关产品推荐

