1.接新的開放平臺第一件事當(dāng)然是注冊咯
點擊下方鏈接注冊(略微有點像打廣告,但是我沒有!)
螢石開放平臺
2.添加設(shè)備
我這邊是通過序列號添加的設(shè)備
我的資源->設(shè)備列表->添加設(shè)備
序列號與驗證碼都在攝像機機身上,找一下就能找到
這邊需要注意,一個設(shè)備只能被一個賬號綁定
綁定成功后就能看見一條設(shè)備信息
測試設(shè)備監(jiān)控是否正常
如下我們可以看到一個直播地址跟一個監(jiān)控地址
監(jiān)控地址是預(yù)覽攝像頭情況的,這邊就不做測試,反正能看
直播地址我們點進去的時候會可能會提示攝像頭已經(jīng)加密(還是錄像加密忘記了),根據(jù)提示信息把加密關(guān)閉就好了,就能看到4個直播地址,這個地址就是我目前的終極目標(biāo),需要提供給前端大佬播放視頻使用.點擊測試播放可以測試攝像頭是否正常,我這邊遇到一個問題就是使用http地址的時候只能播放兩秒就卡主了,被迫轉(zhuǎn)向RTMP地址,是流暢的,比較懶后期有需要在解決~
調(diào)用螢石接口獲取直播地址
當(dāng)然我的終極目標(biāo)還是得用我深愛的java獲取到直播地址,不得不說,螢石這個開放平臺的API,太好使了,無腦調(diào)用就行.
螢石API地址
這邊我們先獲取一下我們的必需品:密鑰
在 我的賬號->應(yīng)用信息下
以下是我今天寫的demo
public class HaiKangTest {
private static String appKey = "";
private static String appSecret = "";
private static String accessToken = "";
public static void main(String[] args) {
// addV();
// capture();
// videoList();
off();
}
private static void off(){
String url = "https://open.ys7.com/api/lapp/device/encrypt/off";
Map<String, String> map = new HashMap<>();
map.put("accessToken", accessToken);
// 設(shè)備序列號
map.put("deviceSerial", "deviceSerial");
// 通道
map.put("validateCode", "validateCode");
String doPost = HttpPostUtil.doPost(url, map);
JSONObject jsonObject = JSONArray.parseObject(doPost);
System.out.println(doPost);
}
/**
* 直播地址獲取
*/
private static void videoList(){
String url = "https://open.ys7.com/api/lapp/live/video/list";
Map<String, String> map = new HashMap<>();
map.put("accessToken", accessToken);
map.put("pageStart", "0");
map.put("pageSize", "10");
String doPost = HttpPostUtil.doPost(url, map);
JSONObject jsonObject = JSONArray.parseObject(doPost);
System.out.println(doPost);
}
/**
* 抓拍
* 螢石圖片只保存2個小時,需后期保存到自己的服務(wù)器上
* 請勿頻繁調(diào)用近尚,建議每個攝像頭調(diào)用的間隔4s以上
*/
private static void capture(){
String url = "https://open.ys7.com/api/lapp/device/capture";
Map<String, String> map = new HashMap<>();
map.put("accessToken", accessToken);
// 設(shè)備序列號
map.put("deviceSerial", "deviceSerial");
// 通道
map.put("channelNo", "1");
String doPost = HttpPostUtil.doPost(url, map);
JSONObject jsonObject = JSONArray.parseObject(doPost);
Object data = jsonObject.get("data");
Object code = jsonObject.get("code");
Object msg = jsonObject.get("msg");
System.out.println(data);
}
/**
* 刪除設(shè)備
*/
private static void delete(){
// 獲取 AccessToken
String url = "https://open.ys7.com/api/lapp/device/delete";
Map<String, String> map = new HashMap<>();
map.put("accessToken", accessToken);
// 設(shè)備序列號
map.put("deviceSerial", "deviceSerial");
String doPost = HttpPostUtil.doPost(url, map);
JSONObject jsonObject = JSONArray.parseObject(doPost);
Object code = jsonObject.get("code");
Object msg = jsonObject.get("msg");
if (!code.equals("200")){
System.out.println(msg);
}
if (code.equals("200")){
System.out.println("設(shè)備刪除成功");
}
System.out.println(doPost);
}
/**
* 添加設(shè)備
*/
private static void addV(){
// 獲取 AccessToken
String url = "https://open.ys7.com/api/lapp/device/add";
Map<String, String> map = new HashMap<>();
map.put("accessToken", accessToken);
// 設(shè)備序列號
map.put("deviceSerial", "deviceSerial");
// 設(shè)備驗證碼
map.put("validateCode", "validateCode");
String doPost = HttpPostUtil.doPost(url, map);
JSONObject jsonObject = JSONArray.parseObject(doPost);
Object code = jsonObject.get("code");
Object msg = jsonObject.get("msg");
if (!code.equals("200")){
System.out.println(msg);
}
if (code.equals("200")){
System.out.println("設(shè)備添加成功");
}
System.out.println(doPost);
}
/**
*
* 獲取并解析token
* @return
*/
private static String getAccessToken(){
// 獲取 AccessToken
String url = "https://open.ys7.com/api/lapp/token/get";
Map<String, String> map = new HashMap<>();
map.put("appKey", appKey);
map.put("appSecret", appSecret);
String doPost = HttpPostUtil.doPost(url, map);
JSONObject jsonObject = JSONArray.parseObject(doPost);
Object data = jsonObject.get("data");
Object code = jsonObject.get("code");
Object msg = jsonObject.get("msg");
JSONObject object = JSONArray.parseObject(data.toString());
Object accessToken = object.get("accessToken");
Object expireTime = object.get("expireTime");
return accessToken.toString();
}