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

前端播放rtsp视频流(最后使用WebRtc)

前端播放rtsp视频流(最后使用WebRtc)

前言:

​ 项目需要将实验室里的摄像头画面引入到前端页面中,故对目前常见的几种方法进行了尝试,虽然过程坎坷但结局是好的。

一些尝试:

  • RTSPtoWebRtc工具

    由于RTSPtoWebRtc配置了ice_serve,故在局域网中无法访问视频

  • nginx+FFmepg

​ 最初想法是对rtsp流进行处理,将其转成rtmp,最后以http的形式进行访问。但经过几天的尝试之后,发现存在以下弊端:

  1. 实时视频画面延迟高,存在10s左右的延迟,经过gpu解码后仍存在6-7s的延迟
  2. nginx的http配置存在一定难度(我觉得这是我菜的问题),无法以http形式访问,故无法实现在网页中展示

经过一番周折后决定使用WebRtc

刚开始以为这个会比较麻烦,后悔没早点尝试…

一、下载WebRtc

github:Releases · mpromonet/webrtc-streamer (github.com)

注意不要下载错了

在这里插入图片描述

二、运行webrtc-streamer

下载之后解压,打开命令窗口,执行以下命令

 D:\webrtc-streamer-v0.8.6-dirty-Windows-AMD64-Release\webrtc-streamer.exe -o -H 0.0.0.0:8000

其中 D:\webrtc-streamer-v0.8.6-dirty-Windows-AMD64-Release\webrtc-streamer.exe为绝对路径

-o:无需转码,降低CPU

-H:指定端口号

在这里插入图片描述

然后在浏览器访问127.0.0.1:8001/webrtcstreamer.html?video=rtsp://192.168.10.112:8557/h264

记得修改rtsp

三、引入到Vue

将webrtc-streamer下载包html文件夹下webrtcstreamer.js文件和html/libs文件夹下adapter.min.js文件复制到VUE项目public目录下。并在index.html文件里引入这两个js文件。格式如下:

    <script src="<%= BASE_URL %>adapter.min.js"></script><script src="<%= BASE_URL %>webrtcstreamer.js"></script>

在这里插入图片描述

四、编写页面

以下代码可直接复制粘贴,按需修改即可。

<template><div><video id="video" autoplay width="500" height="300"></video></div>
</template><script>
export default {name: 'index1',data() {return {webRtcServer: null}},mounted() {//video:需要绑定的video控件ID//127.0.0.1:8000:启动webrtc-streamer的设备IP和端口,默认8000this.webRtcServer = new WebRtcStreamer('video', location.protocol + '//127.0.0.1:8000')//需要查看的rtsp地址,记得修改rtsp地址this.webRtcServer.connect('rtsp://user:password@ip:port/cam/realmonitor?channel=1&subtype=0')},beforeDestroy() {this.webRtcServer.disconnect()this.webRtcServer = null},methods: {}
}
</script><style scoped></style>

五、运行结果

在这里插入图片描述

参考链接:
VUE+webrtc-streamer实现实时视频播放(监控设备-rtsp)_vue webrtc-streamer-CSDN博客

【Vue2 + webrtc-steamer】rtsp流在Web端实时播放_webrtc-streamer 稳定么-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL环境的配置文件json
  • Redis zset 共享对象
  • OpenSNN推文:百度沈抖:深度拥抱人工智能+,加速发展新质生产力,共创智能时代新未来
  • 故障诊断 | 基于Transformer故障诊断分类预测(Matlab)
  • Godot入门 03世界构建1.0版
  • 【.NET 6 实战--孢子记账--从单体到微服务】--开发环境设置
  • 日拱一卒 | JVM
  • 哪个邮箱最安全最好用啊
  • Webpack 从入门到精通
  • PCB设计需要注意哪些事项?
  • LeetCode 2766.重新放置石块:哈希表
  • 【学习笔记】子集DP
  • nginx代理服务配置,基于http协议-Linux(CentOS)
  • JavaEE - Spring Boot 简介
  • MATLAB-bode图编程
  • 【Linux系统编程】快速查找errno错误码信息
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java Agent 学习笔记
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JS字符串转数字方法总结
  • leetcode386. Lexicographical Numbers
  • MySQL几个简单SQL的优化
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • select2 取值 遍历 设置默认值
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 浮现式设计
  • 技术胖1-4季视频复习— (看视频笔记)
  • 老板让我十分钟上手nx-admin
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 你不可错过的前端面试题(一)
  • 前端面试之闭包
  • 使用parted解决大于2T的磁盘分区
  • 通过几道题目学习二叉搜索树
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 一道闭包题引发的思考
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 栈实现走出迷宫(C++)
  • 主流的CSS水平和垂直居中技术大全
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • ###C语言程序设计-----C语言学习(3)#
  • #70结构体案例1(导师,学生,成绩)
  • #if 1...#endif
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #考研#计算机文化知识1(局域网及网络互联)
  • (2)Java 简介
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (一)Dubbo快速入门、介绍、使用
  • (一)WLAN定义和基本架构转
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据