静态HTML5接入海康websocket视频流|海康ws视频流接入H5页面

news2024/11/18 9:29:47

引言

海康提供了vue实现插件播放视频的实例,实现取流失败了之后重新获取新的流播放视频,但是在很多情况下需要在静态HTML项目中进行视频的播放,于是引出此文。

海康开放平台SDK下载地址:https://open.hikvision.com/download/5c67f1e2f05948198c909700?type=20
不想登录的可以在这里下载:https://download.csdn.net/download/zgsdzczh/88987690

一、项目结构

在这里插入图片描述

二、项目可信代码块

<a-locale-provider :locale="zh_CN">
		<a-row>
			<a-col :span="24" :md="12">
				<a-affix :offset-top="8">
					<div id="player"></div>
				</a-affix>
				<a-form-item>
					分屏
					<a-radio-group v-model="splitNum" @change="arrangeWindow">
						<a-radio-button :value="1">1x1</a-radio-button>
						<a-radio-button :value="2">2x2</a-radio-button>
						<a-radio-button :value="3" v-show="!isMoveDevice">3x3</a-radio-button>
						<a-radio-button :value="4" v-show="!isMoveDevice">4x4</a-radio-button>
					</a-radio-group>
					<a-button @click="wholeFullScreen" v-show="!isMoveDevice">整体全屏</a-button>
				</a-form-item>
			</a-col>
			<a-col :span="24" :md="12">
				<div class="actions">
					<a-tabs v-model="tabActive">
						<a-tab-pane key="mse" tab="普通模式" :disabled="!mseSupport"></a-tab-pane>
					</a-tabs>

					<a-form :label-col="labelCol" :wrapper-col="wrapperCol" v-show="tabActive !== 'log'">
						<a-form-item label="预览URL">
							<a-input v-model="urls.realplay"></a-input>
						</a-form-item>
						<a-form-item label="预览&对讲">
							<a-button id="btn-realplay" @click="realplay">开始预览</a-button>
							<a-button id="btn-realplay-stop" @click="stopPlay">停止预览</a-button>
						</a-form-item>
					</a-form>
				</div>
			</a-col>
		</a-row>
	</a-locale-provider>

JS部分:

<script>
	const { LocaleProvider, locales } = window.antd
	moment.locale('./static/js/zh-cn.js')

	const IS_MOVE_DEVICE = document.body.clientWidth < 992 // 是否移动设备
	const MSE_IS_SUPPORT = !!window.MediaSource // 是否支持mse

	const app = new Vue({
		el: '#app',
		// components: { Log },
		data() {
			return {
				zh_CN: locales.zh_CN,
				isMoveDevice: IS_MOVE_DEVICE,
				player: null,
				splitNum: IS_MOVE_DEVICE ? 1 : 2,
				mseSupport: MSE_IS_SUPPORT,
				tabActive: MSE_IS_SUPPORT ? 'mse' : 'decoder',
				labelCol: { span: 5 },
				wrapperCol: { span: 18 },
				urls: {
					realplay: 'ws://10.157.99.39:559/openUrl/HcLPta8',
				},
				muted: true,
				volume: 50,
			}
		},
		computed: {
			mode: function() {
				return this.tabActive === 'mse' ? 0 : 1
			}
		},
		methods: {
			init() {
				// 设置播放容器的宽高并监听窗口大小变化
				window.addEventListener('resize', () => {
					this.player.JS_Resize()
				})

			},
			createPlayer() {
				this.player = new window.JSPlugin({
					szId: 'player',
					szBasePath: "./",
					iMaxSplit: 4,
					iCurrentSplit: IS_MOVE_DEVICE ? 1 : 2,
					openDebug: true,
					oStyle: {
						borderSelect: IS_MOVE_DEVICE ? '#000' : '#FFCC00',
					}
				})
			},
			arrangeWindow() {
				let splitNum = this.splitNum
				this.player.JS_ArrangeWindow(splitNum).then(
						() => { console.log(`arrangeWindow to ${splitNum}x${splitNum} success`) },
						e => { console.error(e) }
				)
			},
			wholeFullScreen() {
				this.player.JS_FullScreenDisplay(true).then(
						() => { console.log(`wholeFullScreen success`) },
						e => { console.error(e) }
				)
			},
			/* 预览&对讲 */
			realplay() {
				let { player, mode, urls } = this,
						index = player.currentWindowIndex,
						playURL = urls.realplay

				player.JS_Play(playURL, { playURL, mode }, index).then(
						() => { console.log('realplay success') },
						e => { console.error(e) }
				)
			},
		},
		mounted() {
			this.$el.style.setProperty('display', 'block')
			this.init()
			this.createPlayer()
			this.realplay();
		}
	})
</script>

三、查看效果

在这里插入图片描述
由于本项目是静态H5的,所以可以直接打开html文件进行预览,效果图如下:
在这里插入图片描述

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

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

相关文章

Python使用 k 均值对遥感图像进行语义分割

本篇文章介绍K-means语义分割来估计 2000 年至 2023 年咸海水面的变化 让我们先看一下本教程中将使用的数据。这是同一地区的两张 RGB 图像,间隔 23 年,但很明显地表特性和大气条件(云、气溶胶等)不同。这就是为什么我决定训练两个独立的 k-Means 模型,每个图像一个。 首…

vue3 element plus 上传下载

文章目录 上传下载 上传 /* html */ <el-upload v-model"fileId" class"avatar-uploader" ref"exampleUploadRef" :file-list"fileList" :show-file-list"false" action"/ys-three-year/ThreeReport/uploadFile&q…

d3dcompiler_47.dll是什么,软件游戏报错d3dcompiler_47.dll缺失怎么修复?

当你在运行某些程序或游戏时出现"找不到d3dcompiler_47.dll"的错误提示时&#xff0c;不要慌张&#xff01;这是一个常见的问题&#xff0c;但有多种有效的解决办法可以帮助你修复这个文件丢失的情况。今天就来教大家d3dcompiler_47.dll文件丢失的多种解决办法。 一.…

旅游管理系统|基于SpringBoot+ Mysql+Java+Tomcat技术的旅游管理系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 用户功能 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 …

【LeetCode每日一题】310. 最小高度树

文章目录 [310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/)思路&#xff1a;拓扑排序代码&#xff1a; 310. 最小高度树 思路&#xff1a;拓扑排序 首先判断节点数量n&#xff0c;如果只有一个节点&#xff0c;则直接返回该节点作为最小高度树的根节点…

【学习心得】Python数据分析的基本思路

一、什么是数据分析&#xff1f; 数据分析是指通过一些方法&#xff0c;对一些数据进行分析&#xff0c;从中提取出有价值的信息并形成结论进行展示。 &#xff08;1&#xff09;一些方法 数学和统计学方法&#xff1a;例如回归分析、聚类分析、主成分分析、时间序列分析等&a…

软件测试面试之支付系统测试

本篇文章主要从支付系统设计入手进行测试&#xff0c;针对界面功能测试容易忽略但是又十分重要的逻辑。关于支付密码、验证码、银行卡绑定等等能从界面入手测试的&#xff0c;下文也不讲述&#xff0c;如果有兴趣可以留言&#xff0c;后面整理。 1、APP支付结果查询是否合理 假…

广州地铁线路规划

使用python实现后端功能&#xff0c;由于地铁图需要进行展示&#xff0c;svg图需要花费比较多的时间&#xff0c;这里使用了 MetroFlow 库构建的地铁地图编辑器&#xff0c;可以在画布上构建矢量图&#xff0c;实现站点路线的创建。 用法&#xff1a; 打包好后完整目录&#x…

物联网数据驾驶舱

在信息化时代&#xff0c;数据已经成为驱动企业发展的核心动力。特别是在物联网领域&#xff0c;海量数据的实时采集、分析和监控&#xff0c;对于企业的运营决策和业务优化具有至关重要的作用。HiWoo Cloud作为领先的物联网云平台&#xff0c;其数据监控功能以“物联网数据驾驶…

2024年,AI赚钱的十大版块优势解析与适合人群

随着科技的飞速发展,AI技术正逐渐渗透到我们生活的方方面面。2024年,将是AI赚钱的黄金时期。那么,如何利用AI技术实现财富增长呢?本文将为您详细解析十大赚钱版块的优势及适合从事的人群,并通过一个实际案例,带您领略AI赚钱的无限魅力。 一、运用AI写作工具提供写作服务…

每日五道java面试题之mybatis篇(四)

目录&#xff1a; 第一题. 映射器#{}和${}的区别第二题. 模糊查询like语句该怎么写?第三题. 在mapper中如何传递多个参数?第四题. Mybatis如何执行批量操作第五题 MyBatis框架适用场景 第一题. 映射器#{}和${}的区别 #{}是占位符&#xff0c;预编译处理&#xff1b;${}是拼接…

自动化部署fuel环境

自动化部署fuel环境流程图 自定义NAT网络 一、在物理机上面配置 &#xff08;1&#xff09;创建名为“management”的NAT网络 # vim /usr/share/libvirt/networks/management.xml <network> <name>management</name> <bridge name"virbr1"/&…

容器部署对比:通用容器部署 vs 使用腾讯云容器镜像服务(TCR)部署 Stable Diffusion

目录 引言1 通用容器部署的主要步骤1.1 准备环境1.2 构建 Docker 镜像1.3 上传镜像1.4 部署容器1.5 配置网络1.6 监控和维护 2 使用腾讯云容器镜像服务&#xff08;TCR&#xff09;部署的主要步骤2.1 下载 Stable Diffusion web UI 代码2.2 制作 Docker 镜像2.3 上传镜像到 TCR…

仰卧起坐计数,YOLOV8POSE

仰卧起坐计数&#xff0c;YOLOV8POSE 通过计算膝盖、腰部、肩部的夹角&#xff0c;计算仰卧起坐的次数

C语言自定义类型:枚举(C语言进阶)

目录 前言 1、枚举类型定义 2、枚举的优点 3、枚举的使用 结语 前言 本篇文章讲解C语言自定义类型&#xff1a;枚举类型。 枚举顾名思义就是一一列举&#xff0c;把可能的值一一列举。像一周的周一到周日可以枚举&#xff1b;每年12个月&#xff0c;可以枚举。 1、枚举类型…

163邮箱pop3设置方法?POP3服务开启步骤?

163邮箱pop3设置操作指南&#xff1f;163邮箱pop服务怎么开启&#xff1f; 要想更加便捷地管理邮件&#xff0c;开启POP3服务是一个不错的选择。当我们需要在其他邮件客户端上使用163邮箱时&#xff0c;就需要进行POP3设置。那么&#xff0c;163邮箱pop3设置方法究竟是怎样的呢…

算法第二十九天-森林中的兔子

森林中的兔子 题目要求 解题思路 重点&#xff1a;某个兔子回答x的时候&#xff0c;那么数组中最多循序x1个同花色的兔子同时回答x 我们可以通过举例子得出一下的规律&#xff1a; 我们统计数组中所有回答x的兔子的数量n&#xff1a; 若n%(x1)0&#xff0c;说明我们此时只需…

appscan打开外部浏览器报无法连接

1、问题现象&#xff1a; 2、解决方法 再这个界面需要增加appscan的证书&#xff0c;如果是下面状态证明证书已经添加了&#xff0c;如果未加证书系统会提示添加证书&#xff1a;

便携式气象站的工作原理

TH-BQX9便携式自动气象观测仪器是一种集成了多种传感器和自动化技术的气象监测设备&#xff0c;以其便携性、自动化和高精度等特点&#xff0c;广泛应用于气象、环保、农业、科研等领域。 首先&#xff0c;它的便携性是其最大的优势之一。设计紧凑、轻便易携&#xff0c;使得用…

Swagger Array 使用指南:详解与实践

Swagger 允许开发者定义 API 的路径、请求参数、响应和其他相关信息&#xff0c;以便生成可读性较高的文档和自动生成客户端代码。而 Array &#xff08;数组&#xff09;是一种常见的数据结构&#xff0c;用于存储和组织多个相同类型的数据元素。数组可以有不同的维度和大小&a…