当前位置: 首页 > news >正文

VUE+webrtc-streamer实现实时视频播放(监控设备-rtsp)

首先说明目前我只完成了本地测试,因还没确定技术选型所以暂无项目应用,先做一下储备,后续项目应用的话这篇文章会持续更新。

监控设备播放效果如下:基于公司环境测试了大华和海康的监控设备(H264编码)可以正确播放

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

https://github.com/mpromonet/webrtc-streamer/releases

 2、解压下载包

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

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

 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地址。

<template>
  <div>
    <el-button @click="handleChange">切换</el-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实现实时视频播放效果的全过程,后续还要验证服务器运行服务、局域网公网访问以及性能等。如果各位有实际项目应用的欢迎留言

相关文章:

  • Java进阶常用的辅助类(CountDownLatch 减法计数器、CyclicBarrier 加法计数器、Semaphore 信号量)
  • HWI的安装及使用
  • 【数据库】MySQL(索引、数据结构、性能、锁、事务等)面试题
  • Cython代码加密, 使用 Cython 将 Python 代码编译为二进制(将整个Django项目编译成功并部署)
  • C# 程序开机自动启动
  • html2canvs的一些问题
  • 金仓数据库 KingbaseES 插件参考手册 S(3)
  • Flutter聊天布局之图片视频上传、显示、保存到相册
  • Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution
  • 基于SSM框架实现学生管理系统
  • JavaScript聊天框插入表情: 点击表情时输入框失焦, 无法插入到输入框.
  • 使用esxcli命令升级VMware ESXi补丁
  • java调用python文件的几种方式【超细讲解!】
  • c++ 关于bfs和dfs的相对统一写法
  • 2023年湖北三类人员安全员A证报考条件需要什么资料?
  • #Java异常处理
  • 【5+】跨webview多页面 触发事件(二)
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Create React App 使用
  • create-react-app做的留言板
  • C学习-枚举(九)
  • Flannel解读
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • java小心机(3)| 浅析finalize()
  • Laravel核心解读--Facades
  • Logstash 参考指南(目录)
  • Mysql数据库的条件查询语句
  • PHP的类修饰符与访问修饰符
  • php面试题 汇集2
  • python_bomb----数据类型总结
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 闭包--闭包之tab栏切换(四)
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 高性能JavaScript阅读简记(三)
  • 基于游标的分页接口实现
  • 坑!为什么View.startAnimation不起作用?
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 协程
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • (13)Hive调优——动态分区导致的小文件问题
  • (C++20) consteval立即函数
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .net framework profiles /.net framework 配置
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证