海康威视H5无插件方式显示WSS协议的视频的笔记

2024-03-13 22:12

本文主要是介绍海康威视H5无插件方式显示WSS协议的视频的笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于要在麒麟桌面系统的浏览器也能显示视频,以前的插件方式就不行了。

一、从官网下载文档和demo

打开官网https://open.hikvision.com/download/5c67f1e2f05948198c909700?type=10
下载H5开发文件和demo

二、放入我的vue2的项目中

把demo中的相关文件复制到我的public的utils目录下,同时在src下的utils目录也放一份h5player.min.js

三、在index.html中引入

四、在显示视频的vue组件中引入

并加入div
<div id="player" style="width: 100%; height: 700px;"></div>

五、这是我的部分代码片段

注意其中的szBasePath路径要写正确,为相对路径,对应src下的utils里的

	   //初始化播放器initPlayer () {this.player = new window.JSPlugin({// 需要英文字母开头 必填szId: 'player',// 必填,引用H5player.min.js的js相对路径szBasePath: '../../../utils',// 当容器div#play_window有固定宽高时,可不传iWidth和iHeight,窗口大小将自适应容器宽高iWidth: 600,iHeight: 400,// 分屏播放,默认最大分屏4*4iMaxSplit: 16,iCurrentSplit: 2,// 样式oStyle: {border: '#343434',borderSelect: '#FFCC00',background: '#000'}})},
/*** 播放*/play(index, cameraIndexCode) {const _this = thislet params = {cameraIndexCode: cameraIndexCode,protocol: 'wss'}let preUrl = ''const loading = this.$loading({ lock: true });videoApi.getPreviewURL(params).then(res => {if (!res) {this.$message.error('获取取流地址失败');return;}preUrl = res;const param = {playURL: preUrl,// 1:高级模式  0:普通模式,高级模式支持所以mode: 1//1}// 索引默认0if (!index) {index = 0}_this.player.JS_Play(preUrl, param, index).then(() => {this.curVideoWindowIndex = indexloading.close();console.log('播放成功')},(err) => {loading.close();console.log('播放失败'+JSON.stringify(err))})}).catch((e) => {loading.close();this.$message.error('未获取到相关信息。'+e.message);return '';});},/* 回放 */playback(index, cameraIndexCode, beginTime, endTime) {let playURL = "";let beginStr = this.$moment(beginTime).format('YYYY-MM-DDTHH:mm:ss.SSS[Z]');let endStr = this.$moment(endTime).format('YYYY-MM-DDTHH:mm:ss.SSS[Z]');let params = {cameraIndexCode: cameraIndexCode,protocol: 'wss',beginTime: beginStr,endTime: endStr}const loading = this.$loading({ lock: true });videoApi.getPlaybackData(params).then(res => {if(!res || !res.url){this.$message.error('数据不存在');return}playURL = res.urllet mode = 1let d1 = this.$moment(beginTime).format('YYYY-MM-DDTHH:mm:ss[Z]');let d2 = this.$moment(endTime).format('YYYY-MM-DDTHH:mm:ss[Z]');this.player.JS_Play(playURL, { playURL, mode }, index, d1, d2).then(() => {this.curVideoWindowIndex = indexloading.close();console.log('playbackStart success')},e => { loading.close();console.error(e) })}).catch((e) => {loading.close();this.$message.error('未获取到相关信息。'+e.message);return '';});},

六、后端部分JAVA代码

可先参考下载的JAVA代码

@Data
public class HaiKangSearchDTO {public String cameraIndexCode;public String protocol;@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "GMT+8")@ApiModelProperty("回放查询起始时间")public Date beginTime;@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "GMT+8")@ApiModelProperty("回放查询结束时间")public Date endTime;
}
//请求回放视频的相关信息
ArtemisConfig config = new ArtemisConfig();config.setHost(outerVideoConfig.getIp()+":"+outerVideoConfig.getPort()); // 代理API网关nginx服务器ip端口config.setAppKey(outerVideoConfig.getAppkey());config.setAppSecret(outerVideoConfig.getSecret());final String getCamsApi = ARTEMIS_PATH + "/api/video/v2/cameras/playbackURLs";Map<String, String> paramMap = new HashMap<String, String>();paramMap.put("cameraIndexCode", dto.getCameraIndexCode());paramMap.put("recordLocation", "1");paramMap.put("transmode", "1");paramMap.put("protocol", dto.getProtocol());paramMap.put("beginTime", beginTimeString);paramMap.put("endTime", endTimeString);String body = JSON.toJSON(paramMap).toString();Map<String, String> path = new HashMap<String, String>(2) {{put("https://", getCamsApi);}};String resultStr = ArtemisHttpUtil.doPostStringArtemis(config, path, body, null, null, "application/json");

七、其它

注意,因为我的系统是https的,所以请求的protocol为wss,如何海康的请求地址是https但却是IP地址,而不是域名形式,则不能显示视频。需要手动在麒麟系统的奇安信浏览器导入海康的证书。

这篇关于海康威视H5无插件方式显示WSS协议的视频的笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/806355

相关文章

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us

SpringBoot操作MaxComputer方式(保姆级教程)

《SpringBoot操作MaxComputer方式(保姆级教程)》:本文主要介绍SpringBoot操作MaxComputer方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录引言uqNqjoe一、引入依赖二、配置文件 application.properties(信息用自己

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

Go 1.23中Timer无buffer的实现方式详解

《Go1.23中Timer无buffer的实现方式详解》在Go1.23中,Timer的实现通常是通过time包提供的time.Timer类型来实现的,本文主要介绍了Go1.23中Timer无buff... 目录Timer 的基本实现无缓冲区的实现自定义无缓冲 Timer 实现更复杂的 Timer 实现总结在

nginx upstream六种方式分配小结

《nginxupstream六种方式分配小结》本文主要介绍了nginxupstream六种方式分配小结,包括轮询、加权轮询、IP哈希、公平轮询、URL哈希和备份服务器,具有一定的参考价格,感兴趣的可... 目录1 轮询(默认)2 weight3 ip_hash4 fair(第三方)5 url_hash(第三