ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

大华摄像机视频正常云台控制半分钟后失效排查记录

2021-02-19 11:51:06  阅读:260  来源: 互联网

标签:云台 流媒体 函数 时间 半分钟 大华 SDK


场景

       现场后台流媒体服务器通过大华SDK取流和控制云台,视频流正常,云台控制在流媒体启动半分钟之内操作正常,半分钟之后控制失败。

排查过程

1)怀疑是大华SDK版本跟现场设备不匹配

进入这个误区是之前,遇到云台无法控制的情况,通过更新官网最新的SDK,解决问题,并且只是重新链接了新的LIB文件,并没有替换掉现场的动态库DLL文件,解决问题。与此不同的是之前是根本无法控制云台。

2)添加SDK云台控制API的调用情况,查看错误码,没有相关的错误信息,并且发现在半分钟之后,无法收到任何的控制指令。排查是否是大华SDK调用阻塞导致的问题,能够正常返回,说明也不是阻塞的问题

3)排查流媒体内部程序,云台控制指令的流向。流媒体的设计思路是启动一个线程等待客户端发送指令,其中调用C11的std::this_thread::sleep_for函数进行一段时间的休眠,发现半分钟之后休眠函数进入了阻塞模式,无法进行循环,采用Windows的原生态函数Sleep没有这个问题。这个时候考虑到是否是操作系统的版本问题,这个是2016版本的Windows Server DataCenter。怀疑是在该系统上执行该函数,兼容性有问题。在公司的虚拟机中安装测试,没有任何的问题,无法重现。

4)幸好,可以远程,通过观察服务器的时间,发现服务器的时间存在跳变的问题。设置中启动了自动设置时间,但是没有设置NTP同步时间服务器。每半分钟会进行跳变,回到过去的某一个时间点,没有什么规律。

5)最终通过取消自动设置时间解决问题

总结

1)不管是boost还是C11的休眠函数都存在相对睡眠时间的问题,针对的是系统的当前时间,Sleep就没有这个问题,Sleep函数不会根据系统的时间,猜测是根据程序的启动时间开始算

2)能够正常控制半分钟说明SDK没有兼容性问题。因为流媒体需要授权的缘故,其实部署一套在其他的电脑上,就可以过滤掉这个兼容性问题

标签:云台,流媒体,函数,时间,半分钟,大华,SDK
来源: https://blog.51cto.com/fengyuzaitu/2631753

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有