Python Linux下加载海康威视SDK .SO文件107问题解决方案

引用

python调用海康威视SDK二次开发-1
戳这里获得demo源码

首先介绍下如何最有效的定位问题

Python调用海康威视.so sdk有诸多不便,且接口只返回错误成功,错误信息需要通过“NET_DVR_GetLastError”接口二次调用。
海康威视NET_DVR对应错误码

Linux 下 107错误码处理

107错误码出现的场景主要在预览组件相关,NET_DVR_RealPlay_V40,NET_DVR_CaptureJPEGPicture等都会出现。

这里只说最稳定的解决方案:

以下为Linux下海康SDK解压后的文件目录,我们将MakeAll下的所有文件copy到服务器自定义目录即可,我在demo中将MakeAll下的所有文件copy到了名为lib目录下,记住MakeAll(lib)和其下的HCNetSDKCom目录,之后改环境变量用到的就是这两个Path


image.png
  1. 将SDK动态库路径加入到LD_LIBRARY_PATH环境变量
# 修改系统预加载项,增加一行export
vim ~/.bashrc
export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:{pyhikvsion/hkws/lib/在Linux中的绝对路径}:{pyhikvsion/hkws/lib/HCNetSDKCom/在Linux中的绝对路径}
source ~/.bashrc

vim /etc/profile
export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:{pyhikvsion/hkws/lib/在Linux中的绝对路径}:{pyhikvsion/hkws/lib/HCNetSDKCom/在Linux中的绝对路径}
source /etc/profile
  1. 在/etc/ld.so/conf下增加sdk路径
//查看配置信息
cat /etc/ld.so.conf
//如果有以下Include,建议在ld.so.conf.d下新建文件设置,这样隔离比较干净
include ld.so.conf.d/*.conf
//切换到指定目录
cd /etc/ld.so.conf.d

vim hikvsdk.conf
#加入以下2个路径
{pyhikvsion/hkws/lib/HCNetSDKCom/在Linux中的绝对路径}
{pyhikvsion/hkws/lib/在Linux中的绝对路径}

//保存完后执行以下命令重新加载系统.so配置
ldconfig

注意:

{pyhikvsion/hkws/lib/HCNetSDKCom/在Linux中的绝对路径}
{pyhikvsion/hkws/lib/在Linux中的绝对路径}
相对应的系统路径需要加最后需要加"/",因为该库Python的加载逻辑中没有拼接"/"
如:

/opt/hkws/lib/
/opt/hkws/lib/HCNetSDKCom/

你可能感兴趣的:(Python Linux下加载海康威视SDK .SO文件107问题解决方案)