EasyNVR二次开发云台控制接口实例

1.背景需求

  • 通过EasyNVR接口,二次开发集成在自己的原有的web业务系统上云台控制及实时直播功能,demo效果入下。

在这里插入图片描述

  • demo是通过vue-cli脚手架搭建起来,简单说一下,目录结构
    在这里插入图片描述
  • 对easy-player不了解的这是播放器插件地址可以参看 https://www.npmjs.com/package/easy-player
  • 这里主要讲解一下App.vue内容文件
<template><div id="app"><!-- 测试鉴权 如果鉴权已关闭请忽略 --><div class="div-btn"><el-button-group><el-button size="mini" type="success" @click="login">测试登录</el-button><el-button size="mini" type="success" @click="loginout">测试退出</el-button><el-button size="mini" type="success" @click="testapi">测试鉴权</el-button></el-button-group></div><el-row><!-- 播放窗口组件 --><el-col :span="12"><EasyPlayer :videoUrl="videoUrl" fluent autoplay live stretch></EasyPlayer><el-input v-model="input" placeholder="请输入播放地址接口" size="mini"></el-input><p>列如:http://127.0.0.1:10800/api/v1/getchannelstream?channel=1&protocol=RTMP</p><el-button class="player-button" size="mini" type="success" @click="player">播放</el-button></el-col><!-- 云台控制组件 --><el-col :span="12"><div class="control-box"><!-- 云台控制按钮列表 --><span @click="testControl('zoomin')"><i class="el-icon-circle-plus-outline"></i></span><span @click="testControl('up')"><i class="el-icon-arrow-up"></i></span><span @click="testControl('zoomout')"><i class="el-icon-remove-outline"></i></span><span @click="testControl('left')"><i class="el-icon-arrow-left"></i></span><span @click="testControl('stop')">停止</span><span @click="testControl('right')"><i class="el-icon-arrow-right"></i></span><span></span><span @click="testControl('down')"><i class="el-icon-arrow-down"></i></span><span></span></div></el-col></el-row></div>
</template><script>import md5 from "md5"; //引入md加密密码传给服务端,这里默认是admin *修改在103行*import EasyPlayer from "easy-player"export default {data() {return {videoUrl:'',                // 这里定义一个变量用来保存视频流地址input:'',                   // 接收用户的接口地址timer: 0,                   // 定时器用来保活接口channels: '',               // 保存接口地址通道地址protocols: ''               // 保存接口地址视频类型}},components:{EasyPlayer},mounted() {},methods: {player() { // 当输入完接口地址按下播放会执行这个函数if(!this.input){this.$message.error('请输入接口地址!');}else{let strs = this.input.split('?')[1].split('&')for (const iterator of strs) {if (iterator.indexOf('channel') != -1) this.channels = parseInt(iterator.split('=')[1])if (iterator.indexOf('protocol') != -1) this.protocols = iterator.split('=')[1]}this.play() //当player函数接收到可用的地址执行play函数}},play() { //play函数会向服务端发送请求对应的通道及视频类型this.$axios.get('/api/v1/getchannelstream', {params: {channel: this.channels,protocol: this.protocols}}).then((response) => { //请求成功服务端会返回对应的通道的视频流地址把返回的地址传给之前定义videoUrl 就可以播放视频但是视频播放一会就会停止,需要保活接口下面创建一个定时器(注意:保活只是在按需的情况下使用)this.videoUrl = response.data.EasyDarwin.Body.URLthis.timer = setInterval(() => { //当请求成功定时器打开每30秒向服端端发送一下请求告诉服务端客户端需要播放视频,不然服务端就会停止向设备端拉取视频。this.touchStream();}, 30 * 1000);if(!response.data.EasyDarwin.Body.URL)this.$message.error('播放失败,检查接口是否正确或者通道是否启用!');}).catch((error) => {let { status } = error.responseif (status == 401) Message.error('token值无效,请重新登录')});},touchStream() { //touchStream用来调取保活接口this.$axios.get('/api/v1/touchchannelstream', {params: {channel: this.channels,protocol: this.protocols}}).then((response) => {this.videoUrl = response.data.EasyDarwin.Body.URLif(!response.data.EasyDarwin.Body.URL)this.$message.error('播放失败!');}).catch((error) => {let { status } = error.responseif (status == 401) Message.error('token值无效,请重新登录')});},login() { //测试登录this.$axios.get('/api/v1/login', {params: {username: "admin",password: md5("admin")}}).then((response) => {this.$message({message: '恭喜你,登录成功!',type: 'success'});}).catch((error) => {this.$message.error('用户名或密码错误,登录失败!');});},loginout() { //测试推出this.$axios.get('/api/v1/logout').then((response) => {this.$message({message: '成功退出!',type: 'success'});}).catch((error) => {console.log(error)});},testapi() {   //测试接口鉴权是否生效this.$axios.get('/api/v1/getchannelsconfig', {params: {start: 0,limit: 1}}).then((response) => {this.$message({message: '鉴权成功!',type: 'success'});}).catch((error) => {this.$message.error('鉴权失败!');});},testControl(data) {  // testControl里的data是接收云台控制组件的里按钮传递的参数。this.$axios.get('/api/v1/ptzcontrol', {// 调取云台接口地址params: {channel: this.channelNum,     // 调取对应的设备通道地址command: data                 // 调取云台接口的控制参数}}).then((response) => {console.log(response)}).catch((error) => {console.log(error)});}}}
</script><style lang="scss">#app {font-family: 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;// text-align: center;color: #2c3e50;}.el-row, .div-btn{max-width: 800px;margin: auto;}.div-btn {padding: 5px 0;}.el-col {min-height: 300px;// border: 1px pink solid}.el-input {padding: 5px;box-sizing: border-box;}.player-button {margin: 5px;width: 100%;}.control-box {width: 180px;height: 180px;margin: 50px;span {display: inline-block;text-align: center;float: left;width: 60px;height: 60px;padding: 5px;border-radius: 50%;box-sizing: border-box;// border: 1px solid #ccc;line-height: 50px;cursor: pointer;&:hover {background-color: #67C23A;border: none;}}}p {font-size: 12px;}
</style>
  • 项目仓库地址 https://github.com/EasyNVR/EasyNVR/tree/master/EasyNVR_apidemo/apidemo
    下载项目到本地到目录下安装demo需要的依赖
    npm install
    运行项目
    npm run serve
    打包
    npm run build
    注意:需要摄像头支持云台控制。

案例github地址:[https://github.com/EasyNVR/EasyNVR/tree/master/EasyNVR_apidemo/apidemo]


关于EasyNVR

EasyNVR能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发;

详细说明:http://www.easynvr.com

点击链接加入群【EasyNVR解决方案】:857627429

Copyright © EasyDarwin Team 2012-2019

EasyNVR公众号

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海康萤石云接入

最近有需求需要接入海康的萤石云平台&#xff0c;api众多呀&#xff0c;所以挑重点记录一下接入过程 接入指南 就是个步骤&#xff0c;注册成为开发者&#xff0c;完成认证&#xff0c;有条件的买个企业的版就行了。一步一步走完就没啥问题了 https://open.ys7.com/bbs/article…

海康平台接入配置

对于nvr设备 sip用户认证id:11-13位选择配置成111,然后根据设备数尾数递增 nvr设备多通道,在视频通道编码id中,一共可以配置8个其中前4个对应模拟通道,后四个对应IP通道,我们每一台nvr的视频编码ID都设置成一样的从3402000001320000001-3402000001320000008 IPC设备接入和nvr…

EasyNVR通过Onvif方式接入的设备云台控制无反应是什么原因?

EasyNVR平台可以通过Onvif协议与摄像头进行网络连接&#xff0c;并实现摄像头的PTZ云台控制&#xff0c;PTZ控制包含转动、变焦等&#xff08;需要摄像头带云台功能&#xff09;。与EasyGBS平台不同&#xff0c;EasyGBS是通过国标GB28181协议接入实现云台的控制功能。对EasyNVR…

EasyNVR摄像机无插件直播进行摄像机云台控制的接入及调用详解

EasyNVR云台接入及控制详解 摄像机云台控制在摄像机当中很常见摄像机能将当前状态下云台的水平角度、倾斜角度和摄像机镜头焦距等位置参数存储到设备中&#xff0c;需要时可以迅速调用这些参数并将云台和摄像头调整至该位置。 摄像机只要支持Onvif协议进行和第三方软件或设备对…

EasyCVR平台onvif接入云台控制接口,出现延时是什么原因?

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;部署轻快、功能灵活&#xff0c;平台可支持多协议、多类型设备接入&#xff0c;包括&#xff1a;国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等&#xff08;具体见下图&#xff09;。在视频能力…

web,h5海康视频接入监控视频流记录一

项目需求,web端实现海康监控视频对接接入,需实现实时预览,云台功能,回放功能。 web端要播放视频,有三种方式,一种是装浏览器装插件,一种是装客户端exe,还有就是无插件了。浏览器装插件很早前已经行不通了,chrome42还是44之前的可以。客户端装软件,一般接受度也比较低…

EasyNVR云台接入及控制详解

云台控制在摄像机当中很常见摄像机能将当前状态下云台的水平角度、倾斜角度和摄像机镜头焦距等位置参数存储到设备中&#xff0c;需要时可以迅速调用这些参数并将云台和摄像头调整至该位置。 摄像机只要支持Onvif协议进行和第三方软件或设备对接&#xff0c;大部分都能进行远程…

LiveNVR监控流媒体Onvif/RTSP常见问题-接入的通道没有云台控制按钮云台控制灰色无法操作怎么办?

LiveNVR常见问题-接入的通道没有云台控制按钮云台控制灰色无法操作怎么办&#xff1f; 1、云台控制灰色2、怎样才可以云台控制3、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、云台控制灰色 LiveNVR在分屏页面播放的时候&#xff0c;发现有边的云台控制不可用。而我们需要云台控制…

Android平台GB28181设备接入模块之球机/云台控制探究

技术背景 好多开发者在做GB28181设备接入的时候&#xff0c;问云台控制是否可以处理&#xff08;亦或拉取外部RTSP摄像头&#xff0c;通过命令中转的方式&#xff0c;控制摄像头&#xff09;&#xff0c;实际上云台控制命令相对来说还是比较好处理的。协议规范有明确说明&…

LiveNVR - RTSP流媒体服务支持网络摄像机Onvif/RTSP接入直播与云台控制

LiveNVR Onvif/RTSP流媒体服务&#xff0c;支持RTSP稳定拉流接入&#xff0c;支持Onvif协议接入&#xff0c;支持RTMP/HLS/HTTP-FLV分发&#xff0c;将传统安防监控设备互联化&#xff0c;无插件直播等。 什么是Onvif协议 ONVIF规范描述了网络视频的模型、接口、数据类型以及…

萤石云枪机球机云台接入控制实战-含源码-layui

标题最终效果图,下班后摄像头关闭了 主要使用到的技术栈:layui,阿里图标库,layui内置jquery ,mui.min.js,ezuikit.js,萤石云 开始用vedio.js来做,可以播放m3u8的码流,但当前码流结束后不能自动播放下一个,所以需要手动调用,但由于萤石云官方的个人用户并发只有3,请求稍微频繁一…

海康威视综合安防平台视频摄像头接入Java

1、原型设计 2、寻找接口 官网接口链接 返回参数 参数名称数据类型是否必须参数描述codestringFalse返回码&#xff0c;0:接口业务处理成功&#xff0c;其它参考附录E.other.1msgstringFalse接口执行情况说明信息dataobjectFalse区域信息结构体totalnumberFalse查询数据记录总…

保姆级低代码实战教程——玩转PagePlug表格开发,增删改查分页如此简单

目录 1、背景介绍 2、连接数据源 2.1 新增数据源 2.2 填写数据源信息 3、表格数据的展示 3.1 新增查询&#xff0c;编写查询语句 3.2 使用表格组件 3.3 同步数据源与表格列名 4、表格的数据新增 4.1 新增查询&#xff0c;编写新增语句 4.2 表格配置新增一行&#xf…

chatgpt-web发布之docker打包流程

docker打包流程 1、使用docker前置准备&#xff1a; 电脑下载docker桌面版&#xff0c;以及开启虚拟机步骤&#xff1a;https://blog.csdn.net/qq_34905631/article/details/126573826下载docker桌面版 &#xff1a;https://docs.docker.com/desktop/install/windows-install…

(001)我们一起学Python;基本运算

&#xff08;一&#xff09;将 Python 当做计算器 ①除法 (/)永远返回一个浮点数。 floor 除法可以使用 // 运算符得到整数结果&#xff08;丢掉任何小数部分&#xff09;&#xff1b;要计算余数你可以使用 % PS:Python的命令行交互工具IDLE可以将文本打印&#xff0c;快捷键…

Day22——HTML

文章目录 HTML一、 关于 html 那些事1. 为什么要学 html&#xff1f;2. 什么是 html&#xff1f;3. 发展史4. 优势5. W3C 标准6. 学习 html 要达到的方法和目标7. 第一个 HTML 案例 二、HTML 的基础知识1. HTML 的基本结构1.1 HTML 头部元素1.1.1 title 标签1.1.2 base 标签1.1…

二流公司前端,月入账工资3万元「web前端薪资如何?」

一个好的 Web 前端年薪会有多少? 作为一名普通员工来说的话,比较好的公司会给什么待遇呢? 匿名用户 昨天发的工资,匿了,二流互联网公司前端。 2013年底的行情 拿了一年了。 update 2017年拿了半年了… 这次不算奖金了 每月到手的。 罗龙浩支付宝口碑前端负责人 2012…

(006)我们一起学Python;列表----超级结构体

if else d的匹配在C和Python上是完全不同的&#xff0c;Python依靠对其匹配&#xff0c;而C是就近匹配。所以Python有更好的可读性和代码更优美简洁。 条件表达式&#xff08;三元操作符&#xff09; 根据判断条件&#xff0c;来进行赋值操作 assert这个关键字 我们称之为断言…

java之JVM学习全过程学习记录

关注公众号&#xff1a;”奇叔码技术“ 回复&#xff1a;“java面试题大全”或者“java面试题” 即可免费领取资料 java之JVM学习记录其中有许多借鉴综合&#xff0c;感谢通哥也感谢大佬们&#xff0c;一起学习加油&#xff09; 关注公众号&#xff1a;”奇叔码技术“ 1、J…

linux 1060显卡,Steam最受欢迎显卡型号出炉,GTX 1060 依然是王道!

原标题&#xff1a;Steam最受欢迎显卡型号出炉&#xff0c;GTX 1060 依然是王道&#xff01; 2019年7月Steam 硬件和软件调查报告。 作为一名忠实游戏玩家 除了好玩的游戏作品外 基本还会关心硬件配置等 不知道大家的游戏配置 一般多久升级一次 通哥的1060倒是真的战斗蛮久了 近…