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

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

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

在这里插入图片描述
步骤二:获取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();
		
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值