在无法访问外网的环境中部署webrtc-streamer服务使vue前端能播放rtsp流
前段时间应项目要求在前端页面播网络摄像头传输的rtsp流,但是浏览器video组件并不支持直接播放rtsp流,需要进行转码解码等操作,本次使用的服务是webrtc-streamer
先说结论:
本地windows系统,按步骤运行webrtc-streamer.exe服务后,前端正常播放视频
服务器Linux系统CentOS7环境不能访问外网,按步骤部署webrtc-streamer服务后,前端无法正常播放视频
关于这方面的资料非常少,查阅了大量资料,WebRTC网络陷阱及解决策略:以webrtc-streamer为例-百度开发者中心最终在这篇文章中发现了端倪

前端在请求服务webrtc-streamer时,服务会请求一次STUN服务器默认地址,遂继续深究什么是STUN服务器,根据百度出的内容WebRTC连接方法:TURN与STUN服务器的作用解析-百度开发者中心

由此可以得知,如果STUN服务器访问不通,webrtc-streamer服务会继续请求TURN服务器来建立中继节点,所以我们可以从建立中继服务器入手。
通过./webrtc-streamer -h可以得到服务启动项配置
General options
-v[v[v]] : verbosity
-V : print version
-C config.json : load urls from JSON config file
-n name -u videourl -U audiourl : register a stream with name using url
[url] : url to register in the source list
HTTP options
-H hostname:port : HTTP server binding (default 0.0.0.0:8000)
-w webroot : path to get static files
-c sslkeycert : path to private key and certificate for HTTPS
-N nbthreads : number of threads for HTTP server
-A passwd : password file for HTTP server access
-D authDomain : authentication domain for HTTP server access (default:mydomain.com)
WebRTC options
-S[stun_address] : start embeded STUN server bind to address (default 0.0.0.0:3478)
-s[stun_address] : use an external STUN server (default:stun.l.google.com:19302 , -:means no STUN)
-t[username:password@]turn_address : use an external TURN relay server (default:disabled)
-T[username:password@]turn_address : start embeded TURN server (default:disabled)
-R Udp_port_min:Udp_port_min : Set the webrtc udp port range (default:0:65535)
-W webrtc_trials_fields : Set the webrtc trials fields (default:WebRTC-FrameDropper/Disabled/)
-a[audio layer] : spefify audio capture layer to use (default:0)
-q[filter] : spefify publish filter (default:.*)
-o : use null codec (keep frame encoded)
-b : use sdp plan-B (default use unifiedPlan)
可以看到WebRTC options中-s[stun_address]使用默认默认STUN server为stun.l.google.com:19302,但是在无法访问外网的服务器中是无法访问的,所以会继续请求TURN relay server,默认是禁用。
我们入手的思路就是搭建一个TURN relay server来建立中继服务器,我使用的是coturn服务,搭建的过程不再赘述,Linux中使用的docker镜像部署。
搭建好后将webrtc-streamer服务启动项设置为-tipaddress:port(中间不能有空格,ipaddress为coturn服务的IP,port为端口号默认3478)
至此前端再次访问webrtc-streamer即可正常播放rtsp流
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)