大华摄像头实现远程访问

        对大华摄像头进行二次开发,可摄像头画面显示到远程设备上面,可以在网页端直接打开,可以实现基本的摄像功能,如预览、定时/远程抓图,录像等,其中关键部分是如何在外网可以访问摄像头。

       众所周知,当电脑与摄像头在同一网段下,可以通过浏览器访问摄像头ip的方式实现对摄像头的访问,但若想实现远程访问,通常需要借用官方提供的app来进行访问,在某些特定的情况下,存在一定的障碍。而若想通过技术手段来实现,又往往比较复杂,涉及内网穿透等技术的应用,因此,可以考虑以下方式来实现。

       实现的核心是一个固定ip魔盒,他的工作原理是将通过其自带的公网ip所分配的TCP端口,代理我们的内网ip,访问时是网络访问IPBOX(ip魔盒)的公网地址:端口,进行访问。

本文以易特天下的IP魔盒为例,选择套餐为5M3年版。

具体接线为:现场端:两个摄像头正常接线,连接到现场端路由器。IPBOX与路由器网线连接,IPBOX通电。

然后在现场对IPBOX进行配置:

(1)到路由器上看看一个新入网的、名字为 Net-Suip 的设备获取了什么ip,浏览器用 http://获取的ip:18  来打开。

默认的用户名为 root 。

默认密码是您在电商平台订单中收货人的虚拟号码(不带分机号,具体请查看您的订单),也可能是 root 。

(2)配置端口转发

        端口转发是将您ip小魔盒的固定ip中拥有的端口,转发给内网的服务器的端口上。实现内网服务器对外提供服务。请您务必正确配置端口转发,才能使用ip小魔盒。左侧菜单:【网络】-【防火墙】的 Port Forwards 标签页。

        ▲ 上图中有出厂默认写好的四条示例的转发规则。您可以修改这些规则来实现您的应用。示例里的端口号并不是您小魔盒拥有的,请按照您小魔盒外壳标签上写的端口来修改。当然,您也可以点【添加】来新增规则实现您的转发应用。

        以远程访问群晖NAS存储设备的web界面端口5000为例:如果远端使用ip小魔盒的固定ip去访问它,要先将小魔盒拥有的一个端口转发给群晖NAS的5000端口上。比如ip小魔盒拥有端口【10001】。那么我们可以点第二条规则的行尾的【编辑】按钮修改一下来实现:

        ▲ 点击【保存】按钮,回到上一个界面后,务必再点击右下角的【保存并应用】按钮使其生效!

   这样外部访问群晖就是用  http://ip小魔盒的公网ip:10001  。实际访问到的是群晖 web 5000端口的界面。如  http://103.103.245.125:10001 .

注意:内网端口具体是什么要查询摄像头HTTP端口,如下图所示。

远程访问

(1)浏览器访问:直接访问  http://ip小魔盒的公网ip:10001 (10001为ip魔盒分配的端口)

(2)软件:借用大华官网公布的SDK案例,可以实现登陆,进行二次开发,但需注意的是,其ip地址应填魔盒的公网IP,端口应为魔盒分配的端口,如图所示。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大华摄像头SDK提供了Java版的API接口,可以通过Java编程语言来实现常用的功能。以下是一些常用的Java功能实现: 1. 初始化SDK ```java HCNetSDK hCNetSDK = HCNetSDK.INSTANCE; boolean initSuc = hCNetSDK.NET_DVR_Init(); if (initSuc != true) { System.out.println("SDK初始化失败"); return; } ``` 2. 登录设备 ```java HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); int userID = hCNetSDK.NET_DVR_Login_V30(deviceIP, devicePort, username, password, deviceInfo); if (userID < 0) { System.out.println("登录设备失败"); return; } ``` 3. 实时预览 ```java HCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new HCNetSDK.NET_DVR_PREVIEWINFO(); previewInfo.lChannel = channelNo; previewInfo.dwStreamType = 0; // 0-主码流,1-子码流 previewInfo.dwLinkMode = 0x0000; // 0- TCP方式,0x0001 - UDP方式, previewInfo.hPlayWnd = new NativeLong(0); // 默认为0 previewInfo.bBlocked = true; // 阻塞取流开关:0-非阻塞,1-阻塞 previewInfo.byProtoType = 0; // 应用层取流协议:0-私有协议,1-RTSP协议,2-用户自定义协议 previewInfo.byPreviewMode = 0; // 预览模式:0-正常预览,1-延迟预览 previewInfo.byStreamID[0] = 0; NativeLong playHandle = hCNetSDK.NET_DVR_RealPlay_V40(userID, previewInfo, null); if (playHandle.longValue() == -1) { System.out.println("实时预览失败"); return; } ``` 4. 抓图 ```java HCNetSDK.NET_DVR_JPEGPARA jpegPara = new HCNetSDK.NET_DVR_JPEGPARA(); jpegPara.wPicSize = 0xff; // 图片尺寸:0xff-原始尺寸 jpegPara.wPicQuality = 0; // 图片质量:0-最好,1-较好,2-一般 String filePath = "D:\\capture.jpg"; // 保存路径 boolean captureSuc = hCNetSDK.NET_DVR_CaptureJPEGPicture(playHandle, channelNo, jpegPara, filePath); if (captureSuc != true) { System.out.println("抓图失败"); return; } ``` 5. 录像 ```java HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME(); HCNetSDK.NET_DVR_TIME endTime = new HCNetSDK.NET_DVR_TIME(); startTime.dwYear = 2021; startTime.dwMonth = 7; startTime.dwDay = 1; startTime.dwHour = 0; startTime.dwMinute = 0; startTime.dwSecond = 0; endTime.dwYear = 2021; endTime.dwMonth = 7; endTime.dwDay = 1; endTime.dwHour = 1; endTime.dwMinute = 0; endTime.dwSecond = 0; String filePath = "D:\\record.mp4"; // 保存路径 boolean recordSuc = hCNetSDK.NET_DVR_SaveRealData_V40(playHandle, filePath, HCNetSDK.NET_DVR_TRANSPARENT, 0); if (recordSuc != true) { System.out.println("录像失败"); return; } ``` 以上是一些常用的Java功能实现,仅供参考。具体的实现方式还需要根据实际需求来确定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值