海康威视(老版本)录像机+(新版本)摄像头 不兼容的解决方案

在这里插入图片描述

一、适用场景

1、海康威视的硬盘录像机使用多年,增加新版本的摄像头,原投资沿用;
2、监控网络第一期工程与第二期工程相隔的时间长,摄像头更新换代快;
3、企业或单位自己动手建监控网络;
4、上级主管部门要求的安全级别更高。

二、配置过程

海康威视SADP3.1.2.2摄像头搜索批量配置工具下载地址:
链接:https://pan.baidu.com/s/1PIAu3POP9zykavkL-ETcaA?pwd=sqsc
提取码:sqsc

(一)修改配置前

1、安装好搜索工具后,确保搜索的PC网络与摄像头在同一个局域网中(不可跨三层网络搜索),使用扫描搜索激活摄像头DS-2CD3T46WDV3-I3,搜索到一个新的摄像头,未激活,如下图:
在这里插入图片描述

2、激活摄像头DS-2CD3T46WDV3-I3,勾选摄像头后,给摄像头定义一个管理密码,点激活,如下图:
在这里插入图片描述

3、激活后,摄像头的ip地址默认为192.168.1.64,与本例中的网段(172.16.10.0/20)不对应,所以需要修改摄像头的ip地址,此时会弹出安全设置问题,说明该摄像头的安全级别有提升,如下图:
在这里插入图片描述

4、修改摄像头的ip地址与网关,并输入刚才定义的管理密码,如下图:
在这里插入图片描述

5、激活后,查看定义的ip地址是否生效
(1)在SDAP摄像头搜索中查看,显示ip地址是修改过后的,如下图:
在这里插入图片描述

(2)在局域网的PC上ping 172.16.12.156 –t 有数据包回复,如下图:

在这里插入图片描述

6、打开浏览器,输入摄像头的ip地址,登录摄像头DS-2CD3T46WDV3-I3,注意打开浏览器时,本例是使用的win10中的microsoft Edge,打开摄像头的WEB界面后,在右上方点在Internet Explorer模式重新加载选项卡,如下图:
在这里插入图片描述

7、在左上方弹出在internet explrer模式下打开此页面,在兼容性视图中打开此页面,把滑块点向右边,完成,(否则某些版本的摄像头画面无法在浏览器模式下预览)如下图:

在这里插入图片描述

8、在下方出现的对话框点允许 ,如下图:

在这里插入图片描述

9、输入用户名admin和第2步中定义的密码后,可以看到画面,如下图:
在这里插入图片描述

10、给摄像头命名,点配置——》图像——》OSD设置——》通道名称,输入摄像头名称后,保存,如下图:
在这里插入图片描述

11、提示保存成功后,登录海康威视DS-8632N-E8录像机,添加摄像头DS-2CD3T46WDV3-I3
(1)输入录像机的ip地址,打开登录界面,输入用户名和密码,如下图:
在这里插入图片描述

(2)登录成功后,点配置——》系统——》通道管理——》添加,如下图:
在这里插入图片描述

(3)添加时,输入新摄像头的ip地址,用户名、密码,如下图:
在这里插入图片描述

(4)输入完成后,显示正在连接,如下图:

在这里插入图片描述

(5)点到别的地方后,刷新一下,再来查看,显示不在线(参数错误),如下图:
在这里插入图片描述

12、在ivms-4200的管理平台中添加该摄像头
(1)登录ivms-4200
在这里插入图片描述

(2)登录后,点设备管理,NVR13,编码通道,可以看到以前添加好的摄像头,再点导入,如下图:
在这里插入图片描述

(3)导入时为节省查找刚添加的摄像头时间,从下拉列表中选择NVR13,如下图:

在这里插入图片描述

(4)选中第4步中,我们添加的通道,再点导入选择,如下图:
在这里插入图片描述

(5)导入成功后,会在NVR13的最下方显示最新添加的摄像头,如下图:

在这里插入图片描述

(6)回到编码通道上更新监控点名称,如下图:
在这里插入图片描述

(7)在ivms-4200中查看,ivms-4200中显示不出来画面:
在这里插入图片描述

13、到目前为止,录像机中添加摄像头后效果如下:
(1)直接通过浏览器打开摄像头ip地址,预览正常,如第9步图。
(2)在录像机的浏览器通道管理中显示“参数错误,不在线”,如第4步(5)图。
(3)在ivms-4200上无法显示摄像头画面,如第12步(7)图。

(二)修改配置

批量工具(支持修改可逆密码保护)下载地址:
链接:https://pan.baidu.com/s/1PIAu3POP9zykavkL-ETcaA?pwd=sqsc
提取码:sqsc
1、下载并安装批量配置工具(支持修改可逆密码保护),安装过程不赘述。
2、打开批量配置工具,从下方搜索到的已激活的列表中,找到新添加的摄像头,勾选摄像头,在上方点添加,如下图:
在这里插入图片描述

3、在弹出的右侧框中输入摄像头的ip地址,用户名和密码,如下图:
在这里插入图片描述

4、添加完成后,可以在上方的列表看到刚添加的摄像头,再勾选中上方列表中新添加的摄像头,点系统配置,密码保护,关,如下图:

在这里插入图片描述

5、关闭密码保护后,提示配置成功,如下图:

在这里插入图片描述

三、验证结果

1、此时,返回到录像机的浏览器管理页的通道管理中查看,新添加的摄像头通道显示在线,如下图:
在这里插入图片描述

2、回到ivms-4200中查看画面已正常,如下图:
在这里插入图片描述

3、刚才不在线时,无法在编码通道上更新监控点名称,现在已经在线了,回到设备管理的NVR13中,右击编码通道,更新监控点名称即可,ivms-4200中显示的名称则与配置中的OSD通道名称一致了。
本文至此结束,不足之处敬请批评指正。

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
获取海康威视摄像头的源码,需要先了解一下摄像头的型号和接口类型。如果是USB接口的摄像头,可以使用V4L2(UVC)驱动来进行操作。如果是CSI接口的摄像头,需要根据具体的型号和规格书来开发对应的驱动程序。以下是一个使用V4L2驱动的示例程序: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #include <sys/ioctl.h> #include <linux/videodev2.h> #define CAMERA_DEVICE "/dev/video0" #define CAPTURE_FILE "frame.raw" #define IMAGE_WIDTH 640 #define IMAGE_HEIGHT 480 struct buffer { void *start; size_t length; }; static void errno_exit(const char *s) { fprintf(stderr, "%s error %d, %s\n", s, errno, strerror(errno)); exit(EXIT_FAILURE); } static int xioctl(int fd, int request, void *arg) { int r; do { r = ioctl(fd, request, arg); } while (-1 == r && EINTR == errno); return r; } static void process_image(const void *p, int size) { FILE *fp; fp = fopen(CAPTURE_FILE, "wb"); if (fp) { fwrite(p, size, 1, fp); fclose(fp); } } static int read_frame(int fd, struct buffer *buffers) { struct v4l2_buffer buf; CLEAR(buf); buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP; if (-1 == xioctl(fd, VIDIOC_DQBUF, &buf)) { switch (errno) { case EAGAIN: return 0; case EIO: default: errno_exit("VIDIOC_DQBUF"); } } process_image(buffers[buf.index].start, buf.bytesused); if (-1 == xioctl(fd, VIDIOC_QBUF, &buf)) errno_exit("VIDIOC_QBUF"); return 1; } static void mainloop(int fd, struct buffer *buffers) { unsigned int count; count = 100; while (count-- > 0) { for (;;) { fd_set fds; struct timeval tv; int r; FD_ZERO(&fds); FD_SET(fd, &fds); tv.tv_sec = 2; tv.tv_usec = 0; r = select(fd + 1, &fds, NULL, NULL, &tv); if (-1 == r) { if (EINTR == errno) continue; errno_exit("select"); } if (0 == r) { fprintf(stderr, "select timeout\n"); exit(EXIT_FAILURE); } if (read_frame(fd, buffers)) break; } } } static void stop_capturing(int fd) { enum v4l2_buf_type type; type = V4L2_BUF_TYPE_VIDEO_CAPTURE; if (-1 == xioctl(fd, VIDIOC_STREAMOFF, &type)) errno_exit("VIDIOC_STREAMOFF"); } static void start_capturing(int fd, struct buffer *buffers) { unsigned int i; enum v4l2_buf_type type; for (i = 0; i < 4; ++i) { struct v4l2_buffer buf; CLEAR(buf); buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP; buf.index = i; if (-1 == xioctl(fd, VIDIOC_QUERYBUF, &buf)) errno_exit("VIDIOC_QUERYBUF"); buffers[i].length = buf.length; buffers[i].start = mmap(NULL /* start anywhere */, buf.length, PROT_READ | PROT_WRITE /* required */, MAP_SHARED /* recommended */, fd, buf.m.offset); if (MAP_FAILED == buffers[i].start) errno_exit("mmap"); } for (i = 0; i < 4; ++i) { struct v4l2_buffer buf; CLEAR(buf); buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP; buf.index = i; if (-1 == xioctl(fd, VIDIOC_QBUF, &buf)) errno_exit("VIDIOC_QBUF"); } type = V4L2_BUF_TYPE_VIDEO_CAPTURE; if (-1 == xioctl(fd, VIDIOC_STREAMON, &type)) errno_exit("VIDIOC_STREAMON"); } static void uninit_device(struct buffer *buffers) { unsigned int i; for (i = 0; i < 4; ++i) if (-1 == munmap(buffers[i].start, buffers[i].length)) errno_exit("munmap"); } static void init_mmap(int fd, struct buffer **buffers, unsigned int *n_buffers) { struct v4l2_requestbuffers req; CLEAR(req); req.count = 4; req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; req.memory = V4L2_MEMORY_MMAP; if (-1 == xioctl(fd, VIDIOC_REQBUFS, &req)) { if (EINVAL == errno) { fprintf(stderr, "%s does not support " "memory mapping\n", CAMERA_DEVICE); exit(EXIT_FAILURE); } else { errno_exit("VIDIOC_REQBUFS"); } } if (req.count < 2) { fprintf(stderr, "Insufficient buffer memory on %s\n", CAMERA_DEVICE); exit(EXIT_FAILURE); } *buffers = calloc(req.count, sizeof(**buffers)); if (!*buffers) { fprintf(stderr, "Out of memory\n"); exit(EXIT_FAILURE); } for (*n_buffers = 0; *n_buffers < req.count; ++*n_buffers) { struct v4l2_buffer buf; CLEAR(buf); buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP; buf.index = *n_buffers; if (-1 == xioctl(fd, VIDIOC_QUERYBUF, &buf)) errno_exit("VIDIOC_QUERYBUF"); (*buffers)[*n_buffers].length = buf.length; (*buffers)[*n_buffers].start = mmap(NULL /* start anywhere */, buf.length, PROT_READ | PROT_WRITE /* required */, MAP_SHARED /* recommended */, fd, buf.m.offset); if (MAP_FAILED == (*buffers)[*n_buffers].start) errno_exit("mmap"); } } static void init_device(int fd) { struct v4l2_capability cap; struct v4l2_format fmt; if (-1 == xioctl(fd, VIDIOC_QUERYCAP, &cap)) { if (EINVAL == errno) { fprintf(stderr, "%s is no V4L2 device\n", CAMERA_DEVICE); exit(EXIT_FAILURE); } else { errno_exit("VIDIOC_QUERYCAP"); } } if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) { fprintf(stderr, "%s is no video capture device\n", CAMERA_DEVICE); exit(EXIT_FAILURE); } if (!(cap.capabilities & V4L2_CAP_STREAMING)) { fprintf(stderr, "%s does not support streaming i/o\n", CAMERA_DEVICE); exit(EXIT_FAILURE); } CLEAR(fmt); fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; fmt.fmt.pix.width = IMAGE_WIDTH; fmt.fmt.pix.height = IMAGE_HEIGHT; fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV; fmt.fmt.pix.field = V4L2_FIELD_INTERLACED; if (-1 == xioctl(fd, VIDIOC_S_FMT, &fmt)) errno_exit("VIDIOC_S_FMT"); if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_YUYV) { fprintf(stderr, "Libv4l only supports V4L2_PIX_FMT_YUYV format\n"); exit(EXIT_FAILURE); } } int main(int argc, char *argv[]) { struct buffer *buffers; unsigned int n_buffers; int fd = open(CAMERA_DEVICE, O_RDWR | O_NONBLOCK, 0); if (-1 == fd) { fprintf(stderr, "Cannot open %s\n", CAMERA_DEVICE); exit(EXIT_FAILURE); } init_device(fd); init_mmap(fd, &buffers, &n_buffers); start_capturing(fd, buffers); mainloop(fd, buffers); stop_capturing(fd); uninit_device(buffers); close(fd); return 0; } ``` 这个程序会从摄像头中获取视频流,并将每一帧保存到文件中。您需要根据自己的需求进行修改。需要注意的是,这个程序只适用于使用V4L2驱动的摄像头,如果您使用的是CSI接口的摄像头,需要开发对应的驱动程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

weixin_43075093

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

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

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

打赏作者

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

抵扣说明:

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

余额充值