怎么知道 Windows 电脑当前是否有声音输出?

2020-06-06 17:40:58 +08:00
 JCZ2MkKb5S8ZX9pq


1450 次点击
所在节点    Windows
6 条回复
JCZ2MkKb5S8ZX9pq
2020-06-06 18:21:42 +08:00
试着停止画面输出半个多小时(断开此显示器的连接),温度完全没降,看来是功放本身比较老,没有类似休眠的设定。后一个思路不行了,还是要通过 HA 红外关功放好了。
JCZ2MkKb5S8ZX9pq
2020-06-07 02:01:13 +08:00
搜到一个关联的问题 [perl - How to detect if any sound plays on a windows xp machine - Stack Overflow]( https://stackoverflow.com/questions/3983463/how-to-detect-if-any-sound-plays-on-a-windows-xp-machine)

但是这里的大哥用的是 Delphi,VB 的我也不知道咋弄。

思路应该是这个 [IDirectSoundBuffer8::GetStatus Method | Microsoft Docs]( https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee418070(v=vs.85)?redirectedfrom=MSDN)

请问用 python 或者命令行怎么读取这个 `DSBSTATUS_PLAYING`?
JCZ2MkKb5S8ZX9pq
2020-06-07 02:02:48 +08:00
还有这个大哥写的,也不知道怎么用这个代码。

[.net - Determine if windows is currently playing sound - Stack Overflow]( https://stackoverflow.com/questions/45422255/determine-if-windows-is-currently-playing-sound)
JCZ2MkKb5S8ZX9pq
2020-06-07 02:52:12 +08:00
失败,DSBSTATUS_PLAYING 不行。

import win32com.directsound.directsound as ds

print(f'{ds.DSBSTATUS_BUFFERLOST = }')
print(f'{ds.DSBSTATUS_LOOPING = }')
print(f'{ds.DSBSTATUS_PLAYING = }')

ds.DSBSTATUS_BUFFERLOST = 2
ds.DSBSTATUS_LOOPING = 4
ds.DSBSTATUS_PLAYING = 1

一直是这三个值,可能就是某种常量,不是当前状态。
ysc3839
2020-06-09 00:01:49 +08:00
https://www.v2ex.com/t/679678
本来想建议你不应该开一个新帖子,可以使用 Append 功能,但是发现这个帖子没人回复。
估计是发到了比较冷门的区,似乎也没在主页上出现,不知道是不是 V2EX 的 bug ?还是有一定规则决定是否显示的?
JCZ2MkKb5S8ZX9pq
2020-06-23 14:27:30 +08:00
@ysc3839 追加请教一个问题。

我用 potplayer 看电影的时候,有些音源,比如 DTS/AC3 是 passthough 直出的,也就是从 windows 的音量合成器里是看不到波形的,而功放也是直接接收到的数据 DTS/AC3 类型。

所以在这个情况下,要摸索出如何判断 windows 是否有发声,可能比较困难。我连肉眼查看都不知道在哪儿查看。

换一个思路,有什么办法能获取到 potplayer 当前的播放 /停止状态吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/679222

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX