java大华监控_JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路。

问题:大华IPC枪型摄像头需要在WEB中显示实时监控视频,官方提供的SDK只有C#的桌面程序访问方式。

解决思路:

RTSP协议访问方式将RTSP流转换成hls文件在H5的video播放器中进行播放实时视频。

一、首先将摄像头连接好网络,利用大华视频IP搜索工具搜索内网中的摄像头设备。配置好相关的IP地址账号和密码

二、进入摄像头的管理界面配置好通道,配置好RTSP的端口,默认是 554端口。

可以下载一个 RTSP的播放器进行访问测试是否可以正常播放,注意(摄像头设置的通道是多少,通道不对永远也进入不了)。

下面的链接是大华摄像头的连接方式

rtsp://{$账号}:{$密码}@{$摄像头IP地址}:{$端口}/cam/realmonitor?channel={$通道}&subtype={流方式}

主码流为0(即subtype=0),辅码流为1(即subtype=1)。

示例:  rtsp://admin:admin@192.168.0.108:554/cam/realmonitor?channel=5&subtype=0

三、使用工具播放一下实时监控

推荐工具: VLC Media Player  或者 EasyPlayer-RTSP

在工具中添加Rtsp访问地址即可开始展示

VLC播放器下载地址:http://www.videolan.org/vlc/

四、安装好nginx和nginx-rtsp插件模块

配置好相关的配置具体的安装配置步骤可以看

《http://blog.csdn.net/kunzai6/article/details/76975600》

五、JAVA调用思路

使用 JAVA的ProcessBuilder 创建一个系统进程,执行相关的转换命令.返回一个访问的URL保存一个。使用线程也可以

一个Session最终一个播放流的URl,页面关闭或者session过期则关闭掉对应的进程。操作时一定要注意释放资源,

相关资源上传到了对应的网盘:

链接: https://pan.baidu.com/s/1jJWKFtG 密码: 1bea

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大华摄像头监控视频下载的具体实现方式因不同的场景而异,这里提供一种基本的思路。 1. 引入大华 SDK 在 Java 后台中,需要引入大华 SDK,并按照文档进行初始化和配置。这里以 Java SDK 为例,具体实现方式如下: ```java // 初始化 HCNetSDK hCNetSDK = HCNetSDK.INSTANCE; boolean initSuc = hCNetSDK.NET_DVR_Init(); if (!initSuc) { // 初始化失败处理 } // 登录 HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); int lUserID = hCNetSDK.NET_DVR_Login_V30(ip, port, username, password, deviceInfo); if (lUserID < 0) { // 登录失败处理 } // 设置下载回调函数 HCNetSDK.FRealDataCallBack_V30 fRealDataCallBack = (lRealHandle, dwDataType, pBuffer, dwBufSize, pUser) -> { // 实时数据回调处理 }; int handle = hCNetSDK.NET_DVR_RealPlay_V30(lUserID, previewInfo, fRealDataCallBack, null, true); if (handle < 0) { // 实时预览失败处理 } // 下载回调函数 HCNetSDK.FDownLoadPosCallBack fDownLoadPosCallBack = (lPlayHandle, dwTotalSize, dwDownLoadSize, pUser) -> { // 下载进度回调处理 }; // 下载文件 int downloadHandle = hCNetSDK.NET_DVR_GetFileByTime_V40(lUserID, filePath, downloadInfo, fDownLoadPosCallBack, null); if (downloadHandle < 0) { // 下载失败处理 } // 关闭下载和实时预览 hCNetSDK.NET_DVR_StopGetFile(downloadHandle); hCNetSDK.NET_DVR_StopRealPlay(handle); ``` 在代码中,首先使用 HCNetSDK.INSTANCE 进行 SDK 的初始化,然后使用 NET_DVR_Login_V30 函数登录设备,获取到设备的 lUserID。接着使用 NET_DVR_RealPlay_V30 函数进行实时预览,并设置实时数据回调函数。最后使用 NET_DVR_GetFileByTime_V40 函数进行下载,并设置下载进度回调函数。 需要注意的是,下载时需要考虑网络环境和文件大小等因素,以便在下载过程中进行必要的异常处理和进度提示。另外,下载完成后需要关闭下载和实时预览,以释放资源。 2. 完整案例 以下代码是一个完整的 Java 后台对接大华摄像头监控视频下载的案例,供参考: ```java import com.sun.jna.Native; import com.sun.jna.Pointer; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Date; // 引入大华 SDK import com.dahua.netsdk.*; public class DahuaVideoDownload { public static void main(String[] args) { // 初始化 SDK HCNetSDK hCNetSDK = HCNetSDK.INSTANCE; boolean initSuc = hCNetSDK.NET_DVR_Init(); if (!initSuc) { System.out.println("SDK初始化失败!"); return; } // 登录设备 String ip = "192.168.1.64"; short port = 8000; String username = "admin"; String password = "admin123"; HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); int lUserID = hCNetSDK.NET_DVR_Login_V30(ip, port, username, password, deviceInfo); if (lUserID < 0) { System.out.println("设备登录失败!"); return; } // 设置下载回调函数 HCNetSDK.FDownLoadPosCallBack fDownLoadPosCallBack = (lPlayHandle, dwTotalSize, dwDownLoadSize, pUser) -> { // 下载进度回调处理 System.out.println("正在下载:总大小 = " + dwTotalSize + ",已下载 = " + dwDownLoadSize); }; // 设置下载参数 HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME(); HCNetSDK.NET_DVR_TIME endTime = new HCNetSDK.NET_DVR_TIME(); startTime.dwYear = 2022; startTime.dwMonth = 3; startTime.dwDay = 1; startTime.dwHour = 0; startTime.dwMinute = 0; startTime.dwSecond = 0; endTime.dwYear = 2022; endTime.dwMonth = 3; endTime.dwDay = 2; endTime.dwHour = 0; endTime.dwMinute = 0; endTime.dwSecond = 0; String filePath = "D:/download.mp4"; HCNetSDK.NET_DVR_PLAYCOND downloadInfo = new HCNetSDK.NET_DVR_PLAYCOND(); downloadInfo.struStartTime = startTime; downloadInfo.struStopTime = endTime; downloadInfo.byDrawFrame = 0; downloadInfo.byStreamType = 0; downloadInfo.dwChannel = 1; downloadInfo.dwLinkMode = 0; downloadInfo.hWnd = null; downloadInfo.byProtoType = 0; downloadInfo.byRes = new byte[3]; // 下载文件 int downloadHandle = hCNetSDK.NET_DVR_GetFileByTime_V40(lUserID, filePath, downloadInfo, fDownLoadPosCallBack, null); if (downloadHandle < 0) { System.out.println("文件下载失败!"); return; } // 等待下载完成 int downloadStatus = hCNetSDK.NET_DVR_GetDownloadPos(downloadHandle); while (downloadStatus != HCNetSDK.NET_DVR_DOWNLOAD_FINISH) { if (downloadStatus == HCNetSDK.NET_DVR_DOWNLOAD_FAILED) { System.out.println("文件下载失败!"); return; } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } downloadStatus = hCNetSDK.NET_DVR_GetDownloadPos(downloadHandle); } // 关闭下载和注销设备 hCNetSDK.NET_DVR_StopGetFile(downloadHandle); hCNetSDK.NET_DVR_Logout(lUserID); hCNetSDK.NET_DVR_Cleanup(); System.out.println("文件下载完成!"); } } ``` 在代码中,首先使用 HCNetSDK.INSTANCE 进行 SDK 的初始化,然后使用 NET_DVR_Login_V30 函数登录设备,获取到设备的 lUserID。接着设置下载进度回调函数,并设置下载参数,最后使用 NET_DVR_GetFileByTime_V40 函数进行下载。下载完成后,关闭下载和注销设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值