EasyCVR平台基于云边端一体化架构,可支持多类型设备、多协议方式接入,包括市场主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等,以及厂家私有协议如海康SDK、大华SDK、海康Ehome等。关于大华SDK的接入及配置方法,我们在前期的文章中也分享过很多,感兴趣的用户可以翻阅我们往期的文章进行了解。今天和大家分享我们在开发过程中遇到的问题及解决过程。
在EasyCVR中使用大华SDK接入设备的视频流,点击录像回看、播放录像回看视频。在关闭视频流时,有一定几率会出现崩溃现象。
于是我们针对设备录像出现的崩溃现象进行了分析和排查。
因为使用的是SDK方式接入,所以需要从大华SDK源码分析播放录像后关闭操作出现的崩溃问题。以下是打印的c++类的内存地址,如图:
在打印内存地址时,内存地址没有进行改变,所以内存地址不变。
但是在代码中却发现,将parse字段传入SDK中转换了LDWORD,所以转换的不是指针。在进行停止回看录像时,释放了parse的指针。如果录像流还有数据返回,那么进行转换并指向函数就会出现错误,导致指向的内存不存在,所以会出现崩溃现象。如下是转换的数据回调:
解决方法:
大华SDK回调的内存地址已经销毁,但是在回调时还是可以转换成功。只需要每次将parse的地址存到一个全局变量中。需要用的时候去取,销毁的时候执行删除即可。
全局变量:
向全局添加属性:
销毁全局变量:
EasyCVR平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,可实现的视频功能包括:视频实时直播、云端录像、云存储、回放与检索、智能告警、视频快照、视频转码与分发、平台级联等。感兴趣的用户可以前往演示平台进行体验或部署测试。
标签:视频,EasyCVR,录像,大华,内存地址,SDK 来源: https://www.cnblogs.com/easycvr/p/16525034.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。