对接海康威视监控-hls实现h5播放

前戏

活干着干着突然老大丢给我一个css文件,说是改吧成Java的

public class OnLineVideoController {


    private static String appkey = "xx";
    private static String secret = "xxx";
    private static String ip = "36.26.24.126";
    private static int port = 4443;

    //分页获取监控点资源
    private static String cameras = "/artemis/api/resource/v1/cameras";
    //获取监控点预览取流URL
    private static String previewURLs = "/artemis/api/video/v1/cameras/previewURLs";


    /**
     * @description json中传入PageSize,和PageIndex 大小和页数 来获取列表数
     */
    @ApiOperation(value = "获取摄像头列表")
    @RequestMapping(value = "/queryList", method = RequestMethod.POST)
    public String Cameras(@RequestBody JSONObject requestval) {

        int pagesize = requestval.getInteger("pageSize");
        if (pagesize == 0) pagesize = 10;
        int pageindex = requestval.getInteger("pageIndex");
        if (pageindex == 0) pageindex = 1;

        Map<String, String> path = new HashMap<String, String>(2) {
            {
                put("https://", cameras);//根据现场环境部署确认是http还是https
            }
        };
        ArtemisConfig artemisConfig = new ArtemisConfig();
        artemisConfig.setHost(ip + ":" + port);
        artemisConfig.setAppKey(appkey);
        artemisConfig.setAppSecret(secret);

        String contentType = "application/json";
        JSONObject jsonBody = new JSONObject();
        jsonBody.put("pageSize", pagesize);
        jsonBody.put("pageNo", pageindex);
        String body = jsonBody.toJSONString();
        /**
         * STEP6:调用接口
         */
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数
/*        JSONObject object = JSONObject.parseObject(result);
        JSONObject data = (JSONObject) object.get("data");
        JSONArray dataList = (JSONArray) data.get("list");
      //  List<String> cameraCodeList = new ArrayList<>();
        // 获取视频列表
        for (Object obj : dataList) {
            System.out.println(obj);
            // cameraCodeList.add(((JSONObject) obj).getString("cameraIndexCode"));
        }*/


        return result;
    }

    /**
     * @description 根据json中传入的cameraIndexCode,获取url
     */
    @ApiOperation(value = "获取摄像头访问地址")
    @RequestMapping(value = "/queryUrl", method = RequestMethod.POST)
    public String PreviewURLs(@RequestParam String cameraIndexCode) {
        Map<String, String> path = new HashMap<String, String>(2) {
            {
                put("https://", previewURLs);//根据现场环境部署确认是http还是https
            }
        };
        ArtemisConfig artemisConfig = new ArtemisConfig();
        artemisConfig.setHost(ip + ":" + port);
        artemisConfig.setAppKey(appkey);
        artemisConfig.setAppSecret(secret);

        String contentType = "application/json";

        String body = "{\"cameraIndexCode\":\"" + cameraIndexCode + "\",\"streamType\":1,\"protocol\":\"hls\",\"transmode\": 1}";
        //  String body = "{\"cameraIndexCode\":\"" + cameraIndexCode + "\",\"streamType\":1,\"protocol\":\"rtmp\",\"transmode\": 1}";
        //  String body = "{\"cameraIndexCode\":\"" + cameraIndexCode + "\",\"streamType\":0,\"protocol\":\"rtsp\",\"transmode\": 1,\"expand\":\"streamform=rtp\"}";
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数
        return result;
    }


    public static void main(String[] args) {
        String s = new OnLineVideoController().PreviewURLs("xx");
        System.out.println(s);
    }

}

改完之后获取到的url地址是 http://10.20.5.10:83/openUrl/xxxx/live.m3u8

然后发现可以获取各种格式的流地址
rtmp://10.20.5.10:1935/live/openUrl/zrPbrXi
rtsp://10.20.5.10:554/openUrl/A0HzEQM
内网地址无法访问。

就给了个css代码,没了僵住。

联系海康和对接方

海康那得到的结果是需要能访问10.20.5.10:83内网的机器,访问http://10.20.5.10:8001/center
将你的合作方账号中的domainId字段改成外网的就可以
在这里插入图片描述
在这里插入图片描述

大概配置这些,然后下面就全部打开就好
在这里插入图片描述

结果对接方说打开是下面这样的,找不到配置的地方。。。
在这里插入图片描述
我也是找了一圈没找到,后来海康那点了记下进去了,还真有。
直接贴连接
http://10.20.5.10:9017/artemis-web/consumer/index
然后按照上面的访问就可以

最后一步配置格式–成功

用新注册的账号密码,去获取流地址,获取到的是
http://36.26.24.126:83/openUrl/xx/live.m3u8
这种可以外网访问的。

这个时候要选择播放格式了。hls是可以直接h5解析的,其他格式要自己转码比较麻烦,我采用的是hls格式的

hls 协议支持的码流编码格式是 h264,音频格式是 aac(前端是复合流时),需要注意前 端的码流编码格式,要检查下前端设备上的编码格式和音频格式是否符合,编码格式是不是h264,音频格式是不是aac,如果不需要音频,可以把视频类型由复合流改为视频流

去找对接方登陆设备的网址,设置这两个格式在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

改完格式后,把获取到的流放到html中即可

附上对接文档和html

链接:https://pan.baidu.com/s/1f8UKS2QLOjh0bx2NOFOmDA
提取码:v126

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值