其他分享
首页 > 其他分享> > EasyCVR通过大华SDK接入设备,录像播放关闭时偶尔出现崩溃是什么原因?

EasyCVR通过大华SDK接入设备,录像播放关闭时偶尔出现崩溃是什么原因?

作者:互联网

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