海康sdk项目(java)部署Linux环境相关问题总结

码云(Gitee)地址:https://gitee.com/banmajio/HCSDKtoRTMP
github地址:https://github.com/banmajio/HCSDKtoRTMP
个人博客:banmajio’s blog

海康sdk二次开发系列文章
海康sdk捕获码流数据通过JavaCV推成rtmp流的实现思路(PS流转封装RTMP)
海康sdk进行历史回放时,码流数据回调过快问题的解决方法
海康sdk项目(java)部署Linux环境相关问题总结
海康sdk部署Linux环境下无法播放子码流的问题
海康sdk项目部署Linux系统时出现java.lang.UnstisfiedLinkError:jnidispatch(xxx)not found in resource path错误

问题描述

海康sdk二次开发的java项目部署到Linux中会出现各种各样的问题。主要集中在以下几点:
1.sdk32位和64位版本的问题。
2.sdk库文件的加载路径问题。
3.HCNetSDK.java继承类的问题。

解决方法

1.替换海康HCNetSDK.java文件

将window版本的HCNetSDK.java文件替换为官网下载的Linux版本sdk的demo中的HCNetSDK.java。

2.更换库文件

将linux版sdk中的所有库文件放到Linux服务器下的一个路径,注意HCNetSDKCom文件夹和其他库路径保存在同一路径下。并且对应好服务器版本与sdk版本。64位的服务器匹配63位的sdk,32位的服务器匹配32位的sdk。
在这里插入图片描述

3.加载sdk库路径的解决方法:

加载sdk库路径使用绝对路径,相对路径几乎必出问题。
将以下代码进行替换
替换前:

HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("hcsdk\\HCNetSDK", HCNetSDK.class);

替换后:

HCNetSDK INSTANCE = (此处添加sdk库文件夹的绝对路径) + "/libhcnetsdk.so", HCNetSDK.class);

经过上述替换库路径后,可能会出现错误,返回错误码为107(预览组件加载失败),sdk的组件库是在HCNetSDKCom文件夹内。出现这种错误,根据文档描述需要手动调用接口加载组件库
在上述代码下面添加一下代码

	// linux环境下改为: HCNetSDK extends Library
	// windows环境下改为:HCNetSDK extends StdCallLibrary
	// windows环境下加载dll动态库文件
//	HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("hcsdk\\HCNetSDK", HCNetSDK.class);

	// linux环境下加载so动态库
	HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("home/cameraserver"+ "/libhcnetsdk.so", HCNetSDK.class);

	// linux环境下加载组件
	public static void tryLoad() {
		String strPathCom = home/cameraserver;
		HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH();
		System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length());
		struComPath.write();
		HCNetSDK.INSTANCE.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer());

	}

tryLoad()方法请在HCNetSDK.INSTANCE.NET_DVR_Init();之前执行,否则会返回107错误码

4.修改HCNetSDK.java的继承类

修改前:

	public interface HCNetSDK extends StdCallLibrary 

修改后:

	public interface HCNetSDK extends Library 
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

banmajio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值