RTSP WebRTC 折腾

公司趁着疫情做了款热成像摄像头,需要做个客户端来播放热成像画面和记录体温等等。

因为项目急用的是electron+EasyPlayer的方案 用electron来实现界面,EasyPlayer播放RTSP流。

EasyPlayer叠加在electron上,设置窗体为WS_EX_NOACTIVATE  这样就不会获得焦点,还能处理鼠标点击,electrion最小化 失焦时还要隐藏EasyPlayer

两个程序通信使用JsonRpc,微软给提供了C#的实现https://github.com/Microsoft/vs-streamjsonrpc

不过最终目标还是想实现网页播放rtsp,所以找到了两个方案 RTSP转WebRTC和RTSP WebSocket MSE实现

https://github.com/deepch/RTSPtoWebRTC RTSP转WebRTC

https://github.com/deepch/RTSPtoWSMP4f  RTSP WebSocket MSE实现

 

先研究的RTSP转WebRTC,这个项目使用Go语言实现,又要学习新语言了。。。

首先clone下来

git clone --depth=1 https://github.com/deepch/RTSPtoWebRTC.git

第一次运行提示 Session Description must not be empty 

排查代码应该是stun服务器连不上 删掉/web/static/js/app.js第二行的stun:stun.l.google.com:19302

http.go里也有一个,删之。

 

再运行发现一直加载出不来画面,这个问题困扰了好几天,排查代码是RTSP协议发送完PLAY命令了始终收不到数据

调试到/github.com/deepch/vdk/format/rtsp/client.go 的readPacket()中 卡在了poll()函数上

最后终于发现换个rtsp服务器就好了,之前用VLC编的RTSP流无法播放,但用VLC播放没问题。

 

更新下 已经调通了监控摄像头,要求设置为H264 HIGH Profile 不然报SPS PPS错误

另外SDP解析也有问题 无法识别m=application

浏览器版本也有要求 chrome 72以上 跟webrtc的plan-b和unified-plan有关

 

posted @ 2020-04-02 16:03  kakain  阅读(10322)  评论(12编辑  收藏  举报