使用海康 ISAPI 与网络硬盘录像机数据交互

目录

一. 介绍   

二. 开发准备

1.  对需要集成使用ISAPI进行认证协议申请(ISAPI开发指南_工业测温_测温筒机)

2. 参考ISAPI文档对所需要场景需求进行开发

二.  录像机数据请求

1. 导入所需依赖包

2. 海康硬盘录像机类初始化

3. Xml 数据格式解析方法

4. 对不同ISAPI数据进行组装

5. 请求结果示例

 三 , 完整代码示例如下

 四.  结语


一. 介绍   

本文介绍了如何通过海康ISAPI与海康网络硬盘录像机进行数据交互,使用语言为Python。获取录像机的 下方数据信息。通过ISAPI,我们能够获取摄像头各类资源及进行摄像头布防操作,进而为平台数据监控展示、管理与调度提供操作支持。


通过 ISAPI 接口实现以下操作:

  • 获取录像机通道信息:
    • 通道名称:标识每个摄像头的名称。
    • 通道号:摄像头在录像机上的唯一编号。
    • 通道 IP:摄像头对应的网络地址。
  • 查询视频流配置:
    • 码流类型:如主码流、副码流。
    • 帧率:视频每秒传输的帧数。
    • 码率:视频流的传输速率。
    • 分辨率:视频画面的清晰度。
  • 获取设备状态:
    • 摄像头是否在线/离线。


二. 开发准备

1.  对需要集成使用ISAPI进行认证协议申请(ISAPI开发指南_工业测温_测温筒机)

https://open.hikvision.com/osp#%E8%AE%BE%E5%A4%87%E9%9B%86%E6%88%90API

2. 参考ISAPI文档对所需要场景需求进行开发

二.  录像机数据请求

1. 导入所需依赖包

import requests
from requests.auth import HTTPDigestAuth
import xml.etree.ElementTree as ET

2. 海康硬盘录像机类初始化

# 海康硬盘录像机获取通道监控点资源信息类
class VCRDeviceInfo:
    def __init__(self, username, password, ip, port):
        """
        初始化录像机设备信息类
        :param username: 用户名
        :param password: 密码
        :param ip: 录像机 IP 地址
        :param port: 端口号
        """
        self.username = username
        self.password = password
        self.ip = ip
        self.port = port

    @staticmethod
    def _remove_namespace(tag):
        """去除命名空间前缀"""
        return tag.split('}')[-1] if '}' in tag else tag

    @staticmethod
    def _xml_to_dict(element):
        """将 XML 转换为列表套字典结构"""
        result_list = []
        for child in element:
            result = {}
            if child.text is not None:
                result[VCRDeviceInfo._remove_namespace(child.tag)] = child.text.strip()
            if len(child) > 0:
                result[VCRDeviceInfo._remove_namespace(child.tag)] = VCRDeviceInfo._xml_to_dict(child)
            result_list.append(result)
        return result_list

3. Xml 数据格式解析方法

    def _parse_xml(self, response_info):
        """解析录像机状态 XML 数据"""
        root = ET.fromstring(response_info.text.strip())
        xml_dict = self._xml_to_dict(root)

        device_status_list = []
        for i in xml_dict:
            channel_info = {
                'id': i['InputProxyChannelStatus'][0]['id'],
                'ip_a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值