大华 sdk java_[日常总结] 大华SDK基于Java的二次开发实现Restful Api

最近半个月在对接大华摄像头,要实现摄像头的实时预览、云台控制和截图等功能。在网上找了很多资源也没有找到想要的,所以自己写了工具类。简单陈述一下基于大华的官网SDK实现摄像头的云台控制和抓图。无非就是调用SDK提供的一些函数来实现。1. 首先先看看大华给的开发流程image.png开发可以顺着这个流程图的步骤,就会变得简单明了,开发其他功能也一样,下面是我封装好的工具类。至于一些引用类都是在大华官网...
摘要由CSDN通过智能技术生成

最近半个月在对接大华摄像头,要实现摄像头的实时预览、云台控制和截图等功能。在网上找了很多资源也没有找到想要的,所以自己写了工具类。简单陈述一下基于大华的官网SDK实现摄像头的云台控制和抓图。无非就是调用SDK提供的一些函数来实现。

1. 首先先看看大华给的开发流程

f04797f00994

image.png

开发可以顺着这个流程图的步骤,就会变得简单明了,开发其他功能也一样,下面是我封装好的工具类。至于一些引用类都是在大华官网的SDK里面。

云台控制

/**

* @author : colors

* @date : 11:04 2020/12/3

* 云台控制工具类

*/

public class PTZControlUtil {

// 初始化sdk

public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;

// 设备信息

private static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();

// 登陆句柄

private static NetSDKLib.LLong m_hLoginHandle = new NetSDKLib.LLong(0);

// 网络断线处理

private static DisConnect disConnect = new DisConnect();

// 设备连接恢复,实现设备连接恢复接口

private static HaveReConnect haveReConnect = new HaveReConnect();

/**

* 云台控制

* 向上移动

*

* @param m_strIp ip

* @param m_nPort 端口

* @param m_strUser 登录名

* @param m_strPassword 密码

* @param nChannelID 通道id 默认为0

* @param lParam1 默认 0,当有左上或左下等操作时才会传值 (1-8)

* @param lParam2 垂直/水平 移动速度 (1-8)

*/

public static void upControlPtz(String m_strIp, int m_nPort, String m_strUser, String m_strPassword, int nChannelID, int lParam1, int lParam2) {

// 初始化

LoginModule.init(disConnect, haveReConnect);

// 若未登录,先登录。

if (m_hLoginHandle.longValue() == 0) {

login(m_strIp, m_nPort, m_strUser, m_strPassword);

}

// 开始向上移动,若超过角度则会变为左右移动

if (m_hLoginHandle.longValue() != 0) {

System.out.println("开始向上移动..., 当前速度为:" + lParam2);

startUpControl(nChannelID, lParam1, lParam2);

}

System.out.println("操作完成");

// 停止移动

stopUpControl(nChannelID);

// 退出

logout();

System.out.println("退出登录...");

// 释放资源

LoginModule.cleanup();

}

// 向上

private static void startUpControl(int nChannelID, int lParam1, int lParam2) {

if (m_hLoginHandle.longValue() != 0) {

netsdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,

NetSDKLib.NET_PT

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 运维开发:基于 Kubernetes RESTful API 实现 Deployment 创建 Kubernetes是一个开源的容器编排平台,它提供了一种便捷的方式来部署、扩展和管理容器化应用。在运维开发中,我们经常需要使用Kubernetes的API来创建Deployment。 首先,我们需要使用Python中的requests库来与Kubernetes的API进行交互。我们可以使用`requests.get()`或`requests.post()`等方法来发送HTTP请求,对Kubernetes进行操作。 接下来,我们需要构造正确的API地址和API请求数据。Kubernetes的API地址是基于集群的,我们可以通过访问`https://api.example.com`来得到API根地址。然后我们需要通过构造不同的路径来进行不同的操作,比如创建Deployment、查看Deployment等。 对于创建Deployment,我们可以使用POST请求来发送Deployment的定义。我们可以定义Deployment的名称、容器镜像、副本数量等信息,然后将这些信息转换为JSON格式,作为请求的数据体,发送到`/apis/apps/v1/namespaces/{namespace}/deployments`路径。 示例代码如下: ```python import requests import json def create_deployment(namespace, name, image, replicas): api_url = "https://api.example.com" endpoint = f"{api_url}/apis/apps/v1/namespaces/{namespace}/deployments" headers = {"Content-Type": "application/json"} data = { "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": name }, "spec": { "replicas": replicas, "selector": { "matchLabels": { "app": name } }, "template": { "metadata": { "labels": { "app": name } }, "spec": { "containers": [ { "name": name, "image": image, "ports": [ { "containerPort": 80 } ] } ] } } } } response = requests.post(endpoint, headers=headers, json=data) if response.status_code == 201: print(f"Deployment {name} created successfully.") else: print(f"There was an error creating Deployment {name}: {response.json()}") # 调用示例 create_deployment("default", "my-deployment", "my-image:latest", 3) ``` 以上代码中,我们定义了一个名为`create_deployment`的函数,它接受Namespace名称、Deployment名称、容器镜像和副本数量作为参数。然后,我们使用这些参数构造出Deployment的定义,并发送POST请求,创建Deployment。 最后,我们可以根据返回的响应状态码来判断Deployment是否成功创建。如果返回状态码为201,表示创建成功,否则表示创建失败,并打印出相应的错误信息。 通过这种方法,我们可以使用Python来基于Kubernetes的RESTful API实现Deployment的创建。这样,我们就可以在运维开发中使用Python来自动化操作Kubernetes集群,提高部署效率和管理灵活性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值