# hikvision-dahua-sdk-realplay
**Repository Path**: yuxiangcode/hikvision-dahua-sdk-realplay
## Basic Information
- **Project Name**: hikvision-dahua-sdk-realplay
- **Description**: 海康摄像头,大华摄像头 Linux amd64 Java8 swing awt 预览demo
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 11
- **Forks**: 4
- **Created**: 2021-08-03
- **Last Updated**: 2025-12-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 海康和大华摄像头预览demo
## 环境要求
- 操作系统 Linux amd64
- Java版本 8
- 海康sdk版本 CH-HCNetSDKV6.1.6.45_build20210302_linux64
- 大华sdk版本 General_NetSDK_ChnEng_JAVA_Linux64_IS_V3.055.0000000.0.R.210602
- 大华播放库 1435334_General_PlaySDK_Eng_Linux64_IS_V3.044.0000000.1.R.210312
## 配置动态链接库
切换到 root 用户,在 /etc/ld.so.conf.d 文件夹下创建一个配置文件 realplay.conf,
文件内容为sdk动态链接库的绝对路径,
例如程序放在 /home/yuxiang/realplay 目录,
那么配置文件内容为下面三行,第一行是大华动态链接库,第二行和第三行是海康的。
```java
/home/yuxiang/realplay/so/dh
/home/yuxiang/realplay/so/hk
/home/yuxiang/realplay/so/hk/HCNetSDKCom
```
保存配置
以 root 用户执行命令
```java
ldconfig
```
## 运行程序
### 执行脚本 dahua.sh 测试大华摄像头

### 执行脚本 haikang.sh 测试海康摄像头

## 常见问题说明
### 1.jna版本调整
从大华官网下载的sdk演示项目引用的jna版本是
```xml
net.java.dev.jna
jna
5.4.0
```
而海康官网sdk演示项目用的jna是
```xml
com.sun.jna
jna
3.0.9
```
这两个版本api变化很大,新版本的部分api在旧版本里没有。为了兼容最后选择了3.0.9版本的,把大华演示项目中引用的新版api用旧版的api代替实现了。
### 2.海康演示项目引用的examples整合
海康演示项目单独引用了一个maven仓库没有的jar叫做examples.jar,
如果做maven项目还要手动安装依赖到本地仓库,索性就直接复制了几个类到项目中了,引用的类在包
```java
xyz.minitool.sdk.hk.win32
```
### 3.res说明
```java
src/main/resources/res_xx.properties
```
是大华sdk带的,在xyz.minitool.sdk.dh.common里面的Res类引用了
## 部分坑
- 大华播放sdk中,PLAY_GetFreePort接口文档中说的是返回true表示成功,但是实际调用中即使成功也总是返回false,所以这个接口的返回值不能直接用来判断业务逻辑,把返回值忽略吧。
- 大华和海康sdk预览接口在Linux下只能使用callback方式,callback引用必须在界面类成员变量里声明,不然只能预览几秒钟。
- Linux下停止预览后Panel会停留在预览的最后一帧,如果涉及到切换显示不同摄像头预览就会出现,预览第二个摄像头的时候隔几秒显示一次前一个预览的最后一帧,超诡异,只能换种方式实现,每次创建新的Panel。