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

这篇具有很好参考价值的文章主要介绍了使用VUE和webrtc-streamer实现rtsp实时监控。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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


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

一、webrtc-streamer是什么?

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

二、使用步骤

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

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

2.解压下载的安装

使用VUE和webrtc-streamer实现rtsp实时监控,vue.js,webrtc,前端

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

使用VUE和webrtc-streamer实现rtsp实时监控,vue.js,webrtc,前端
如下图则启动成功,此时在浏览器访问127.0.0.1:8000可以看到本机监控画面
使用VUE和webrtc-streamer实现rtsp实时监控,vue.js,webrtc,前端

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

使用VUE和webrtc-streamer实现rtsp实时监控,vue.js,webrtc,前端

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

使用VUE和webrtc-streamer实现rtsp实时监控,vue.js,webrtc,前端

5.编写测试页面

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

<template>
	<div>
		<a-button @click="handleChange">切换</a-button>
		<video id="video" autoplay width="900" height="900"></video>
	</div>
</template>
<script>
export default {
name: 'index1',
data() {
	return {
		webRtcServer: null
	}
},
mounted() {
	//video:需要绑定的video控件ID
	//127.0.0.1:8000:启动webrtc-streamer的设备IP和端口,默认8000
	this.webRtcServer = new WebRtcStreamer('video', location.protocol + '//127.0.0.1:8000')
	//需要查看的rtsp地址
	this.webRtcServer.connect('rtsp://user:password@ip:port/cam/realmonitor?channel=1&subtype=0')
	//rtsp://user:password@ip:port/h264/ch1/main/av_stream--海康
	//rtsp://user:password@ip:port/cam/realmonitor?channel=1&subtype=0--大华
},
beforeDestroy() {
	this.webRtcServer.disconnect()
	this.webRtcServer = null
},
methods: {
	handleChange() {
		this.webRtcServer.connect('rtsp://user:password@ip:port/h264/ch1/main/av_stream')
	}
}
}
</script>
<style scoped></style>

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

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

使用VUE和webrtc-streamer实现rtsp实时监控,vue.js,webrtc,前端

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

使用VUE和webrtc-streamer实现rtsp实时监控,vue.js,webrtc,前端

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

 <a-button  class="taglist"  @click="captureScreenshot">截图</a-button>
  //定时监听
      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实时监控的一些步骤,希望可以帮到你。文章来源地址https://www.toymoban.com/news/detail-809128.html

到了这里,关于使用VUE和webrtc-streamer实现rtsp实时监控的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • webrtc-streamer下载编译

    无需关注编译的同学可直接上github下载编译好的程序使用即可 github地址: https://github.com/mpromonet/webrtc-streamer/tree/master gitee地址: https://gitee.com/wcg_5/webrtc-streamer/tree/master/ 想要获取最新的更新,建议还是同步Github上的。Gitee上是滞后于Github clone仓库源码 切换版本分支 本文使用的版

    2024年02月09日
    浏览(56)
  • webrtc 网络的一些坑(webrtc-streamer)

    1、使用VPN网络经常打不开视频。 webrtc网络是边收集网络环境信息,边交换。先收集到的是内网信息,然后是公网信息。如果在还未收集到公网信息的情况下,只拉取到内网信息。则在深信服的VPN环境下,webrtc-streamer服务器无法发送数据包到本地。 从接口/api/getIceCandidate的返

    2023年04月09日
    浏览(39)
  • Docker WebRTC容器部署方案(mpromonet/webrtc-streamer)

    WebRTC(Web Real-Time Communication)是一种开放的实时通信技术,它允许浏览器之间进行音频、视频和数据的实时传输。WebRTC的目标是通过简化实时通信的开发过程,使开发者能够轻松地在Web应用程序中集成实时通信功能。 WebRTC的核心技术包括三个主要组件: 媒体捕获和处理:W

    2024年02月13日
    浏览(43)
  • 史上最详细的webrtc-streamer访问摄像机视频流教程

    目录 前言 一、webrtc-streamer的API 二、webrtc-streamer的启动命令介绍 1.原文 2.译文  三、webrtc-streamer的安装部署 1.下载地址     https://github.com/mpromonet/webrtc-streamer/releases 2.windows版本部署 3.Linux版本部署 四、springboot整合webrtc-streamer 五、公网使用webrtc-streamer访问相机视频 最近公司

    2023年04月22日
    浏览(38)
  • VUE3 播放RTSP实时、回放(NVR录像机)视频流(使用WebRTC)

    1、下载webrtc-streamer,下载的最新window版本 Releases · mpromonet/webrtc-streamer · GitHub  2、解压下载包  3、webrtc-streamer.exe启动服务 (注意:这里可以通过当前文件夹下用cmd命令webrtc-streamer.exe -o这样占用cpu会很少,直接双击exe文件会占用cpu) cmd  webrtc-streamer.exe -o 启动如下图所示,

    2024年04月12日
    浏览(60)
  • 【Vue2 + webrtc-steamer】rtsp流在Web端实时播放

    操作系统:Win10 vue版本:vue2 必须将rtsp通过 播放器插件/服务器/… 转换为 flv/webrtc/… 最新在线可用rtsp码流地址(可用 flv播放器 测试): rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4 rtmp地址 rtmp://ns8.indexforce.com/home/mystream https地址 : MP4 : https://baikevideo.cdn.bcebos.com/med

    2024年02月02日
    浏览(38)
  • vue使用webrtcstreamer实现rtsp无转码播放实时监控

    因为video标签只能播放特定格式的视频,比如MP4、WebM和Ogg格式,而对于这种视频流文件则需要通过转码实现,而vue-video-player也只能播放特定格式的视频。所以要播放监控的实时视频,除了在浏览器的地址栏直接打开摄像头的地址,还可以通过webrtc-streamer和video标签在页面实现

    2024年02月06日
    浏览(81)
  • vue视频直接播放rtsp流;vue视频延迟问题解决;webRTC占cpu太大卡死问题解决;解决webRTC播放卡花屏问题:

    播放多个视频 js部分其中的item就是rtsp视频流 public/static/test.html内容 其中public/static/js/webrtcstreamer.js文件内容如下 这里启用需要下载webRTC   https://github.com/mpromonet/webrtc-streamer/releases 需要注意的是这里启动不要直接双击而是使用cmd命令启动   start 应用名 -o  一定加上-o否则we

    2024年02月03日
    浏览(44)
  • 安防监控项目---mjpeg-streamer视频图像显示(实时视频流实现)

    书接上期,我们已经实现了许多功能了,但是对于视频流的实时上传还未实现,本期主要分享的就是如何具体实现网页实时显示摄像头采集到的视频,从而实现安防中监控的功能,这个功能完成后呢,就只剩下一个功能需求了,那就是GPRS模块,能够实现危险报警的功能,也能

    2024年02月06日
    浏览(47)
  • Qt/C++监控推流设备推流/延迟极低/实时性极高/rtsp/rtmp推流/hls/flv/webrtc拉流/调整分辨率降低带宽

    算下来这个推流的项目作品写了有四年多了,最初第一个版本只有文件点播的功能,用的纯QTcpSocket通信实现,属于比较简单的功能。由于文件点播只支持文件形式的推流,不支持网络流或者本地设备采集,所以迫切需要打破这个瓶颈,而后加入核心的网络推流功能,这也是本

    2024年04月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包