【操作说明】如何接入美畅8100视频中台?
视频8100中台本质上是一套软件,是可私有化部署的一套软件,可理解为简化版的秀++云平台软件。
中台除了支持直连/主动上报模式接入视频设备外,也支持通过网关汇聚视频,譬如用视频接入网关汇聚设备类视频,用第三方平台网关汇聚平台类视频。
中台自带一套完整WEB界面,满足客户视频预览、回放、云台控制、抓图、自定义组、轮询等基本功能,也提供强大的设备运维能力;支持通过28181协议级联上级平台或者公安平台;提供二次开发接口,方便您的应用二次开发。
1.首先在美畅8100中台中配置->应用管理中设置对应的应用获取应用id和对应密钥
2.代码中配置对应的应用id和密钥
3.通过授权接口获取对应的Token
// 抛出异常 也可以进行捕获异常进行业务处理
public String login() throws Exception {
// 这里把获取到的授权Token 放到了redis中 并且设置过期时间为1天
String token = redisTemplate.opsForValue().get(DemoConstants.VIDEO_CENTER_TOKEN);
if (!StringUtils.isEmpty(token)) {
// 首先查询redis中有没有Token信息 如果有直接进行返回
return token;
}
// 请求获取Token接口进行获取
String sendUrl = videoConfig.getUrl() + "/api/application/getToken";
Map<String, String> param = new HashMap<>();
param.put("appId", videoConfig.getAppId());
param.put("appSecret", videoConfig.getAppSecret());
String response = HttpUtils.doPost(sendUrl, param);
JSONObject responseJson = new JSONObject(response);
JSONObject data = responseJson.getJSONObject("data");
token = data.getStr("accessToken");
// 存入redis中
redisTemplate.opsForValue().set(BdFireSecurityConstants.VIDEO_CENTER_TOKEN, token, 1L, TimeUnit.DAYS);
return token;
}
4.进行新增视频设备
// 设备对象 按照具体的业务进行创建
public ResultEntity saveVideoDevice(Device device) {
try {
// 首先获取token
String token = redisTemplate.opsForValue().get(DemoConstants.VIDEO_CENTER_TOKEN);
if (StringUtils.isEmpty(token)) {
token = login();
}
String sendUrl = videoConfig.getUrl() + "/api/device/add";
Map<String, String> param = new HashMap<>();
// 视频设备参数
param.put("accessToken", token);
param.put("appId", videoConfig.getAppId());
param.put("deviceName", device.getDeviceName());
// 设备
param.put("deviceModelId", device.getDeviceModelId() + "");
// 设备协议 需要从美畅8100中台中获取
param.put("deviceAgreementId", device.getDeviceAgreementId() + "");
// 流媒体服务器id 需要从美畅8100中台中获取
param.put("hardwareServerId", device.getHardwareServerId() + "");
param.put("devSerialNo", device.getDevSerialNo());
param.put("ip", device.getIp());
param.put("port", device.getPort() == null ? "0" : device.getPort() + "");
param.put("username", device.getUsername());
param.put("password", device.getPassword());
param.put("remark", "");
// 视频通道参数
List<DeviceChannel> deviceChannelList = device.getDeviceChannelList();
if (!CollectionUtils.isEmpty(deviceChannelList)) {
JSONArray jsonArray = new JSONArray();
for (DeviceChannel deviceChannel : deviceChannelList) {
JSONObject obj = new JSONObject();
obj.putOpt("channelName", deviceChannel.getChannelName());
obj.putOpt("channelIndex", deviceChannel.getChannelIndex());
obj.putOpt("channelNum", "");
obj.putOpt("areaId", "");
obj.putOpt("location", deviceChannel.getDetailLocation());
obj.putOpt("deviceChannelGroupId", "");
obj.putOpt("hasPtz", "1");
obj.putOpt("status", "1");
jsonArray.add(obj);
}
param.put("deviceChannelList", jsonArray.toString());
}
String response = HttpUtils.doPost(sendUrl, param);
JSONObject obj = new JSONObject(response);
if (0 == obj.getInt("code")) {
// 获取返回值 业务系统需要自己保存中台的设备id和通道id
return ResultEntity.data(obj.getStr("data"));
}
return ResultEntity.fail("新增设备异常");
} catch (Exception e) {
log.error("新增设备异常{}", e.getMessage());
return ResultEntity.fail("新增设备异常");
}
}
5.新增完成后等待底层服务进行设备上线,上线完成后可调用获取实际播放地址
// 获取实播地址 参数为 视频通道id和码流
public JSONObject getRealPlayUrl(String deviceChannelId, String streamCode) throws Exception {
String token = redisTemplate.opsForValue().get(DemoConstants.VIDEO_CENTER_TOKEN);
if (StringUtils.isEmpty(token)) {
token = login();
}
String sendUrl = videoConfig.getUrl() + "/api/deviceChannel/getRealPlayUrl";
Map<String, String> param = new HashMap<>();
param.put("accessToken", token);
param.put("appId", videoConfig.getAppId());
param.put("deviceChannelId", deviceChannelId);
param.put("streamCode", streamCode);
String response = HttpUtils.doPost(sendUrl, param);
JSONObject obj = new JSONObject(response);
return obj.getJSONObject("data");
}
6.获取实播地址后可在前端进行展示具体展示效果为
——————————————————————————————————————————————————————————————————————————————————————————————————————
秀++视频开放平台(www.showplusplus.cn)专注于音视频信号的接入、管理及AI集成,由杭州美畅物联技术有限公司精心打造,通过提供云、中台、边、旁路、端等一系列产品,为客户提供视频能力底座支撑以及全栈式解决方案。
视频开发,就找秀++!