【Uni-app 引入海康h5player并接入ws视频流】

news2024/9/24 19:16:36

uni-app 海康h5player接入ws视频流

内容简介
采用uni-app中的renderjs 引入海康H5 SDK
后端接入海康综合安防平台的开放API获取预览流
海康H5 SDK 下载地址

接入原因
因在移动端接入不管是hls flv rtsp rtmp流的播放稳定性和速度均很慢,特采用ws直连流来播放,效率很稳定性均显著提高。因采用前者流可以直接使用原生的播放组件,所以会比较便捷不用进行封装。后者ws流需要引入专用开发包。
海康官网也提供了其它的SDK比如直连摄像头的,但是需要映射多个摄像头或者单独的硬盘录像机,接入方式也是采用renderjs的办法接入。而我们采购了安防平台提供了开放API所以采用接口的形式获取。

准备工作
下载开发包放置项目static目录下
在这里插入图片描述

源码如下
引入h5player.min.js 注意点 src地址要采用相对路径。
JS部分 此处代码均在renderjs中 renderjs使用方法请研究官网示例或看掘金中这位大哥的用法 地址

mounted(){
	if (typeof window.JSPlugin === 'function') {
		this.intWindow();
	} else {
		const script = document.createElement('script')
		script.src = 'static/HK/h5player.min.js' //h5player.min.js 相对路径
		script.onload = this.intWindow.bind(this)
		document.head.appendChild(script)
	};	
},

methods:{
	// 初始化播放窗口
	intWindow(){
		let that = this;
		this.rPlay = new JSPlugin({
			szId: "play_window", //需要英文字母开头 必填
			szBasePath: "static/HK", // 必填,引用H5player.min.js的js相对路径
			oStyle: {
			  border: "none",
			  borderSelect: "none",
			  background: "#000",
			}
		});
	},
	// 接收逻辑层发送的播放地址
	receiveUrl(newValue, oldValue, ownerVm, vm) {
		let that = this
		if(newValue.url){
			let playUrl = newValue.url
			that.rPlay.JS_Play(playUrl,{
				playURL:playUrl,										
			}).then(
				()=>{
					that.$ownerInstance.callMethod('playStatus',{
						type:"success",
						msg:"播放成功"
					})
				},
				(e)=>{
					that.loading = false;
					that.$ownerInstance.callMethod('playStatus',{
						type:"error",
						msg:e
					})
				}
			)
		}
	}	
}

Html代码如下 因为是单独抽了的播放组件 所以播放地址是从外部传递过来的,故使用watch监听一下,如果是在一个组件里面只用获取到播放地址后直接给player中的url赋值即可

//此处js代码均在逻辑层中
//播放窗口dom元素  高度  info:player 用来传递播放地址 stop:stopPlay 用来控制销毁播放器 其它方法请自行封装原理类似
<view id='play_window' 
	:style="{'height':height + 'px'}" 
	:info='player'
	:stop='stopPlay'
	:change:info='hk.receiveUrl'
	:change:stop='hk.receiveStop'>	
</view>

data() {
	return {
		//接收播放地址
		player:{
			url:""
		},
		//销毁播放窗口状态
		stopPlay:false,
		
	}
},

methods:{
	playStatus(val){
		if(val.type === 'success'){
			console.log('播放成功');	
		}else{
			console.log('播放失败')
			console.log(val.msg)
		}
	},
}

watch:{
	playUrl(newValue,oldValue){
		if(newValue){
			this.loading = true;
			this.player.url = newValue;
		}
	}
}

最终效果图如下:

在这里插入图片描述

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

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

相关文章

REVIT技巧|一面接一面,叠层墙就是这样堆出来的?

​Revit中有3种墙族&#xff1a;基本墙、幕墙和叠层墙。幕墙定义为由网格和嵌板组成的系统。 基本墙是由从外部到内部的材质层组成的墙。基本墙自底部到顶部的厚度都相同。 叠层墙由相互堆叠的基本墙组成&#xff0c;可以设计具有自底部到顶部厚度不同的墙。 今天&#xff0c…

1.4 MyBatis数据库逆向生成工具

步骤1: mybatis-generator工程 步骤2&#xff1a;修改generatorConfig.xml内容 1.通用mapper所在目录 2.数据库链接 3.对应生成的pojo所在包 4.对应生成的mapper所在目录 5.配置mapper对应的java映射 6.数据库表 具体内容&#xff1a;<!-- 通用mapper所在目录 --> &l…

记录两个不同的域名使用同一个微应用遇到的坑(micro-app)

由于公司的项目越来越多&#xff0c;很多的系统&#xff0c;也有很多相似的模块&#xff0c;为了解决重复造轮子&#xff0c;降低开发维护成本&#xff0c;故将这些抽出来单独作为微应用。经过调研&#xff0c;发现某东出品的micro-app比较吻合。使用过程省略。 在多个项目&am…

Grafana 配置告警 配置 dubbo windows_exporter 报告页面图 其他公共报告可参考相近

目录 安装部署 官网下载 配置中文 启动 访问 账户密码 界面效果 图表操作 新建添加仪表 添加 Prometheus 数据源 导入已有报告示例 下载 windows_exporter Grafana 的图表模板 node_exporter 中文版&#xff1a;windows_exporter for Prometheus Dashboard CN v2…

2023年全网最全接口自动化测试框架搭建,没有之一

一、原理及特点 参数放在XML文件中进行管理 用httpClient简单封装一个httpUtils工具类 测试用例管理使用了testNg管理&#xff0c;使用了TestNG参数化测试&#xff0c;通过xml文件来执行case。 测试报告这里用到第三方的包ReportNG 项目组织用Maven 二、准备 使用工具&am…

期货和现货白银的区别

白银期货和现货白银既有区别&#xff0c;也有联系&#xff0c;它们二者都是以银价跟跟踪对象的保证金交易品种&#xff0c;因此都具有一定的杠杆效应&#xff0c;都可以双向操作&#xff0c;但是它们在交易制度、时间、杠杆水平等诸多方面&#xff0c;都存在明显的区别。 投资者…

为什么你总学不会编程?到底差什么?

为什么你总学不会编程&#xff1f;到底差什么&#xff1f; 笔者看到太多太多的人花上钱、耗费一两年的时间都学不会编程&#xff0c;甚至一门C语言都反反复复学不完、学不会&#xff0c;游走在大门边缘&#xff0c;总是入不了门&#xff0c;到底是什么因为什么&#xff1f; 因…

020、数据库管理之数据导出工具(Dumpling)

Dumpling dumpling详解dumpling介绍dumpling架构与特点dumpling 适用场景dumpling的部署dumpling 所需权限dumpling 导出SQL文件dumpling 导出csv文件对导出数据进行筛选导出数据的格式导出数据的一致性dumpling 性能优化 实验导出TiDB 数据库中的单张表和单个库导出mysql数据库…

tomcat接入skywalking

tomcat接入skywalking 一、说明二、步骤2.1 准备java-agent包2.2 tomcat部署2.2.1 下载2.2.2 tomcat修改catalina.sh文件2.2.3 tomcat修改启动端口2.2.4 启动tomcat 三、验证四、问题排查4.1 tomcat的启动日志 一、说明 服务器中已经运行着skywalking&#xff0c;准备在同一台…

【Jmeter教程】_设置请求的参数

目录 一、Jmeter传参 二、区分参数格式 在做接口测试时&#xff0c;发送请求的参数有两种格式&#xff0c;一种是Parameters&#xff0c;一种是JSON 一、Jmeter传参 Jmeter 传Parameters格式的参数 Jmeter 传JSON格式的参数 二、区分参数格式 在不清楚参数到底是何种格式时…

使用Arthas查看JDK代理源码

【README】 本文总结自黑马程序员-设计模式&#xff0c;老师讲的非常棒&#xff1b; 【1】jdk代理案例 卖票接口 public interface SellTickets2 {void sell(); }火车站 public class TrainStation2 implements SellTickets2 {Overridepublic void sell() {System.out.prin…

Vulnhub: DarkHole:1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.130 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.130 访问目标web网站&#xff0c;注册用户 注册时尝试注册用户名为admin的用户&#xff0c;发现存在该用户 进入用户后台&…

孪生网络:图片相似度对比神器

本文来自公众号“AI大道理” ​ Siamese Network&#xff08;孪生网络&#xff09;很早就被发明了&#xff0c;它的作者是著名的卷积神经网络LeNet-5的作者LeCun。 最早用来从相似图片数据集上学习图片表示的网络结构就是siamese网络。 两幅图通过两个共享权重的CNN得到各自…

【Redis】Redis简介及安装部署

Redis简介及安装部署 1.关系数据库 VS 非关系型数据库1.1 关系型数据库1.2 非关系型数据库1.3 关系型数据库和非关系型数据库区别1.4 非关系型数据库产生背景1.5 关系型数据库与非关系型数据库总结 2.Redis简介2.1 Redis概述2.2 Redis的优点2.3 Redis使用场景2.4 关于Redis的高…

一步一步学OAK之一: Hello World(使用DepthAI Python API 显示彩色视频流)

作为编程世界的传统入门仪式&#xff0c;我们这里也以Hello World来命名我们的第一个项目&#xff0c;其实我们这个项目与Hello World没有半毛钱关系。 在这个程序中&#xff0c;我们使用DepthAI Python API来一步步实现显示OAK相机彩色视频流&#xff0c;并捕捉物体的功能 目…

CSS 仿 -webkit-box-reflect 属性实现 图片 镜面 倒影 效果

背景 最近在支付宝小程序上面要实现图片的镜面倒影效果&#xff0c;于是乎&#xff0c;马上找到了-webkit-box-reflect属性&#xff0c;用上之后真的绝绝子&#xff0c;模拟器上也很完美&#xff0c;可是到真机上一看&#xff0c;iOS 不支持&#xff0c;只有安卓手机支持&…

基于web的家校联系平台的设计与实现(源码+文档+PPT+数据库)

以 web为基础、以 Java SSM (springmvc mybatis mysql)为框架、以spring, springmvc, mybatis, bootstrap, JSP, jquery为主要技术来完成一个家庭与学校之间的联系。在框架下进行开发&#xff0c;管理员可以在后台输入信息、管理信息&#xff0c;设置网站信息&#xff0c;管理和…

【FFmpeg实战】H264 NALU分析

视频序列 宏块结构 NALU分层 H264的主要目标是为了有高的视频压缩比和良好的网络亲和性&#xff0c;为了达成这两个目标&#xff0c;H264的解决方案是将系统框架分为两个层面&#xff0c; VCL(视频编码层)和 NAL(网络提取层). VCL&#xff1a;包括核心压缩引擎和块&#xff…

[数据分析与可视化] 基于matplotlib-scalebar库绘制比例尺

matplotlib-scalebar是一个Python库&#xff0c;用于在matplotlib图形中添加比例尺。它允许用户指定比例尺的大小、位置、字体和颜色&#xff0c;以及比例尺的单位。该库支持不同的比例尺单位&#xff0c;例如米、英尺、英寸等。matplotlib-scalebar安装命令如下&#xff1a; p…