事件背景:
Windows下写了一个exe程序(目的是24小时持续运行挂机看视频),该程序内嵌了一个超文本浏览框,会打开指定URL并播放该URL里面的视频。但偶尔会出现缓冲的情况,有时候会卡在缓冲界面很久,此时需要刷新一下才可以正常播放。
待解决的需求:
在 无人值守 的情况下,程序自动判断该视频是否正常播放。如果在缓冲界面了,程序就自动刷新一下。
设想的方案:
在程序里加一个线程,实时监听着声卡,如果长达5分钟都没有声音发出,则说明视频卡住了,没有正常播放。于是开始刷新url重新加载。(该Windows系统内只运行这一个程序,其他能发声的软件全部卸载。且该视频正常播放期间一直都有声音,视频内不存在连续1分钟无人发声的情况)
最终的问题:
1、这个设想的方案是否可行?
2、(重点问这个)如果可行,如何用C# (或者易语言)来实现检测声卡是否发出了声音?
3、有没有其他方法实时监测视频是否正常播放?(如检测进度条的像素变化、某一画面区域是否长期静止等)
谢谢您的关注!
如果是网络原因导致视频卡顿,不需要搞那么复杂呢。
可直接监控进程 IO 流量,若视频卡顿,流量必然不正常(偏小或为零)。这只需要一个 API 函数 GetProcessIoCounters()。
参考
GetProcessIoCounters, https://msdn.microsoft.com/en...
例子
说个题外话,推荐你学习 python,易学且功能强大。