海康SDK(三) 获取视频通道编码ID

在修改国标接入配置信息中,也包括修改【视频通道编码ID】,在获取设备的配置信息中并未找到此字段的信息,找了好久才找到。。。所以特此记录一下。
在这里插入图片描述

使用接口

在这里插入图片描述

在这里插入图片描述

具体实现

        /// <summary>
        /// 获取视频通道编码ID(要根据通道号来获取视频通道编码ID)
        /// </summary>
        /// <param name="channel"> 通道Id</param>
        /// <returns></returns>
        public string GetDeviceChannelId(uint channel)
        {
            string videoChannelNumID = string.Empty;
            //lpInBuffer对应结构体-NET_DVR_STREAM_INFO
            CHCNetSDK.NET_DVR_STREAM_INFO mlpInBuffer = new CHCNetSDK.NET_DVR_STREAM_INFO();
            Int32 dwInBufferSize = Marshal.SizeOf(mlpInBuffer);
            mlpInBuffer.dwSize = (uint)dwInBufferSize;
            mlpInBuffer.dwChannel = channel;
            IntPtr ptrInBuffCond = Marshal.AllocHGlobal(dwInBufferSize);
            Marshal.StructureToPtr(mlpInBuffer, ptrInBuffCond, false);
            //lpOutBuffer对应结构体-NET_DVR_GBT28181_CHANINFO_CFG
            CHCNetSDK.NET_DVR_GBT28181_CHANINFO_CFG mlpOutBuffer = new CHCNetSDK.NET_DVR_GBT28181_CHANINFO_CFG();
            Int32 dwOutBufferSize = Marshal.SizeOf(mlpOutBuffer);
            IntPtr ptrOutbuffCfg = Marshal.AllocHGlobal(dwOutBufferSize);
            Marshal.StructureToPtr(mlpOutBuffer, ptrOutbuffCfg, false);

            UInt32 dwStatusList = 0;
            IntPtr lpStatusList = Marshal.AllocHGlobal(4);
            Marshal.StructureToPtr(dwStatusList, lpStatusList, false);
            //调用接口
            bool r = CHCNetSDK.NET_DVR_GetDeviceConfig(m_lUserID, 3251, 1, ptrInBuffCond, dwInBufferSize, lpStatusList, ptrOutbuffCfg, dwOutBufferSize);
            if (r)
            {
                //指针转结构体
                CHCNetSDK.NET_DVR_GBT28181_CHANINFO_CFG cfgResult = (CHCNetSDK.NET_DVR_GBT28181_CHANINFO_CFG)Marshal.PtrToStructure(ptrOutbuffCfg, typeof(CHCNetSDK.NET_DVR_GBT28181_CHANINFO_CFG));
                //获取视频通道编码id
                videoChannelNumID = cfgResult.szVideoChannelNumID;
            }
            else
            {
                videoChannelNumID = string.Empty;
                uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                ShowLog(string.Format("获取设备视频通道ID失败!错误码为{0}", iLastErr));
            }
            Marshal.FreeHGlobal(ptrInBuffCond);//释放指针 
            Marshal.FreeHGlobal(ptrOutbuffCfg);//释放指针 
            Marshal.FreeHGlobal(lpStatusList);//释放指针 
            return videoChannelNumID;  
        }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值