webrtc streamer前端页面js播放摄像头rtsp流

news2025/1/22 18:02:43

webrtc streamer

  • 大致的了解了一下,就是使用js来播放rtsp视频流的一个技术。目前实现的厂家有很多,但是要收费。我这里是找了一个开源免费的项目,使用起来有一定的局限性,需要根据自己的业务自己去实现逻辑,目前我只做到了播放实时摄像头,回放等一些功能还没有想好怎么做。
    网址:https://github.com/mpromonet/webrtc-streamer/releases
  • 我这里用的是windows系统服务器,本地也是windows,所以使用的是windows版本,下载的文件是“webrtc-streamer-v0.7.0-dirty-Windows-AMD64-Release.tar.gz”。
  • 下载完成后,需要配置一下配置文件,配置的是具体的摄像头的取流地址,我这里用的是大华和萤石两个摄像头的流,具体取流地址,可以参考网上很多教程。

config.json配置:

{
    "urls":{
        "dahua": {"video": "rtsp://用户名:密码@摄像头ip:554/cam/realmonitor?channel=1&subtype=0"},
		"yingshi": {"video": "rtsp://用户名:密码@摄像头ip:554/h264/ch1/sub/av_stream"},
    }
}

大华的取流格式在上,萤石的取流格式在下(出厂密码一般就是摄像头上的序验证码)。

  • 目录图:
    在这里插入图片描述
  • 启动命令需要带上制定的配置文件,这里配置的是config.json,-C要大写!
    进入webrtc-streamer.exe所在目录,在地址栏中输入cmd,在出现的命令窗口中,输入下面命令。
webrtc-streamer.exe -C config.json
  • 在网址上,输入localhost:8000,进入webrtc的网页。里面会罗列出你电脑任务栏上所有的应用,点击就是类似录制当前应用的一个窗口,可以不用管,我们找到我们配置文件中的dahua和yingshi两个选项卡。如图:
    在这里插入图片描述
  • 如果能正常播放,那就是没问题的,等会引入js,进行页面播放。如果一直转圈圈,可能是摄像头的编码格式是H265的,我买的最新款萤石摄像头默认的就是H265,大华的可以正常播放,但是萤石的就一直转圈圈。这个时候需要下载一个萤石客户端,去设置一下摄像头的转码格式(有主码流和辅码流之分,如果都要用,那每个码流的格式都要设置成H264)。这个开源的webrtc只支持H264的。设置后就可以正常播放了。

前端js播放

前置步骤完成后,我们自己写一个html,然后引入一下js,实现播放。
html:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<video id='dahua' style='object-fit:fill' controls autoplay autobuffer muted preload='auto'></video>
		<video id='yingshi' style='object-fit:fill' controls autoplay autobuffer muted preload='auto'></video>
		<script type="text/javascript" src="./js/webrtcstreamer.js"></script>
		<script type="text/javascript" src="./js/adapter.min.js"></script> 
		<script type="text/javascript" src="./js/jquery-3.5.1.min.js"></script>
		<script>        
		   var webRtcServer1 = null;
			var webRtcServer2 = null;
		    
		    //页面加载时加载视频画面
		    window.onload = function() { 
		    	//video:需要绑定的video控件ID
		        // no use -> webRtcServer = new WebRtcStreamer("video",location.protocol+"//192.168.1.103:8000");
				webRtcServer1 = new WebRtcStreamer("dahua","http://192.168.1.103:8000");
		        //需要查看的rtsp地址
				// no use -> webRtcServer.connect("rtsp://xxx:xxx@192.168.1.xxx:554/cam/realmonitor?channel=1&subtype=1");
				webRtcServer1.connect("dahua");
				
				webRtcServer2 = new WebRtcStreamer("yingshi","http://192.168.1.103:8000");
		        //需要查看的rtsp地址
				// webRtcServer.connect("rtsp://xxx:xxx@192.168.1.xxx:554/cam/realmonitor?channel=1&subtype=1");
				webRtcServer2.connect("yingshi");
		    }
		    
			//页面退出时销毁
		    window.onbeforeunload = function() { 
				webRtcServer1.disconnect();
				webRtcServer2.disconnect();
			}
		</script>
	</body>
</html>
  • 注意: html中的dahua和yingshi就是config.json中的key名,不要配rtsp路径,这一步也是看localhost:8000的选项卡调用的请求,发现他的请求不是完整的rtsp路径,而是定义的json的key名,于是猜测里面是已经做了映射的。js从8000服务端请求流,只需要获取这个key名就行。
  • 引入webrtcstreamer.js,adapter.min.js,jquery-3.5.1.min.js,这几个js都可以在下载的“webrtc-streamer-v0.7.0-dirty-Windows-AMD64-Release”包中找到。单独拷贝出来,放到引入的目录下。

以为这就完了?调坑总结

  • 引入了js后,播放的时候,发现出不来结果,webrtc-streamer.exe的cmd命令窗口一直报连不上“stun:stun.l.google.com:19302”,这是一个iceserver服务器,在国内是可以ping通的,如果cmd中提示本机找不到ip,那需要在host文件中配置一下映射ip,在C:\Windows\System32\drivers\etc\hosts文件加入:

74.125.137.127 stun.l.google.com

  • 配置后,发现控制台其实还是在报连不上,那就不管了,好像也没有影响后面的播放,最主要的是引入的webrtcstreamer.js中,要给iceserver赋一个初值,要不然js也会报错。
    在这里插入图片描述
    在这里插入图片描述
    下载配置后的js:

链接:https://pan.baidu.com/s/1FTGU6fAP3-zJa-SUsdmCAQ 提取码:0n2x

配置好js后,打开html页面,就可以看到可以播放了!!!
在这里插入图片描述

本人不会很多js知识,所以在调试的时候,会比较吃力,目前只能做成这样子,剩下的交给我们的前端去整合了。
播放页下载:

链接:https://pan.baidu.com/s/1O7FU2eJYWZqmVRbmkAalHA 提取码:r5f0

用webrtc延时很低,半秒左右,cpu和内存吃的资源也不多,但是摄像头接入越多吃的资源肯定越多,具体情况还是要具体分析和测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/408389.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

盘点那些神级uniapp插件,总有一款让你事半功倍

自从有了uniapp&#xff0c;各位做小程序&#xff0c;app是不是感觉快起飞了&#xff0c;如果你想快速推出自己的移动端&#xff08;各平台小程序&#xff0c;安卓、苹果&#xff09;&#xff0c;那么uniapp还是很不错的&#xff0c;至少时间和研发成本可以帮你降低很多很多。 …

VUE+BPMN.JS右侧属性栏自定义功能

博主最近项目需求要实现BPMNVUE实现流程自定义, 在完成基础功能后,要求右侧属性栏内的一些属性需要根据后端返回内容进行动态渲染, 这时候,用原来的属性栏明显就不满足需求,我找到的大部分博客包括官方都是建议你根据项目需求来全部重写一个属性栏.但是项目时间紧的情况下这种…

React基础-JSX的本质-虚拟DOM的创建过程

文章目录JSX的本质虚拟DOM的创建过程JSX的本质 实际上&#xff0c;jsx仅仅只是 React.createElement(component, props, ...children) 这个函数的语法糖。 所有的jsx最终都会被转换成React.createElement的函数调用。 createElement需要传递三个参数: 参数一:type 当前元素的…

Error in render: “TypeError: Cannot read properties of undefined (reading ‘length‘)“,深层次数据处理报错????

vue中出现很烦人的红色报错&#xff0c;例如&#xff0c;如下图&#xff1a; 1. 2. Error in render: “TypeError: Cannot read properties of undefined (reading ‘name‘)“ 一般这样的length读取出现的报错&#xff0c;往往很令人苦恼&#xff0c;vue虽然正常渲染&#x…

炫酷登录注册 完整功能版【本地存储+JS+HTML+CSS+jQuery】

一&#xff1a;源码获取 &#x1f50d;说明&#xff1a; 这篇文章是完整功能的登录注册&#xff0c;包含了基于本地存储的注册&#xff0c;登录&#xff0c;以及密码修改功能&#xff0c;登录包含错误三次冻结账户1000s等细微功能&#xff0c;适合新入门前端的小伙伴拿来学习使…

前端页面显示的时间格式为:2022-03-18T01:46:08.000+00:00 如何转换为:年-月-日 时:分:秒 ?

解决办法&#xff1a; 第一种办法&#xff1a;后端格式处理&#xff0c;在后端转数据格式为字符串类型 第二种办法&#xff1a;前端格式处理&#xff0c; ElementUI 中 Table-column Attributes 列属性中有一个 formatter参数 &#xff0c;用来格式化内容 &#xff0c; 里面可…

SpringBoot+Vue实现文件上传下载功能

前言 本文主要实现了以下功能&#xff1a; 1、 单文件上传以及多文件上传功能 2、 输入文件名下载文件功能 3、 输入音频文件名在线播放音频功能 一、项目基础部分搭建 1.1 前端项目搭建 1.1.1 新建前端项目 打开命令行输入以下命令&#xff0c;使用Vue CLI创建前端项目&a…

浏览器同源策略导致跨域问题 No ‘Access-Control-Allow-Origin‘ header 原因及解决方式--(后端、nginx、前端)

目录 现象 原因 浏览器同源策略 导致结果&#xff1a; 解决方案 跨源资源共享&#xff08;CORS&#xff09; 各个端解决方法&#xff1a; 后端&#xff1a; 方式1&#xff1a;重载WebMvcConfigurer方法 方式2&#xff1a;配置监听CorsFilter 方式3&#xff1a;相关类…

微信小程序--》你真的了解小程序组件的使用吗?

&#x1f3cd;️作者简介&#xff1a;大家好&#xff0c;我是亦世凡华、渴望知识储备自己的一名在校大学生 &#x1f6f5;个人主页&#xff1a;亦世凡华、 &#x1f6fa;系列专栏&#xff1a;微信小程序 &#x1f6b2;座右铭&#xff1a;人生亦可燃烧&#xff0c;亦可腐败&…

JAVA-分页查询

分页查询 分页查询将数据库中庞大的数据分段显示,每页显示用户自定义的行数,提高用户体验度,最主要的是如果一次性从服务器磁盘中读出全部数据到内存,有内存溢出的风险 真假分页 假分页: 其原理还是将所有的数据读到内存中,翻页从内存中读取数据, 优点: 实现简单,性能高 缺点…

HTML+CSS+JS网页设计期末课程大作业 京剧文化水墨风书画

Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业&#xff0c;茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&#xff1a;样式 在操作…

EasyExcel复杂表头导出(一对多)升级版

一、前言 在之前写的 EasyExcel复杂表头导出&#xff08;一对多&#xff09;的博客的结尾&#xff0c;受限于当时的能力和精力&#xff0c;留下一些问题及展望。现在写下此博客&#xff0c;目的就是解决之前遗留的问题。 背景介绍&#xff0c;见上述链接指向的博客&#xff0c;…

vue3 route和router的区别以及如何传参数接受参数,如何像vue2一样使用$route和$router详解

vue3 route和router的区别以及如何传参数接受参数&#xff0c;如何像vue2一样使用$route和$router详解 因为我们在 setup 里面没有访问 this&#xff0c;所以我们不能再直接访问 this.$router 或 this.$route。作为替代&#xff0c;我们使用 useRouter 和useRoute函数,或者 Vu…

HTML小游戏21 —— html5版暴打皮卡丘游戏(附完整源码)

&#x1f482; 网站推荐:【神级源码资源网】【摸鱼小游戏】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】本节教程我会带大家使用 HTML…

微信小程序--基础内容(详解)(一)

一、常用标签 1、view 标签 view 标签是一个块级元素&#xff0c;类似于 div&#xff08;小程序里面没有div标签&#xff09;&#xff0c;里面可以放任何内容或者插值表达式&#xff0c;如下所示&#xff1a; <view>这是view标签<view> <view>{{num}}<…

谷歌新版本跨域错误深度剖析与解决:request client is not a secure context and the resource is in more-private address

快速解决&#xff1a; 最近在测试http服务时&#xff0c;谷歌浏览器报了以下错误 “The request client is not a secure context and the resource is in more-private address space ‘local’”. 从报错信息来看&#xff0c;“不安全的请求方请求了更私有的本地资源” 对于…

API接口开发其实特简单,Python Flask Web 框架教程来了

大家好&#xff0c;日常工作中&#xff0c;无论你是数据工程师、数据挖掘工程师&#xff0c;甚至数据分析人员&#xff0c;都不可避免的与他人进行数据交互&#xff0c;API接口提供数据是最常见的形式。 今天我给大家分享 Python Flask Web 框架教程&#xff0c;共计10个部分&…

Vue面试题你知道多少

✅作者简介&#xff1a;大家好我是hacker707,大家可以叫我hacker&#xff0c;新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;带你玩转Vue &#x1f4ac;推荐一款模拟面试、刷题神器&…

前端401错误 解决方法:响应拦截器

目录 1.该问题出现的原因 2.处理401问题的解决方案原理 3.使用响应拦截器解决问题 1.该问题出现的原因 在前后端分离项目中&#xff0c;最常见的是前端点击登录后&#xff0c;后端返回token字符串&#xff0c;这个token可以看作是一个“令牌”&#xff0c;就比如你去酒店办理…

Vue实战【调整Vue-element-admin中的菜单栏,并添加顶部模块菜单栏】

目录&#x1f31f;前言&#x1f31f;小伙伴们先看&#x1f31f;实现思路&#x1f31f;具体代码&#x1f31f;最后&#x1f31f;前言 因为最近在整合公司的项目&#xff0c;需要把所有系统里的功能集成到一个项目里&#xff0c;这样就导致菜单栏目录会特别的多&#xff0c;不便…