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

引言

海康提供了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.mfbz.cn/a/466868.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CSP试题回顾】202309-1-坐标变换(其一)

CSP-202309-1-坐标变换&#xff08;其一&#xff09; 解题代码 #include <iostream> using namespace std;long long n, m, dx, dy, x, y;int main() {cin >> n >> m;for (size_t i 0; i < n; i){int dx_i, dy_i;cin >> dx_i >> dy_i;dx …

【IEEE】Multimodal Machine Learning: A Survey and Taxonomy

不废话&#xff0c;先上思维导图&#xff0c;哈哈哈&#xff01; 论文题目Machine Learning: A Survey and Taxonomy作者Tadas Baltrusaitis , Chaitanya Ahuja , and Louis-Philippe Morency状态已读完会议或者期刊名称IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE IN…

【视频图像取证篇】模糊图像增强技术之锐化类滤波场景应用小结

【视频图像取证篇】模糊图像增强技术之锐化类滤波场景应用小结 模糊图像增强技术之锐化类滤波场景应用小结—【蘇小沐】 &#xff08;一&#xff09;锐化类滤波器 模糊消除类滤波器&#xff08;Remove blur / Unsharpness&#xff09;。 通用去模糊滤波器&#xff1a;针对大…

Excel·VBA指定目标值切割分组

看到一个帖子《excel吧-数据切断分组问题》&#xff0c;对1列数据按指定长度进行切割分组&#xff0c;获取每组的长度组成方式 VBA代码 Sub 数据分割()Dim arr, target, brr, res, x&, y&, i&, 差额, trr(1 To 2) trr(0)为数值&#xff0c;trr(1)为组成方式arr…

【工具篇】我用Anki半个月背完了408

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解Anki工具的高效使用&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录 一、记忆的原理二、Anki是什么三、同步服务器搭建 一、记忆…

牛客DP34 前缀和

解题思路 题目解析如图 思路 算出每个位置的到第一个位置的总和 比如 第一个位置 1 总和 1 第二个位置 2 总和 3 第三个位置 4 总和 7 要算 2到3 位置的前缀和 用3位置的总和减去1位置的总和即可 还要处理一个边界情况 如果1到1位置的前缀和那么就是 …

为 java 开发者设计的性能测试框架,用于压测+测试报告生成

拓展阅读 junit5 系列教程 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。压测测试报告生成。) junitperf junitperf 是一款为 java 开…

2024-03-18 作业

作业要求&#xff1a; 1> 将广播发送端和接收端各实现一遍 2> 将组播发送端和接收端各实现一遍 3> 将流式域套接字的服务器端和客户端各实现一遍 1&#xff1a;将广播发送端和接收端各实现一遍 运行代码&#xff1a; 服务端&#xff1a; 客户端&#xff1a; 运行截…

视频号带货做的人多吗?这个项目究竟靠不靠谱呢?

在当下互联网经济的浪潮中&#xff0c;视频号带货已经成为了一种新兴的商业模式&#xff0c;吸引了众多创业者和商家的目光。那么&#xff0c;视频号带货做的人多吗?这个项目究竟靠不靠谱呢?&#xff0c;接下来&#xff0c;一起看看本文的介绍吧。 首先&#xff0c;我们来看视…

ROS Kinetic通信编程:话题、服务、动作编程 opencv学习使用

文章目录 一、话题编程二、服务编程三、动作编程四、安装opencv 图片特效示例五、视频示例1. 虚拟机获取摄像头权限2. 播放视频3. 录制视频 接上篇&#xff0c;继续学习ROS通信编程基础 一、话题编程 步骤&#xff1a; 创建发布者 初始化ROS节点向ROS Master注册节点信息&…

Java 设计模式系列:行为型-观察者模式

简介 观察者模式是一种行为型设计模式&#xff0c;又被称为发布-订阅&#xff08;Publish/Subscribe&#xff09;模式&#xff0c;它定义了对象之间的一对多依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都会得到通知并被自动更新。 观察者…

configmap nginx.conf报错:invalid number of arguments in “proxy_set_header“

追加>> cat << EOF >> a.txt ###############gradle############## abcdefg chineewew ###############gradle############## EOF 覆盖> cat << EOF > /etc/profile ###############gradle############## 121321231 121231 ###############grad…

数据结构与算法Bonus-KNN问题的代码求解过程

一、问题提出 &#xff08;一&#xff09;要求 1.随机生成>10万个三维点的点云&#xff0c;并以适当方式存储 2.自行实现一个KNN算法&#xff0c;对任意Query点&#xff0c;返回最邻近的K个点 3.不允许使用第三方库(e.g.flann&#xff0c;PCL,opencv)! 4.语言任选(推荐…

专业140+总分410+南京大学851信号与系统考研经验南大电子信息与通信集成,电通,真题,大纲,参考书。

今年分数出来还是有点小激动&#xff0c;专业851信号与系统140&#xff08;感谢Jenny老师辅导和全程悉心指导&#xff0c;答疑&#xff09;&#xff0c;总分410&#xff0c;梦想的南大离自己越来越近&#xff0c;马上即将复试&#xff0c;心中慌的一p&#xff0c;闲暇之余&…

【活动】政府工作报告视角下的计算机行业发展前瞻与策略探讨

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 引言正文计算机行业在政府工作报告中的定位与发展态势政策导向解析未来机遇展望…

springboot整合springsecurity,从数据库中认证

概述&#xff1a;springsecurity这个东西太容易忘了&#xff0c;这里写点东西&#xff0c;避免忘掉 目录 第一步&#xff1a;引入依赖 第二步&#xff1a;创建user表 第三步&#xff1a;创建一个用户实体类&#xff08;User&#xff09;和一个用于访问用户数据的Repository…

一文教会你SpringBoot是如何启动的

SpringBoot启动流程分析 流程图 源码剖析 运行Application.run()方法 我们在创建好一个 SpringBoot 程序之后&#xff0c;肯定会包含一个类&#xff1a;xxxApplication&#xff0c;我们也是通过这个类来启动我们的程序的&#xff08;梦开始的地方&#xff09;&#xff0c;而…

【超详细图文讲解】如何利用VMware创建CentOS虚拟机(包括如何更改网络设置 + 远程访问虚拟机方法)

文章目录 前言1. 准备相关软件环境1.1 获取 ISO 镜像包1.2 VMware 的安装 2. 使用 VMware 安装 CentOS3. 初始化虚拟机4. 虚拟机网络的设置4.1 虚拟机的三种网络连接模式桥接模式NAT 模式仅主机模式 4.2 如何更改网络设置 5. 远程访问虚拟机的方法5.1 使用 cmd 进行访问5.2 使用…

LSS (Lift, Splat, Shoot)

项目主页 https://nv-tlabs.github.io/lift-splat-shoot 图1&#xff1a;本文提出一种模型&#xff0c;给定多视角相机数据 (左)&#xff0c; 直接在鸟瞰图 (BEV) 坐标系(右)中推理语义。我们展示了车辆分割 (蓝色)&#xff0c;可驾驶区域 (橙色) 和车道分割 (绿色) 的结果。然…

外包干了28天,技术退步明显......

说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入深圳某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…
最新文章