如何编程实现 “实时监测电脑声卡是否发声” 这一需求?
事件背景:
Windows下写了一个exe程序(目的是24小时持续运行挂机看视频),该程序内嵌了一个超文本浏览框,会打开指定URL并播放该URL里面的视频。但偶尔会出现缓冲的情况,有时候会卡在缓冲界面很久,此时需要刷新一下才可以正常播放。
待解决的需求:
在 无人值守 的情况下,程序自动判断该视频是否正常播放。如果在缓冲界面了,程序就自动刷新一下。
设想的方案:
在程序里加一个线程,实时监听着声卡,如果长达5分钟都没有声音发出,则说明视频卡住了,没有正常播放。于是开始刷新url重新加载。(该Windows系统内只运行这一个程序,其他能发声的软件全部卸载。且该视频正常播放期间一直都有声音,视频内不存在连续1分钟无人发声的情况)
最终的问题:
1、这个设想的方案是否可行?
2、(重点问这个)如果可行,如何用C# (或者易语言)来实现检测声卡是否发出了声音?
3、有没有其他方法实时监测视频是否正常播放?(如检测进度条的像素变化、某一画面区域是否长期静止等)
谢谢您的关注!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果是网络原因导致视频卡顿,不需要搞那么复杂呢。
可直接监控进程 IO 流量,若视频卡顿,流量必然不正常(偏小或为零)。这只需要一个 API 函数 GetProcessIoCounters()。
参考
GetProcessIoCounters, https://msdn.microsoft.com/en...
例子
说个题外话,推荐你学习 python,易学且功能强大。
舍近求远了
直接一点,易语言的超文本浏览框底层是使用了WebBrowser对象,可以用
超文本浏览框n.取浏览器对象()
得到IWebBrowser2对象,并进行相关的网页层面操作。具体如何操作需要看网页结构。
C#也是WebBrowser对象,但是似乎做了层封装,也可以参考以上思路。
www.autohotkey.com
换个思路,截图比较相对而言更容易实现