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

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

时间2025-08-05 17:25:35分类IT科技浏览11666
导读: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
python异常处理机制语句(python异常处理的流程是什么?)