如何获取Windows 10中Spotify、Discord的实时输出音量?
解决Spotify与Discord实时音量平衡的问题
嘿,你遇到的这个问题我之前折腾过!volume.GetMasterVolume()拿到的其实是你给Discord设置的主音量比例(比如你在系统音量 mixer 里拉到50%,它就返回0.5),而不是当前Discord正在输出的实时音频音量。要获取实时输出的音量,你需要用到IAudioMeterInformation接口,它专门用来读取音频会话的实时峰值音量。
修改后的代码示例
我给你调整下代码,你可以直接用:
from __future__ import print_function from pycaw.pycaw import AudioUtilities, ISimpleAudioVolume, IAudioMeterInformation def main(): sessions = AudioUtilities.GetAllSessions() for session in sessions: # 跳过没有关联进程的会话(比如系统声音) if not session.Process: continue # 获取实时音量计量器 try: meter = session._ctl.QueryInterface(IAudioMeterInformation) peak_volume = meter.GetPeakValue() except Exception as e: # 有些会话可能不支持计量器,直接跳过 continue if session.Process.name() == "Discord.exe": print(f"Discord实时峰值音量: {peak_volume:.2f}") elif session.Process.name() == "Spotify.exe": print(f"Spotify实时峰值音量: {peak_volume:.2f}") if __name__ == "__main__": main()
关键点说明
IAudioMeterInformation.GetPeakValue()会返回0.0到1.0之间的浮点值,代表当前音频会话输出的峰值音量(比如Discord有人说话时会跳到0.1以上,安静时接近0.0)。- 你可以基于这个值做逻辑判断:比如每隔几百毫秒检测一次Discord的峰值,当峰值持续超过某个阈值(比如0.05),就调小Spotify的主音量;当峰值长时间低于阈值,就把Spotify音量调回正常水平。
- 注意要加异常处理,因为不是所有音频会话都支持计量器接口,跳过这些会话避免程序崩溃。
内容的提问来源于stack exchange,提问作者Penguronik
相关产品推荐
相关产品推荐

