海康工业网口相机组播功能


什么是组播?
网口相机的组播功能可以实现多个PC对同一个相机同时进行访问。
简单直白的说,就是电脑A、电脑B、电脑C,可以同时获取一个相机的图像数据,电脑A的软件可以进行图像处理,而电脑B、C的软件可以进行录像监控等等
有什么限制条件?
1.需要有千兆网交换机进行数据分流,转包
2.同一个相机,只能被一台电脑进行控制(参数设置:曝光修改等),其余的电脑,只能进行图像数据接收
3.只有网口相机支持

1.组播功能MVS演示

本文简单演示下1台相机,通过交换机被两台不同PC链接的情况

1.1网络拓扑图

在这里插入图片描述
1.控制端-主机1:用于相机参数配置,图像接收处理
2.接受端-主机2、3,N:仅支持,用于相机图像接收
3.交换机:千兆网交换机,用于相机图像的分包,接收端主机越多,对交换机性能要求越高

1.2MVS功能演示

1.控制端-主机1,以“控制与接收模式”打开相机,开始取流
在这里插入图片描述
2.接收端-主机2,以“数据接收模式”打开相机,开始取流
在这里插入图片描述
3.在控制端主机设置相机参数,可以看见接收端图像同步变化
在这里插入图片描述

2.组播功能SDK接口调用实现

海康SDK提供了示例以供用户调用其接口实现组播功能,示例代码路径如:
C:\Program Files (x86)\MVS\Development\Samples\VC\VS\SimpleSamples\MultiCast在这里插入图片描述
代码整体结构相对简单,在opendevice是,使用不同权限打开相机即可,相机打开部分代码如下:


        // ch:选择设备并创建句柄 | en:select device and create handle
        nRet = MV_CC_CreateHandle(&handle, stDeviceList.pDeviceInfo[nIndex]);
        if (MV_OK != nRet)
        {
    
    
            printf("Create Handle fail! nRet [0x%x]\n", nRet);
            break;
        }    
        // ch:询问用户启动多播控制应用程序或多播监控应用程序
        // en:Ask the user to launch: the multicast controlling application or the multicast monitoring application.
        printf("Start multicast sample in (c)ontrol or in (m)onitor mode? (c/m)\n");

        char key;
        do
        {
    
    
            scanf("%c", &key);
        }
        while ( (key != 'c') && (key != 'm') && (key != 'C') && (key != 'M'));
        // ch:查询用户使用的模式 | en:Query the user for the mode to use.
        bool monitorMode = (key == 'm') || (key == 'M');
        // ch:打开设备 | Open device
        if (monitorMode)
        {
    
    
            nRet = MV_CC_OpenDevice(handle, MV_ACCESS_Monitor);//接收端
        }
        else
        {
    
    
            nRet = MV_CC_OpenDevice(handle, MV_ACCESS_Control);//控制与接收
        }
        if (MV_OK != nRet)
        {
    
    
            printf("Open Device fail! nRet [0x%x]\n", nRet);
            break;
        }

不同电脑上面运行不同的open接口的代码,即可完成组播功能使用
需注意,接收端,不能控制相机参数,即必须控制端先控制相机取流,否则接收端会失败

3.组播功能使用常见问题

3.1组播IP地址无效,系统弹框会提示“请检查IP地址是否有效

  • 组播IP地址应为D类IP地址。
    在224.0.0.0~239.255.255.255范围内的地址称为D类IP组播地址。
    其中,224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其他地址供路由协议使用。
    224.0.1.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效。239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。

3.2组播端口号如何设置

  • 组播端口号有效值为0~65535,且应该是未被使用的端口号。

3.3组播IP和端口号修改后不同步

  • 由于接收端自动配置组播IP和组播端口,在控制端修改组播IP和组播端口号,会出现不同步现象
    解决方法:控制端-主机在MVS组播配置中修改IP和端口号后,接收端-主机MVS需要断开相机连接,重新连接后右键-组播配置,查看IP和端口号是否与控制端-主机一致。
    端口号不一致需再次断开相机连接,再次连接,直至IP和端口号一致。

猜你喜欢

转载自blog.csdn.net/qq_23107577/article/details/121222479