海康威视4G球机对接萤石云平台实现实时预览、云台控制

您所在的位置:网站首页 云台控制怎么操作 海康威视4G球机对接萤石云平台实现实时预览、云台控制

海康威视4G球机对接萤石云平台实现实时预览、云台控制

2024-07-13 05:24:10| 来源: 网络整理| 查看: 265

前言:上一篇博文已经分享了如何获取直播列表,本篇博文是在上一篇博文的基础上做了完善,实现了实时预览和云台控制。因此,部分代码会有重复。

步骤一:在 萤石云开发平台 注册开发者并添加球机设备

在这里插入图片描述 步骤二:获取accessToken和直播列表请参考上一篇博文 海康威视4G球机对接萤石云平台获取直播视频列表

步骤三:云台控制

后端代码:action类

package com.jk.action; import com.jk.comm.action.BaseAction; import com.jiankong.util.HttpRequest; import com.jiankong.util.TokenThread; public class JianKongAction extends BaseAction{ private String device; //设备序列号,存在英文字母的设备序列号,字母需为大写 private Integer channelNo; //通道号 private Integer direction; //操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 private Integer speed; //云台速度:0-慢,1-适中,2-快,海康设备参数不可为0 public String getDevice() { return device; } public void setDevice(String device) { this.device = device; } public Integer getChannelNo() { return channelNo; } public void setChannelNo(Integer channelNo) { this.channelNo = channelNo; } public Integer getDirection() { return direction; } public void setDirection(Integer direction) { this.direction = direction; } public Integer getSpeed() { return speed; } public void setSpeed(Integer speed) { this.speed = speed; } /** * */ private static final long serialVersionUID = 1L; /** * 获取直播列表 */ public void getList(){ String accessToken = MyHttpRequest.getAccessToken("https://open.ys7.com/api/lapp/token/get?appKey=xxxxxxxxxxxxxxxx&appSecret=xxxxxxxxxxxxxxxxx"); //获取直播列表 String list = HttpRequest.getList("https://open.ys7.com/api/lapp/live/video/list?accessToken="+accessToken+"&pageStart=0&pageSize=3"); printJsonString(list); } /** * 云台控制 * 开始云台控制之后必须先调用停止云台控制接口才能进行其他操作,包括其他方向的云台转动 */ public void setCloudControl(){ String accessToken = MyHttpRequest.getAccessToken("https://open.ys7.com/api/lapp/token/get?appKey=xxxxxxxxxxxxxxxx&appSecret=xxxxxxxxxxxxxxxxx"); String start = "accessToken="+accessToken+"&deviceSerial="+device+"&channelNo="+channelNo+"&direction="+direction+"&speed="+speed; String stop = "accessToken="+accessToken+"&deviceSerial="+device+"&channelNo="+channelNo+"&direction="+direction; jsonMsg = HttpRequest.setStartCloudControl("https://open.ys7.com/api/lapp/device/ptz/start?"+start); if(jsonMsg.equals("开始云台控制成功")){ HttpRequest.setStopCloudControl("https://open.ys7.com/api/lapp/device/ptz/stop?"+stop); } printJsonString(jsonMsg); } }

action父类:

public class BaseAction extends ActionSupport { protected int page = 1; //当前第几页 protected int rows = 10; // 每页数量 protected String jsonMsg = ""; /** * 打印Json字符串返回给客户 * @param jsonString * @Description: */ protected void printJsonString ( String jsonString ) { PrintWriter out = null; try { HttpServletResponse response = getResponse(); response.setCharacterEncoding ( "UTF-8" ); response.setContentType("text/html;charset=UTF-8"); out = response.getWriter (); out.print ( jsonString ); } catch (IOException e) { e.printStackTrace (); } finally { out.close (); } } }

util类

package com.jiankong.util; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.params.ClientPNames; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; public class HttpRequest { /** * 获取监控应用的 accessToken * @param url * @return */ public static String getAccessToken(String url) { DefaultHttpClient client = new DefaultHttpClient(); client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS,true); HttpPost httpost = getPostMethod(url); String accessToken = ""; try { try { HttpResponse response = client.execute(httpost); String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println("jsonStr:"+jsonStr); JSONObject jsStr = JSONObject.fromObject(jsonStr); System.out.println("jsStr:"+jsStr); String code = String.valueOf(jsStr.get("code")); if(code.equals("200")){ String data = jsStr.getString("data"); JSONObject dataJson = JSONObject.fromObject(data); accessToken = dataJson.getString("accessToken"); return accessToken; } } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } finally { if(!httpost.isAborted()){ httpost.abort(); } client.getConnectionManager().shutdown(); } return accessToken; } /** * 获取直播视频列表 * @param url * @return */ public static String getList(String url) { DefaultHttpClient client = new DefaultHttpClient(); client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS,true); HttpPost httpost = getPostMethod(url); String list = ""; try { try { HttpResponse response = client.execute(httpost); String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println("jsonStr:"+jsonStr); JSONObject jsStr = JSONObject.fromObject(jsonStr); String code = jsStr.getString("code"); if(code.equals("200")){ list = jsStr.getString("data"); return list; }else if(code.equals("10002")){ //accessToken过期或异常 } } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } finally { if(!httpost.isAborted()){ httpost.abort(); } client.getConnectionManager().shutdown(); } return list; } public static String setStartCloudControl(String url){ DefaultHttpClient client = new DefaultHttpClient(); client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS,true); HttpPost httpost = getPostMethod(url); String msg = ""; try { try { HttpResponse response = client.execute(httpost); String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println("jsonStr:"+jsonStr); JSONObject jsStr = JSONObject.fromObject(jsonStr); String code = jsStr.getString("code"); if(code.equals("200")){ msg = "开始云台控制成功"; }else{ msg = "开始云台控制失败"; } } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } finally { if(!httpost.isAborted()){ httpost.abort(); } client.getConnectionManager().shutdown(); } return msg; } public static String setStopCloudControl(String url){ DefaultHttpClient client = new DefaultHttpClient(); client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS,true); HttpPost httpost = getPostMethod(url); String msg = ""; try { try { HttpResponse response = client.execute(httpost); String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println("jsonStr:"+jsonStr); JSONObject jsStr = JSONObject.fromObject(jsonStr); String code = jsStr.getString("code"); if(code.equals("200")){ msg = "停止云台控制成功"; }else{ msg = "停止云台控制失败"; } } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } finally { if(!httpost.isAborted()){ httpost.abort(); } client.getConnectionManager().shutdown(); } return msg; } /** * 模拟浏览器post提交 * * @param url * @return */ public static HttpPost getPostMethod(String url) { HttpPost pmethod = new HttpPost(url); // 设置响应头信息 pmethod.addHeader("Connection", "keep-alive"); pmethod.addHeader("Accept", "*/*"); pmethod.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); pmethod.addHeader("Host", "open.ys7.com"); pmethod.addHeader("X-Requested-With", "XMLHttpRequest"); pmethod.addHeader("Cache-Control", "max-age=0"); pmethod.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) "); return pmethod; } }

前端页面:

监控网点 body{margin:0;} #myPlayer{max-width: 600px;width: 100%;display: inline;} #myPlayer1{max-width: 600px;width: 100%;display: inline;} #myPlayer2{max-width: 600px;width: 100%;display: inline;} .num{ max-width: 600px; display: inline; } .head{ display: inline-grid; width: 600px; } 1号监控点 2号监控点 3号监控点 云台控制 云台速度 适中 快 监控点 $.post('jiankong_getList.action','',function(res){ if(res.length>0){ var myJkd = ""; for(var i=0;i


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭