web端播放rtsp视频流

由于项目需要,对web端播放大华/海康的摄像头视频流做了点研究:
在web页面中播放rtsp直播数据流方法
7 ways to stream RTSP on the page
使用flv.js做直播
在chrome中呈现RTSP
整合vxgPlayer使chrome支持vxg_media_player播放rtsp视频
总结下想在浏览器端播放摄像头的视频流有以下几个方案:
1.被淘汰的:VLC插件,flash插件
2.即将被淘汰的:VXG 播放器
3.可以丝滑播放的:streamedian方案,bilibili/flv.js方案

第一类方案中,我尝试过flash插件,效果还可以,延迟低,缺点就是flash每次要允许,而且已经彻底被淘汰了

第二类方案,我试了下,默认最新版的chrome浏览器是不支持的,不过可以开启Native Client后是可以的。但我实测能播放视频流,但非常卡顿

第三类方案是目前看来比较合理的,其中streamedian方案是要收费的,我没有进一步尝试。下面说下B站的flv方案,这个方案核心的逻辑就是把rtsp流通过ffmpeg转换为flv,然后再用flv.js来播放。那这个方案的核心就是如何用ffmpeg进行转换。
这里有两个解决方案:
1.使用livego,这里有介绍使用flv.js做直播。我之前用它在项目上做了一段时间,可以实现,延迟小,但画面有时候会模糊,有时也会加载失败
2.使用node express,这里有介绍flvjs_test。这个方案的好处是,前端传递的是rtsp地址,不像第一个方案里面需要后端先生成flv文件,然后访问。这个方法最终访问的是ws的地址,以webscoket的形式传递数据,目前来看这种方案更适合,上面提到的streamedian本质上也是将rtsp转成webscoket流进行的。

总结:
使用flvjs_test中提到的解决方案,完美实现了在浏览器中播放,无论是播放清晰度,延迟性和摄像头切换等各个方面表现都非常好。如果你用大华摄像头的话,demo中的代码需要稍微修改下,如果是海康的话应该直接用就行了。

你可能感兴趣的:(架构之路,前端,javascript,chrome)