前后端 java 对接海康威视监控-hls实现h5播放

news2024/11/25 4:20:07

海康的获取监控预览流的接口当中支持 rtsp、rtmp、hls等协议。
这篇文章主要是说hls协议的。
贴上海康的开发平台地址,其中有对应的API:海康开发平台

1、java层面代码

这里除了main方法之外,有两个方法,分别是:
1)分页获取监控点资源。 即返回所有的监控点信息。
2)获取监控点预览取流。 即根据监控点的唯一标识查询Url流。前端要根据这个流去展示监控视频。

/**
 * @Author hanmw
 **/
public class Test {

    /**
     * 分页获取监控点资源
     */
    public static String getMonitorPoint() throws Exception {
        ArtemisConfig config = new ArtemisConfig();
        config.setHost("120.48.8.80:447"); // 代理API网关nginx服务器ip端口
        config.setAppKey("22363721");  // 秘钥appkey
        config.setAppSecret("jrrNwKMdccHJVggAfeLR");// 秘钥appSecret
        final String getCamsApi =  "/artemis/api/resource/v1/cameras";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("pageNo", 1);
        jsonObject.put("pageSize", 500);
        Map<String, String> path = new HashMap<String, String>(2) {
            {
                put("https://", getCamsApi);
            }
        };
        return ArtemisHttpUtil.doPostStringArtemis(config, path, jsonObject.toJSONString(), null, null, "application/json");
    }

    /**
     * 获取监控点预览取流
     */
    public static String getMonitorPointPreview() throws Exception {
        ArtemisConfig config = new ArtemisConfig();
        config.setHost("120.48.8.80:447"); // 代理API网关nginx服务器ip端口
        config.setAppKey("22363721");  // 秘钥appkey
        config.setAppSecret("jrrNwKMdccHJVggAfeLR");// 秘钥appSecret
        final String getCamsApi = "/artemis/api/video/v2/cameras/previewURLs";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("cameraIndexCode", "1c9ef71e452241a095d2aaaaf1985af9");
        jsonObject.put("streamType", 1);
        jsonObject.put("protocol", "hls");
        Map<String, String> path = new HashMap<String, String>(2) {
            {
                put("https://", getCamsApi);
            }
        };
        return ArtemisHttpUtil.doPostStringArtemis(config, path, jsonObject.toJSONString(), null, null, "application/json");
    }


    public static void main(String[] args) throws Exception {
        String result = getMonitorPointPreview();
        System.out.println(result);

        JSONObject jsonObject = JSONObject.parseObject(result, JSONObject.class);
        if ("0".equals(jsonObject.get("code").toString()) && "success".equals(jsonObject.get("msg").toString())) {
            String url = jsonObject.getJSONObject("data").get("url").toString();
            System.out.println(url);
        }

    }

第一个方法分页获取监控点资源的返回值 主要是为了第二个方法分页获取监控点资源服务的。
这里我们用的是hls协议,所以可以把streamType传1,取子码流。
transmode 以获取的监控点信息当中的 transType为准,一般都是1 即默认TCP。

在这里插入图片描述

调试的时候记得在工程下面引入海康的lib包(文章结尾有下载地址)
在这里插入图片描述

2、海康和对接方方面

将你的合作方账号中的domainId字段改成外网的就可以。
这部分主要是为了让调接口返回的hls 流url是外网可以访问到的。
比如 http://120.207.8.20:83/openUrl/x3KDmM0/live.m3u8

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

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

参考文章:https://blog.csdn.net/m0_46690280/article/details/120849969

后端lib包和前端html 以供测试。
链接:https://pan.baidu.com/s/1aKvV3BlGyAhOSaXJ8xxXsg
提取码:ghwn

注:下载下来的html文件当中只需要修改这部分,替换为你的 hls 流url就可以。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】一文教你如何使用 Requests 库

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

审视自己再出发,在职读研从人民大学与加拿大女王大学金融硕士项目起航

有人说&#xff0c;人生并非一帆风顺。是的&#xff0c;在人生的道路上&#xff0c;总会出现各种各样的麻烦。或者认真学习不见成效&#xff0c;或是努力工作得不到赏识。人生中最困难的事情就是审视自己&#xff0c;当我们意识到自己需要提升时&#xff0c;往往是拥有强大能量…

【Linux】线程分离和线程互斥

终于到线程互斥了~ 文章目录 前言一、线程分离 如何理解线程库和线程ID二、线程互斥总结 前言 在上一篇文章中我们学习了线程控制&#xff0c;比如创建一个线程&#xff0c;取消一个线程以及等待线程&#xff0c;这篇文章我们讲两个非常重要的概念&#xff0c;一个是线…

CDH 之 hive 升级至 hive-3.1.3 完美踩坑过程

一、准备工作 1.1 前言 这是博主在升级过程中遇到的问题记录&#xff0c;大家不一定遇到过&#xff0c;如果不是 CDH 平台的话&#xff0c;单是 hive 服务升级应该是不会有这些问题的&#xff0c;且升级前博主也参考过几篇相关 CDH 升级 hive 服务的博文&#xff0c;前面的升级…

go语言操作以太坊智能合约

操作中要注意版本问题 geth版本、golang版本等 在remix环境中写好合约后&#xff0c;进行编译得到abi文件 简单举例 Hello.sol合约 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;contract Hello {string Msg;function setMsg(string memory _msg) public{Msg_msg…

SM2密码算法规范介绍

目录 1、SM2的密钥对 1.1、SM2公钥 1.2、SM2私钥 2、密钥数据格式 2.1、 GMT0009 2.2、 GMT0016 2.3、 GMT0018 3、加密数据格式 3.1、GMT0009 3.2、GMT0016 3.3、GMT0018 4、签名数据格式 4.1、GMT0009 4.2、GMT0016 4.3、GMT0018 1、SM2的密钥对 1.1、SM2公钥…

java版DVD影碟片出租赁系统C/S模式 java电影购票系统课程设计

系统采用c/s架构&#xff0c;当然&#xff0c;你可以服务端、客户端都在同一台电脑上运行&#xff1b; 也可以在同一局域网内服务端、客户端在其它不同电脑上运行&#xff1b; 如果你有云服务器&#xff0c;可将Service端代码部署至云服务器上&#xff0c;客户端在任何一台有…

不愧是阿里P8出手的并发编程笔记!颠覆了我以往“正确“的认知

对于一个Java程序员而言&#xff0c;能否熟练掌握并发编程是判断他优秀与否的重要标准之一。因为并发编程是Java语言中最为晦涩的知识点&#xff0c;它涉及操作系统、内存、CPU、编程语言等多方面的基础能力&#xff0c;更为考验一个程序员的内功。 那到底应该怎么学习并发编程…

浅析给水管网动态水力建模数据及其管理

摘要&#xff1a;给水管网在城市生产及生活中发挥着十分重要的作用&#xff0c;所以&#xff0c;保证其正常运行便显得尤为必要了。本文将基于给水管网动态水力建模数据及其管理展开相应的分析&#xff0c;以期促进城市给水管网运行质量的提高&#xff0c;为同行提供一些有益的…

HTML4

前序知识 认识两位先驱 计算机基础知识 计算机俗称电脑&#xff0c;是现代一种用于高速计算的电子计算机器&#xff0c;可以进行数值计算、逻辑计算&#xff0c;还具有存储记忆功能。计算机由 硬件 软件组成 C/S架构与B/S架构 上面提到的应用软件&#xff0c;又分为两大类…

软件测试之登录测试详解

一、功能测试--登录功能性测试用例包括&#xff1a;1.什么都不输入&#xff0c;点击提交按钮&#xff0c;看提示信息。&#xff08;非空检查&#xff09;2.输入已注册的用户名和正确的密码&#xff0c;验证是否登录成功&#xff1b;3.输入已注册的用户名和不正确的密码&#xf…

PerformanceRunner即将发布2023年新版本,具体功能有哪些?

PerformanceRunner(简称PR)是国内专业的支持http、https、websocket、tcp/ip、MQ等各种协议、10万海量并发、可靠的性能测试工具/压力测试工具&#xff0c;降低了应用系统运行风险。 PerformanceRunner即将发布2023年新版本&#xff0c;具体功能有哪些&#xff1f; 1.录制时单机…

【Python入门篇】——Python函数(函数介绍,函数的定义,函数的参数和函数的返回值)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

都2023年了,网络安全还能入门吗?

前言 随着互联网的发展&#xff0c;网络安全逐渐成为重要领域之一。由于网络攻击已成为全球规模的问题&#xff0c;这使得网络安全专业成为各企业的重中之重。在这篇文章中&#xff0c;我们将从网络安全的发展趋势、就业前景和薪资水平方面入手&#xff0c;分析网络安全入门的…

【集群】部署LVS-DR群集

文章目录 一、LVS-DR工作原理1. 数据包流向分析2. DR模式的特点3. ARP 解析问题3.1 问题1&#xff1a;ip地址冲突3.2 问题2&#xff1a;真实服务器的第二次ARP请求3.3 解决ARP的两个问题的设置方法 二、LVS-DR部署过程1. 配置环境2. 部署服务器2.1 环境配置2.2 LVS-DR调度器2.2…

【基础知识】一文看懂深度优先算法和广度优先算法

概览 先上个图 现在我们要访问图中的每个节点&#xff0c;即图的遍历。 图的遍历是指&#xff0c;从给定图中任意指定的顶点&#xff08;称为初始点&#xff09;出发&#xff0c;按照某种搜索方法沿着图的边访问图中的所有顶点&#xff0c;使每个顶点仅被访问一次&#xff…

三、django-vue-admin开源项目二次开发——后端快速实现curd及接口

上一章&#xff1a; 二、django-vue-admin开源项目二次开发——修改默认菜单_做测试的喵酱的博客-CSDN博客 下一章&#xff1a; 一、背景 我想实现接口自动化用例的管理功能。一共涉及到两张表&#xff0c;一张项目表&#xff0c;是所有的项目列表。 一张是case列表&#…

Postgresql关于JSON、JSONB的操作符、处理函数(持续更新)

一、postgresql实用函数 &#xff08;只列举本次用到的函数&#xff0c;其他函数在文章后面有详解&#xff09; 1.1、将jsonb格式的数组中的值展开/分解成单独的数据/对象&#xff1f; SELECT answer_id, jsonb_array_elements(option_ids)::INTEGER AS option_id FROM db_l…

Java HashMap初始化大小设置多少合适

修改公司老代码的时候&#xff0c;发现阿里编码规约插件提示HashMap初始化时尽量指定初始值大小&#xff0c;因为设置合理的初始值可以提升性能&#xff1a; HashMap继承自AbstractMap类&#xff0c;实现了Map、Cloneable、java.io.Serializable接口&#xff0c;是基于散列表实…

Prompt 工程指南(三)—— 高级技术篇之零样本和少样本提示

到目前为止&#xff0c;显而易见的是&#xff0c;改进提示有助于在不同任务上获得更好的结果。这就是提示工程背后的理念和目标。 虽然上篇教程介绍的基本示例已经很有趣&#xff0c;但在接下来的几篇教程中&#xff0c;我们将介绍更高级的 Prompt 提示工程技巧&#xff0c;使…