随着多媒体技术和网络通信技术的迅速发展,视频监控技术在电力系统、电信行业、工业监控、工地、城市交通、水利系统、社区安防等领域得到越来越广泛的应用。摄像头直播视频监控通过网络直接连接,可达到的世界任何角落,并能够通过控制云台、存储视频监控音视频,对现场远程运维,实现随时随地想看就看的安防需求。

背景需求

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

今天主要介绍通过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
注意:需要摄像头支持云台控制。

EasyNVR部署架构

单点内网

单点公网

多点公网

RTMP推流

EasyNVR应用场景

EasyNVR在互联网安防直播行业已有多年实战经验,通过各行业的市场检验已成为一套便捷、安全、覆盖范围广的成熟产品,结合硬件产品,服务于各行各业视频基础建设,同时提供二次开发接口便于企业集成到自己的业务系统中,打造专属于自己的互联网视频监控平台。

手机看家

航空监控

景区监控

关于EasyNVR

EasyNVR是一款拥有完整、自主、可控知识产权,同时又能够具备软硬一体功能的安防互联网化流媒体服务器,能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP、Onvif协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发。详情可访问EasyNVR官网:http://www.easynvr.com

EasyNVR网页Chrome无插件播放摄像机视频功能二次开发之云台控制接口示例代码相关推荐

  1. LiveNVR传统安防摄像机互联网直播-二次开发相关的API接口

    LiveNVR安防流媒体服务,支持RTSP稳定拉流接入,支持Onvif协议接入,支持RTMP/HLS/HTTP-FLV分发,将传统安防监控设备互联化,无插件直播等. LiveNVR相关二次开发-API ...

  2. 浏览器低延时无插件播放监控摄像头视频-接入LiveNVR支持HTTP-FLV分发

    背景描述 LiveNVR的使用者应该都是清楚的了解到,LiveNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由LiveNVR处理可 ...

  3. 无插件播放h265视频

    对于NVR设备,需要配web端来管理,包括NVR常用配置和视频预览.视频的预览,以前可以通过插件的方式来实现,IE通过ActiveX控件,其它浏览器通过NPAPI插件.NPAPI插件被谷歌抛弃掉,说是 ...

  4. Windows PC、 Linux、 Android、 iOS多平台支持H5无插件播放RTSP摄像机解决方案

    Windows PC. Linux. Android. iOS多平台支持H5无插件播放RTSP摄像机解决方案 需求分析 视频流媒体监控行业已经进入互联网时代,浏览器承载了绝大多数的互联网访问流量,目前 ...

  5. 网页无插件播放265/264视频/监控大屏/GPU解码

    网页无插件播放265/264视频/监控大屏/GPU解码 先看效果 特点 GPU解码,chrome网页播放32路 h256/hevc 直播视频流,毫无压力. 提供1分屏.4分屏.8分屏.9分屏.16分屏 ...

  6. 如何实现web浏览器无插件播放视频监控直播?

    很多年前,监控视频的直播只能够进行单一的服务器传输,而如今,很多网站已经可以观看视频直播了,不过大多网站观看视频直播的时候还是需要下载插件,有时候就会碰到系统不兼容.版本不对应等问题,那么能不能实现w ...

  7. 海康大华等摄像头RTSP低延迟(1秒以内)网页无插件播放解决方案

    简介 监控摄像头网页无插件播放解决方案虽然很多,但是或多或少会有一定的延迟,其中网上使用最多的是RTSP转RTMP推流的方式,这种延迟一般十秒左右,优化的好的话能达到五秒,但是依旧算不上实时.本文提供 ...

  8. RTSP数据的无插件播放与超图三维iClient3D的视频投射

    从RTSP视频流到Web端再到超图三维 一.转发 rtsp直播视频流到web页面播放 1.1 RTSP视频流数据 1.2 streamedian:将rtsp转为ws到web端播放 1.3 异机部署St ...

  9. GB28181监控视频统一汇聚平台LiveGBS将海康大华华为宇视等厂家监控设备统一接入后如何生成固定播放链接或者固定的流地址可以直接无插件播放或者拉取

    目前汇聚各种厂家监控设备的视频汇聚平台,基本都是通过GB28181标准协议实现的.下面介绍下LiveGBS Web无插件直播的GB28181视频平台将各厂家(包括海康.大华.华为.宇视.天地伟业等)监 ...

最新文章

  1. Window10安装pycocotools
  2. Unsupported ONNX opset version: 11
  3. GDCM:目录条目的测试程序
  4. 分享字符串右移的算法
  5. 《Programming in Lua 3》读书笔记(十二)
  6. leetcode435. 无重叠区间
  7. 链表面试笔试题目总结
  8. 系统搭建遇到问题3:Ubuntu问题造成网卡名称异常导致Vivado绑定网卡地址的Lic无法正常工作(JESD)...
  9. 用 FastJSON 将 JSON 字符串转换为 Map
  10. 12月29日二周五次【Python基础语法】
  11. PHP获取input中的值相同报错,laravel单元测试之phpUnit中old()函数报错解决_php实例...
  12. 从0到1:微信后台系统的演进之路(转自INFOQ)
  13. Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
  14. FileProvider N 7.0 升级 安装APK 选择文件 拍照 临时权限 MD
  15. python中的numpy模块和pandas模块的区别_python的numpy模块- 01.pandas基本数据类型
  16. VSC VisioStudio Code 设置 鼠标滚轮缩放字体大小 滚轮控制字体放大缩小
  17. android之monkey测试
  18. 最新二开版漫画小说听书三合一完整源码/整合免签接口/搭建教程/带采集接口
  19. 服务器监控报警系统软件设计,Monitor监控报警系统
  20. 决策树案例:是否打网球

热门文章

  1. 如何有效地执行代码审查_使用这些有效的代码审查指南创建合理的办公环境
  2. 360安全卫士防黑加固关闭了Telnet远程连接服务,如何开启?
  3. 数仓实时数据同步 debezium
  4. 支付宝app支付对接1
  5. 统计考勤报表 oracle对多个列求和 sum() 函数
  6. 阿里云4核8G服务器10M带宽支持在线人数并发量计算
  7. 经纬度手动简单调整整位置
  8. 全球与中国连续光纤激光器市场现状及未来发展趋势
  9. 高德地图的基础使用(二)定位蓝点
  10. SpringBoot后端+Vue之AntDesignVue前端实现查询表格导出excel功能