现在越来越多的摄像头开始支持H.265,因为H.265相比H.264压缩更高,网络传输消耗的资源更少,并且画质更清晰,但是H.265在浏览器中却并不普及,虽然2022年 9 月份,Chrome 发布 M106 版本,开始支持硬件解码,但是WebRTC 并不支持直接传输 h265 视频流。
关于网页播放摄像头RTSP视频流,网上有很多免费开源方案,大多数是通过把RTSP转码成HLS或者RTMP视频流,然后通过Flash插件播放,但是大多数延迟非常高(比如:HLS延迟达到十几秒),并且播放多路或者播放高清视频也非常容易卡顿(服务器转码,资源消耗非常大)。
下面介绍两种用的比较多的方案:
1.ffmpeg +flvjs + websocket + node
原理:利用ffmpeg(开源)把RTSP转码成FLV,用 websocket 传输FLV流,最后用 flvjs(bilibili 开源)在浏览器播放。具体的技术细节可以自行搜索。
效果:延迟2秒以上,播放多路的时候比较占用CPU资源,并且存在卡顿和花屏的情况,要求不高的非商业可以使用。
2.猿大师播放器,官网:http://www.yuanplayer.com/
原理:通过猿大师提供的内嵌网页专利技术,底层调用VLC控件可实现在Chrome、Firefox、Edge等高版本浏览器中低延迟、多路同时播放RTSP实时视频流。
效果:因为调用的是VLC控件播放,和用VLC桌面播放器直接播放效果是一样的,VLC默认缓存是1000,所以延迟是1S左右,如果要降低延迟可以通过修改降低缓存来实现,最低可以到300毫秒左右,同时可以播放20路以上视频不卡顿,适合对延迟要求高的场景,如交通、公安、消防等
多路播放视频效果:
在VUE中实时多路同时播放海康威视RTSP视频流,兼容Chrome、Firefox等浏览器_哔哩哔哩_bilibili
低延迟效果视频效果:
海康威视摄像头RTSP视频流高版本Chrome网页零延迟播放效果演示视频_哔哩哔哩_bilibili