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

视频开发,就找秀++!

posted @ 2022-11-09 11:26  美畅物联--张晓峰  阅读(78)  评论(0编辑  收藏  举报