当前位置: 首页 > article >正文

获取海康综合安防管理平台(区域,监控点,时效性rtsp流)数据

目录

一 . 开发准备

1. 海康安防平台OpenApi参考文档地址

2. 登录运管中心,获取海康安防平台 ( AppKey,App_Secret)

二.  下载 OpenAPI安全认证库(Python)

1.  OpenAPI安全认证库-Python版本下载

2.  AK \ SK认证

3.  查询安防平台区域列表v2(区域)

(1)请求示例代码如下

(2)请求示例结果

4.  根据区域获取下级资源列表v2(监控点)

(1)请求示例代码如下

(2)请求示例结果

5.  根据编号查询资源详细信息(ip,端口等)

(1)请求示例代码如下

(2)请求示例结果

6. 时效性rtsp流生成 (该功能是把资源监控点编号参数传进去,生成时效性rtsp流)

(1)请求示例代码如下

(2)请求示例结果

 三.  完整封装类代码

四 . 总结


       本文介绍了如何通过接口与海康综合安防管理平台进行数据交互,获取平台中的区域信息、监控点数据以及时效性 RTSP 流。通过调用平台的 API,我们能够有效地获取和管理安防系统中的各类资源,支持多种数据类型的获取与分析,进而为平台的监控、管理与调度提供数据支持。


一 . 开发准备

1. 海康安防平台OpenApi参考文档地址

https://open.hikvision.com/docs/docId?version=%2F29c78ef52ca842c7933bd2b8e051e9d0&tagPath=%E6%96%87%E6%A1%A3%E8%AF%B4%E6%98%8E

2. 登录运管中心,获取海康安防平台 ( AppKey,App_Secret)

二.  下载 OpenAPI安全认证库(Python)

1.  OpenAPI安全认证库-Python版本下载

      目前官网没有提供 Python认证库,大家可以点击下方网盘链接下载
OpenAPI安全认证库zip下载链接icon-default.png?t=O83Ahttps://pan.baidu.com/s/1IVi3ZMM2XVIfFF8QTibWSg?pwd=0205%C2%A0

2.  AK \ SK认证

接口鉴权统一使用AK\SK认证,其中AK\SK是通过API网关发放的。AK\SK摘要认证方案如下

# -*- coding: UTF-8 -*-
import hashlib
import hmac
import base64
import time
import uuid
import requests
import json


#Step1:配置host地址、端口号、appKey和appSecret
# api config
host ='https://192.168.139.246'
port ='443'
artemis='artemis'
appKey = '24481068'
appSecret = 'wTdNalUIHRlN5ZknxWzc'
methon = 'POST'


# 请求头构造
def Signature(appSecret,methon,appKey,artemis,api):

    ## Timestamp
    t = time.time()
    nowTime = lambda:int(round(t * 1000))
    timestamp=nowTime()
    timestamp=str(timestamp)
    # uuid
    nonce= str(uuid.uuid1())
    #signature    
    secret=str(appSecret).encode('utf-8')
    message = str(methon+'\n*/*\napplication/json\nx-ca-key:'+appKey+'\nx-ca-nonce:'+nonce+'\nx-ca-timestamp:'+timestamp+'\n/'+artemis+api).encode('utf-8')
    signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())
#    print(signature)
   #header
    header_dict = dict()
    header_dict['Accept'] = '*/*'
    header_dict['Content-Type'] = 'application/json'
    header_dict['X-Ca-Key'] = appKey
    header_dict['X-Ca-Signature'] = signature
    header_dict['X-Ca-timestamp'] = timestamp
    header_dict['X-Ca-nonce'] = nonce
    header_dict['X-Ca-Signature-Headers'] = 'x-ca-key,x-ca-nonce,x-ca-timestamp'
#    print (header_dict)

    return header_dict

3.  查询安防平台区域列表v2(区域)

根据查询条件查询区域列表信息,主要用于区域信息查询过滤。
相对V1接口,支持级联场景的区域查询

(1)请求示例代码如下
# -*- coding: UTF-8 -*-
import hashlib
import hmac
import base64
import time
import uuid
import requests
import json


#Step1:配置host地址、端口号、appKey和appSecret
# api config
host ='https://192.168.139.246'
port ='443'
artemis='artemis'
appKey = '24481068'
appSecret = 'wTdNalUIHRlN5ZknxWzc'
methon = 'POST'


# 请求头构造
def Signature(appSecret,methon,appKey,artemis,api):

    ## Timestamp
    t = time.time()
    nowTime = lambda:int(round(t * 1000))
    timestamp=nowTime()
    timestamp=str(timestamp)
    # uuid
    nonce= str(uuid.uuid1())
    #signature    
    secret=str(appSecret).encode('utf-8')
    message = str(methon+'\n*/*\napplication/json\nx-ca-key:'+appKey+'\nx-ca-nonce:'+nonce+'\nx-ca-timestamp:'+timestamp+'\n/'+artemis+api).encode('utf-8')
    signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())
#    print(signature)
   #header
    header_dict = dict()
    header_dict['Accept'] = '*/*'
    header_dict['Content-Type'] = 'application/json'
    header_dict['X-Ca-Key'] = appKey
    header_dict['X-Ca-Signature'] = signature
    header_dict['X-Ca-timestamp'] = timestamp
    header_dict['X-Ca-nonce'] = nonce
    header_dict['X-Ca-Signature-Headers'] = 'x-ca-key,x-ca-nonce,x-ca-timestamp'
#    print (header_dict)

    return header_dict


# 获取安防平台视频区域信息
def get_video_area():
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'total': 12, 'pageNo': 1, 'pageSize': 1000, 'list': [] }  数据
    :return:
    """
    payload = {
        "pageNo": 1,
        "pageSize": 1000,
        "resourceType": 'region',
        # 传region时查询的为用户有配置权限的区域树,
        # 传资源类型如:camera、encodeDevice查询用户对该类资源有权限的区域树;
    }
    api = '/api/irds/v2/region/nodesByParams'
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)['data']['list']


print(get_video_area())
(2)请求示例结果

4.  根据区域获取下级资源列表v2(监控点)

根据区域编码、资源类型、资源操作权限码分页获取当前区域下(不包含子区域)有权限的资源列表,主要用于逐层获取区域下的资源信息。

(1)请求示例代码如下
# -*- coding: UTF-8 -*-
import hashlib
import hmac
import base64
import time
import uuid
import requests
import json


#Step1:配置host地址、端口号、appKey和appSecret
# api config
host ='https://192.168.139.246'
port ='443'
artemis='artemis'
appKey = '24481068'
appSecret = 'wTdNalUIHRlN5ZknxWzc'
methon = 'POST'


# 请求头构造
def Signature(appSecret,methon,appKey,artemis,api):

    ## Timestamp
    t = time.time()
    nowTime = lambda:int(round(t * 1000))
    timestamp=nowTime()
    timestamp=str(timestamp)
    # uuid
    nonce= str(uuid.uuid1())
    #signature    
    secret=str(appSecret).encode('utf-8')
    message = str(methon+'\n*/*\napplication/json\nx-ca-key:'+appKey+'\nx-ca-nonce:'+nonce+'\nx-ca-timestamp:'+timestamp+'\n/'+artemis+api).encode('utf-8')
    signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())
#    print(signature)
   #header
    header_dict = dict()
    header_dict['Accept'] = '*/*'
    header_dict['Content-Type'] = 'application/json'
    header_dict['X-Ca-Key'] = appKey
    header_dict['X-Ca-Signature'] = signature
    header_dict['X-Ca-timestamp'] = timestamp
    header_dict['X-Ca-nonce'] = nonce
    header_dict['X-Ca-Signature-Headers'] = 'x-ca-key,x-ca-nonce,x-ca-timestamp'
#    print (header_dict)

    return header_dict



# 获取安防平台视频区域信息
def get_video_area():
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'total': 12, 'pageNo': 1, 'pageSize': 1000, 'list': [] }  数据
    :return:
    """
    payload = {
        "pageNo": 1,
        "pageSize": 1000,
        "resourceType": 'region',
        # 传region时查询的为用户有配置权限的区域树,
        # 传资源类型如:camera、encodeDevice查询用户对该类资源有权限的区域树;
    }
    api = '/api/irds/v2/region/nodesByParams'
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)['data']['list']

# print(get_video_area())



# 根据区域编号获取下一级区域列表v2
def get_video_area_info(data):
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'total': 12, 'pageNo': 1, 'pageSize': 1000, 'list': [] }  数据
    :return:
    """
    payload = {

        "regionIndexCode": data,
        # "regionIndexCode": 'root000000',
        "pageNo": 1,
        "authCodes": [
            "view"
        ],
        "pageSize": 1000,
        "cascadeFlag": 0,

        "resourceType": "camera",
    }


    api = '/api/irds/v2/resource/subResources'
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)['data']['list']

#  get_video_area()方法返回各区域indexCode 选取一个区域indexCode进行下级数据请求
print(get_video_area_info('6847cabd-1240-4f70-9ac6-4ed8c5da12ff'))
(2)请求示例结果

5.  根据编号查询资源详细信息(ip,端口等)

根据资源类型、资源编号查询单个资源详细信息及总条数,列表中资源类型必须一致。

(1)请求示例代码如下
# -*- coding: UTF-8 -*-
import hashlib
import hmac
import base64
import time
import uuid
import requests
import json


#Step1:配置host地址、端口号、appKey和appSecret
# api config
host ='https://192.168.139.246'
port ='443'
artemis='artemis'
appKey = '24481068'
appSecret = 'wTdNalUIHRlN5ZknxWzc'
methon = 'POST'


# 请求头构造
def Signature(appSecret,methon,appKey,artemis,api):

    ## Timestamp
    t = time.time()
    nowTime = lambda:int(round(t * 1000))
    timestamp=nowTime()
    timestamp=str(timestamp)
    # uuid
    nonce= str(uuid.uuid1())
    #signature
    secret=str(appSecret).encode('utf-8')
    message = str(methon+'\n*/*\napplication/json\nx-ca-key:'+appKey+'\nx-ca-nonce:'+nonce+'\nx-ca-timestamp:'+timestamp+'\n/'+artemis+api).encode('utf-8')
    signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())
#    print(signature)
   #header
    header_dict = dict()
    header_dict['Accept'] = '*/*'
    header_dict['Content-Type'] = 'application/json'
    header_dict['X-Ca-Key'] = appKey
    header_dict['X-Ca-Signature'] = signature
    header_dict['X-Ca-timestamp'] = timestamp
    header_dict['X-Ca-nonce'] = nonce
    header_dict['X-Ca-Signature-Headers'] = 'x-ca-key,x-ca-nonce,x-ca-timestamp'
#    print (header_dict)

    return header_dict



# 获取安防平台视频区域信息
def get_video_area():
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'total': 12, 'pageNo': 1, 'pageSize': 1000, 'list': [] }  数据
    :return:
    """
    payload = {
        "pageNo": 1,
        "pageSize": 1000,
        "resourceType": 'region',
        # 传region时查询的为用户有配置权限的区域树,
        # 传资源类型如:camera、encodeDevice查询用户对该类资源有权限的区域树;
    }
    api = '/api/irds/v2/region/nodesByParams'
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)['data']['list']

# print(get_video_area())



# 根据区域编号获取下一级区域列表v2
def get_video_area_info(data):
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'total': 12, 'pageNo': 1, 'pageSize': 1000, 'list': [] }  数据
    :return:
    """
    payload = {

        "regionIndexCode": data,
        # "regionIndexCode": 'root000000',
        "pageNo": 1,
        "authCodes": [
            "view"
        ],
        "pageSize": 1000,
        "cascadeFlag": 0,

        "resourceType": "camera",
    }


    api = '/api/irds/v2/resource/subResources'
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)['data']['list']

#  get_video_area()方法返回各区域indexCode 选取一个区域indexCode进行下级数据请求
# print(get_video_area_info('6847cabd-1240-4f70-9ac6-4ed8c5da12ff'))



# 根据下级区域父indexCode 获取到录像机信息
def get_video_area_vcr_info(data):
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'total': 12, 'pageNo': 1, 'pageSize': 1000, 'list': [] }  数据
    :return:
    """
    payload = {


    "resourceType": "encodeDevice",
    "resourceIndexCodes": data,

    }


    api = '/api/resource/v1/resource/indexCodes/search'
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)['data']['list']

# get_video_area_info()方法返回监控点 parentindexCode 选取监控点 parentindexCode进行数据请求
print(get_video_area_vcr_info(['431e5596e4d641a9b7bbe7d084c42688']))

(2)请求示例结果

6. 时效性rtsp流生成 (该功能是把资源监控点编号参数传进去,生成时效性rtsp流)

下方链接为文档案例(如何进行标准rtsp取流及取流url无法播放问题处理)

网页渠道icon-default.png?t=O83Ahttps://knowbot.hikvision.com/webchatbot-pc/#/sharingPath?params=384907&sysNum=1718948770440&type=1利用流媒体服务进行rtsp流转换可以参考下文链接

(aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器_srs转码-CSDN博客文章浏览阅读1.2k次,点赞20次,收藏23次。定义启动和停止 RTSP 转码任务的方法# 开始转码方法# 检查相同RTSP是否已有子进程在处理# 使用Semaphore限制并发进程数量# 实际的转码操作,这里需要调用ffmpeg或其他工具'ffmpeg','-i', ip,# 创建异步子进程# 将任务添加到字典中# 等待子进程完成# 从字典中移除已完成的任务# 停止转码方法# 停止转码任务process.terminate() # 发送终止信号await process.wait() # 等待进程结束。_srs转码https://blog.csdn.net/m0_56659620/article/details/135459605?spm=1001.2014.3001.5502

以上为官方调用

(1)请求示例代码如下
# -*- coding: UTF-8 -*-
import hashlib
import hmac
import base64
import time
import uuid
import requests
import json


#Step1:配置host地址、端口号、appKey和appSecret
# api config
host ='https://192.168.139.246'
port ='443'
artemis='artemis'
appKey = '24481068'
appSecret = 'wTdNalUIHRlN5ZknxWzc'
methon = 'POST'


# 请求头构造
def Signature(appSecret,methon,appKey,artemis,api):

    ## Timestamp
    t = time.time()
    nowTime = lambda:int(round(t * 1000))
    timestamp=nowTime()
    timestamp=str(timestamp)
    # uuid
    nonce= str(uuid.uuid1())
    #signature
    secret=str(appSecret).encode('utf-8')
    message = str(methon+'\n*/*\napplication/json\nx-ca-key:'+appKey+'\nx-ca-nonce:'+nonce+'\nx-ca-timestamp:'+timestamp+'\n/'+artemis+api).encode('utf-8')
    signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())
#    print(signature)
   #header
    header_dict = dict()
    header_dict['Accept'] = '*/*'
    header_dict['Content-Type'] = 'application/json'
    header_dict['X-Ca-Key'] = appKey
    header_dict['X-Ca-Signature'] = signature
    header_dict['X-Ca-timestamp'] = timestamp
    header_dict['X-Ca-nonce'] = nonce
    header_dict['X-Ca-Signature-Headers'] = 'x-ca-key,x-ca-nonce,x-ca-timestamp'
#    print (header_dict)

    return header_dict



# 获取安防平台视频区域信息
def get_video_area():
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'total': 12, 'pageNo': 1, 'pageSize': 1000, 'list': [] }  数据
    :return:
    """
    payload = {
        "pageNo": 1,
        "pageSize": 1000,
        "resourceType": 'region',
        # 传region时查询的为用户有配置权限的区域树,
        # 传资源类型如:camera、encodeDevice查询用户对该类资源有权限的区域树;
    }
    api = '/api/irds/v2/region/nodesByParams'
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)['data']['list']

# print(get_video_area())



# 根据区域编号获取下一级区域列表v2
def get_video_area_info(data):
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'total': 12, 'pageNo': 1, 'pageSize': 1000, 'list': [] }  数据
    :return:
    """
    payload = {

        "regionIndexCode": data,
        # "regionIndexCode": 'root000000',
        "pageNo": 1,
        "authCodes": [
            "view"
        ],
        "pageSize": 1000,
        "cascadeFlag": 0,

        "resourceType": "camera",
    }


    api = '/api/irds/v2/resource/subResources'
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)['data']['list']

#  get_video_area()方法返回各区域indexCode 选取一个区域indexCode进行下级数据请求
# print(get_video_area_info('6847cabd-1240-4f70-9ac6-4ed8c5da12ff'))



# 根据下级区域父indexCode 获取到录像机信息
def get_video_area_vcr_info(data):
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'total': 12, 'pageNo': 1, 'pageSize': 1000, 'list': [] }  数据
    :return:
    """
    payload = {


    "resourceType": "encodeDevice",
    "resourceIndexCodes": data,

    }


    api = '/api/resource/v1/resource/indexCodes/search'
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)['data']['list']

# get_video_area_info()方法返回监控点 parentindexCode 选取监控点 parentindexCode进行数据请求
# print(get_video_area_vcr_info(['431e5596e4d641a9b7bbe7d084c42688']))



# 根据对应监控点indexCode获取时效性rtsp流
def get_video_area_rtsp_info(code):
    """
     'code': '0',  状态码
     'msg': 'success',  请求成功
     'data': {'type': 0, 'code': '0', 'msg': 'success', 'data':}  数据
    :return:
    """
    api = '/api/vnsc/mls/v1/preview/openApi/getPreviewParam'
    payload = {
        "indexCode": code,
        "transmode": 1,
        "streamType": 0,
        "protocol": "rtsp",
        "expireTime": -1
    }
    url = host + ':' + port + '/' + artemis + api
    data = requests.post(url, headers=Signature(appSecret,methon,appKey,artemis,api), json=payload,verify=False)
    return json.loads(data.text)

print(get_video_area_rtsp_info('bf4a0923239a4d6db45fef5507e2197e'))


(2)请求示例结果

 三.  完整封装类代码

# -*- coding: UTF-8 -*-
import hashlib
import hmac
import base64
import time
import uuid
import requests
import json


# 安防平台SDK参考文档地址
# https://open.hikvision.com/docs/docId?version=%2F29c78ef52ca842c7933bd2b8e051e9d0&tagPath=%E6%96%87%E6%A1%A3%E8%AF%B4%E6%98%8E

# 海康安防平台获取资源信息类
class HikVisionAPI:
    def __init__(self, host, port, app_key, app_secret, artemis='artemis', method='POST'):
        """
        初始化类,配置海康威视 API 相关信息
        :param host: 安防平台主机地址
        :param port: 安防平台端口号
        :param app_key: 安防平台合作方的 AppKey
        :param app_secret: 安防平台合作方的 AppSecret
        :param artemis: artemis 服务器路径前缀
        :param method: 请求方法(默认为 POST)
        """
        self.host = host
        self.port = port
        self.app_key = app_key
        self.app_secret = app_secret
        self.artemis = artemis
        self.method = method

    def _generate_signature(self, api):
        """
        生成请求头中的签名信息
        :param api: API 路径
        :return: 包含签名的请求头字典
        """
        timestamp = str(int(round(time.time() * 1000)))  # 当前时间戳(毫秒级)
        nonce = str(uuid.uuid1())  # 生成唯一随机数
        secret = self.app_secret.encode('utf-8')
        # 构造签名消息
        message = f"{self.method}\n*/*\napplication/json\nx-ca-key:{self.app_key}\nx-ca-nonce:{nonce}\nx-ca-timestamp:{timestamp}\n/{self.artemis}{api}".encode(
            'utf-8')
        # 计算 HMAC-SHA256 签名并进行 Base64 编码
        signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())

        # 构造请求头
        headers = {
            'Accept': '*/*',
            'Content-Type': 'application/json',
            'X-Ca-Key': self.app_key,
            'X-Ca-Signature': signature,
            'X-Ca-timestamp': timestamp,
            'X-Ca-nonce': nonce,
            'X-Ca-Signature-Headers': 'x-ca-key,x-ca-nonce,x-ca-timestamp',
        }
        return headers

    def _post(self, api, payload):
        """
        向 HikVision API 发起 POST 请求
        :param api: API 路径
        :param payload: 请求体参数
        :return: API 返回的 JSON 数据
        """
        url = f"{self.host}:{self.port}/{self.artemis}{api}"  # 构造完整 URL
        headers = self._generate_signature(api)  # 获取带签名的请求头
        response = requests.post(url, headers=headers, json=payload, verify=False, timeout=3)  # 发起 POST 请求
        return response.json()  # 返回 JSON 数据

    def get_video_area(self, page_no=1, page_size=1000, resource_type='region'):
        """
        获取视频区域信息
        :param page_no: 页码(默认第 1 页)
        :param page_size: 每页记录数(默认 1000 条)
        :param resource_type: 资源类型(默认 "region")
        :return: 区域列表数据
        """
        api = '/api/irds/v2/region/nodesByParams'
        payload = {
            "pageNo": page_no,
            "pageSize": page_size,
            "resourceType": resource_type,
        }
        return self._post(api, payload).get('data', {}).get('list', [])

    def get_video_area_info(self, code, page_no=1, page_size=1000):
        """
        获取指定区域的子资源信息
        :param code: 区域编号
        :param page_no: 页码(默认第 1 页)
        :param page_size: 每页记录数(默认 1000 条)
        :return: 子资源列表数据
        """
        api = '/api/irds/v2/resource/subResources'
        payload = {
            "regionIndexCode": code,
            "pageNo": page_no,
            "authCodes": ["view"],
            "pageSize": page_size,
            "cascadeFlag": 0,
            "resourceType": "camera",
        }
        return self._post(api, payload).get('data', {}).get('list', [])

    def get_rtsp_url(self, code):
        """
        获取带有效期的 RTSP URL
        :param code: 资源编号
        :return: RTSP URL(字符串)
        """
        api = '/api/vnsc/mls/v1/preview/openApi/getPreviewParam'
        payload = {
            "indexCode": code,
            "transmode": 1,
            "streamType": 0,
            "protocol": "rtsp",
            "expireTime": -1
        }
        return self._post(api, payload).get('data', {}).get('url', None)

    def get_video_area_vcr_info(self, resource_index_codes):
        """
        根据资源索引编号获取录像机信息
        :param resource_index_codes: 资源索引编号列表
        :return: 录像机信息数据
        """
        api = '/api/resource/v1/resource/indexCodes/search'
        payload = {
            "resourceType": "encodeDevice",
            "resourceIndexCodes": resource_index_codes,
        }
        return self._post(api, payload).get('data', {})


# 使用类调用示例
if __name__ == "__main__":

    # 实例化 配置相关参数
    hik_api = HikVisionAPI(
        host='https://192.168.139.246',
        port='443',
        app_key='24481068',
        app_secret='wTdNalUIHRlN5ZknxWzc'
    )

    # 获取视频区域信息
    video_areas = hik_api.get_video_area()
    print("视频区域信息:", video_areas)

    # 获取区域子设备信息
    region_code = '61dbda98-7ed5-4e63-b5d1-55d485d4645e'
    sub_resources = hik_api.get_video_area_info(region_code)
    print("子设备信息:", sub_resources)

    # 获取 时效性 RTSP URL
    rtsp_url = hik_api.get_rtsp_url('d2e884e4b9384065957721d11d711932')
    print("RTSP URL:", rtsp_url)

    # 获取录像机信息(传入参数为监控点资源信息parent_Indexcode)
    vcr_info = hik_api.get_video_area_vcr_info(['431e5596e4d641a9b7bbe7d084c42688'])
    print("录像机信息:", vcr_info)

四 . 总结

      最后,希望大家通过本次学习和实现,能够更好地理解海康综合安防管理平台的接口对接方法,通过实际操作,对代码有更深层次的认知,希望大家在今后的工作中能够不断学习,来年胜今年!


http://www.kler.cn/a/427499.html

相关文章:

  • 1207论文速读
  • DICOM医学影象应用篇——多平面重建(MPR)在DICOM医学影像中的应用详解
  • 将html文件改成标准的html标签
  • 新增白名单赋予应用安装权限
  • 第33周:运动鞋识别(Tensorflow实战第五周)
  • shell中[] [[]] (())比较
  • 5.12【机器学习】卷积模型搭建
  • 【UE5】制作插件 并调试【vs2022】
  • android studio 读写文件操作(应用场景三)
  • zabbix监控服务的搭建与使用
  • SpringCloud-Eureka与Dubbo(Zookeeper)的深度对比:微服务架构下的服务注册与发现
  • k8s-Informer之Indexer的解析(4)
  • 循序渐进kubenetes Service(Cluster ip、Nodeport、Loadbalancer)
  • 简易图书管理系统
  • 16 Java(junit)测试+Assert(断言测试)、枚举类、注解、javac编译和javap反编译命令、常量
  • 夏普MX-4608N复印机维修模式进入方法及载体初始化方法
  • 基于STM32的Wi-Fi无人机项目
  • 手写电子签名并保存到当前项目下
  • 【Spark】 groupByKey与reduceByKey的区别
  • Conda-Pack打包:高效管理Python环境