首页IT科技rtsp浏览器播放(webrtc streamer&前端页面js播放摄像头rtsp流)

rtsp浏览器播放(webrtc streamer&前端页面js播放摄像头rtsp流)

时间2025-06-20 20:35:37分类IT科技浏览10823
导读:webrtc streamer 大致的了解了一下,就是使用js来播放rtsp视频流的一个技术。目前实现的厂家有很多,但是要收费。我这里是找了一个开源免费的项目,使用起来有一定的局限性,需要根据自己的业务自己去实现逻辑,目前我只做到了播放实时摄像头,回放等一些功能...

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和内存吃的资源也不多         ,但是摄像头接入越多吃的资源肯定越多                        ,具体情况还是要具体分析和测试               。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
基于MATLAB的车牌识别毕业设计(基于matlab的车牌识别系统的实现)