使用VUE和webrtc-streamer实现rtsp实时监控
创始人
2024-11-13 02:35:43
0

使用VUE和webrtc-streamer实现rtsp实时监控

  • 前言
  • 一、webrtc-streamer是什么?
  • 二、使用步骤
    • 1.下载[webrtc-streamer](https://github.com/mpromonet/webrtc-streamer/releases),本机测试我下载的最新window版本
    • 2.解压下载的安装
    • 3.双击webrtc-streamer.exe启动服务
    • 4.将下载包html文件夹下webrtcstreamer.js文件和html/libs文件夹下adapter.min.js文件复制到VUE项目public目录下 、在index.html文件里引入这两个js文件
    • 5.编写测试页面
    • 6.运行项目可查看监控视频播放效果
    • 7.另外把页面放到初始(根目录)公共页面(app.vue)可实现不登录的实时检测
    • 8.关于截图的部分代码,有需要的可以参考
    • 9.部分用到的参考文章简介
  • 总结


前言

项目中遇到过的问题:通过 前端 Vue 或者后端Java 实现对监控的实时预览播放,截图等,刚开始肯定是没有头绪,通过多方面的查找和验证,就有了这篇文章。


提示:以下是本篇文章正文内容,下面案例可供参考

一、webrtc-streamer是什么?

	webrtc-streamer是一个使用简单机制通过 WebRTC 流式传输视频捕获设备和 RTSP 源的项目,它内置了一个小型的 HTTP server 来对 WebRTC需要的相关接口提供支持。 

二、使用步骤

1.下载webrtc-streamer,本机测试我下载的最新window版本

下载地址:https://github.com/mpromonet/webrtc-streamer/releases

2.解压下载的安装

在这里插入图片描述

3.双击webrtc-streamer.exe启动服务

在这里插入图片描述
如下图则启动成功,此时在浏览器访问127.0.0.1:8000可以看到本机监控画面
在这里插入图片描述

当你同时打开多个视频流/访问窗口时,会发现本地CPU会快速上涨,cpu太高的话打字都非常卡。所以在cmd里命令启动exe时,需要加上这个配置参数 -o

在这里插入图片描述

4.将下载包html文件夹下webrtcstreamer.js文件和html/libs文件夹下adapter.min.js文件复制到VUE项目public目录下 、在index.html文件里引入这两个js文件

在这里插入图片描述

5.编写测试页面

注意:第三步在本机启动服务所以 new WebRtcStreamer(id,serverUrl)中URL传入127.0.0.1端口可
见第三步截图为8000;各监控设备厂商有自己的RTSP地址格式connect要传入正确的rtsp地址。

   

6.运行项目可查看监控视频播放效果

以上为本机测试webrtc-streamer实现实时视频播放效果的全过程,后续还要验证服务器运行服务、局域网公网访问以及性能等。

整体展示效果

7.另外把页面放到初始(根目录)公共页面(app.vue)可实现不登录的实时检测

在这里插入图片描述

8.关于截图的部分代码,有需要的可以参考

 截图   //定时监听       setTime(){         //每隔2秒进行截图        this.timer = setInterval(()=>{          this.captureScreenshot();        },10000)      }, //截图的点击事件     captureScreenshot() {       for (var i = 0; i < this.number; i++) {         var videoElement = ''         videoElement = document.getElementById('video' + i)         this.windowip=videoon.ip         console.log(videoElement.ip,"1234")         if (videoElement.biaoshi == 'videoplay') {           console.log('截图j', videoElement, i)           const canvas = document.createElement('canvas')           canvas.width = videoElement.videoWidth           canvas.height = videoElement.videoHeight           canvas.getContext('2d').drawImage(videoElement, 0, 0, canvas.width, canvas.height)           this.screenshot = canvas.toDataURL()           console.log(this.screenshot, '123')           var shijian = new Date()           console.log(shijian)           // this.base64ToImage(this.screenshot,'shexiangtou'+shijian+'.png')           this.base64ToImage(this.screenshot, 'shexiangtou' + shijian + '.png')         }       }       //  console.log("截图",videoElement)     },     //上传截图     postImg(base64Str, filename) {       var imgData = {         serialNumber: '01',         base64: base64Str,         ip: this.windowip       }       // console.log(imgData,"imgdata",base64Str,imgData.base64Str,"wozoul")       // return       postAction(this.url.vueScreenSendAndPython, imgData)         .then(res => {           if (res.success) {             this.$message.success(`保存成功!`)           } else {             this.$message.warn(`保存失败:` + res.message)           }         })         .finally(() => {           this.loading = false         })     },     //下载截图     base64ToImage(base64Str, filename) {       var that = this       console.log(base64Str, filename, '我走了下载')       const img = new Image()       img.src = base64Str       img.onload = function() {         const canvas = document.createElement('canvas')         canvas.width = img.width         canvas.height = img.height         const ctx = canvas.getContext('2d')         ctx.drawImage(img, 0, 0)         // 如果需要将图片保存到文件,可以使用以下代码         that.getlick = document.createElement('a')          that.getlick.href = canvas.toDataURL('image/jpeg')         that.getlick.download = filename || 'image.jpg'         // that.postImg(that.getlick.href,filename)          that.getlick.click()         // 如果只需要在页面展示图片,可以将以下代码取消注释 //         // document.body.appendChild(canvas);       }     }      //  // 使用示例     //  const base64String = 'data:image/png;base64,iVBORw0KG...';     //  // 替换为你的Base64编码字符串     //  const filename = 'image.png';     //  // 可选的文件名,如果不提供,默认为     //  'image.jpg' base64ToImage(base64String, filename); 

9.部分用到的参考文章简介

1、各种服务端(如 linux / windows 等)都有介绍的比较全的版本推荐:参考链接
2、结合使用的文章参考:参考链接使用VUE和webrtc-streamer实现实时视频播放(监控设备-rtsp)_vue.js_脚本之家 (jb51.net)
3、cup占用过高处理参考:参考链接

总结

以上就是今天要讲的内容,本文简单总结了自己使用过程的一些知识点和VUE和webrtc-streamer实现rtsp实时监控的一些步骤,希望可以帮到你。

相关内容

热门资讯

秒懂教程!微信的牛牛房卡怎么弄... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享受...
一分钟推荐“拼三张金花房卡找谁... 新七喜是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来...
秒懂教程!拼三张房卡购买联系方... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
正版授权“微信炸金花房间怎么创... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
秒懂教程!微信群牛牛房间怎么开... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享受...
秒懂教程“微信金花群怎么买房卡... 冷酷大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来...
秒懂教程!微信群拼三张房间卡买... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
一分钟了解“炸金花房卡专卖店联... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
安卓系统彩蛋怎么开的,揭秘隐藏... 你有没有发现,安卓系统里藏着不少小秘密呢?今天,就让我来带你一探究竟,揭秘安卓系统里的那些彩蛋吧!一...
秒懂教程!炸金花房卡如何购买,... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
一分钟推荐“微信金花链接房卡怎... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
秒懂教程!微信怎么开炸金花房间... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
房卡必备教程“微信炸金花房卡在... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
魅族系统属于安卓系统吗,深度解... 魅族系统属于安卓系统吗?亲爱的读者们,你是否曾好奇过魅族手机所搭载的魅族系统,它究竟是不是安卓系统呢...
秒懂教程!怎么创建拼三张房间卡... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
秒懂教程“牛牛链接房卡找谁购买... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
秒懂教程!微信的拼三张房卡怎么... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
秒懂教程“牛牛金花房卡是如何购... 牛牛大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来...
一分钟实测分享”新果汁大厅怎么... 一分钟实测分享”新果汁大厅怎么买房卡“炸金花房间卡怎么购买游戏中心打开微信,添加客服【1138577...
秒懂教程!微信牛牛房卡如何购买... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享受...