【操作说明】如何接入美畅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集成,由杭州美畅物联技术有限公司精心打造,通过提供云、中台、边、旁路、端等一系列产品,为客户提供视频能力底座支撑以及全栈式解决方案。

视频开发,就找秀++!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张晓峰---新征程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值