Windows PC、 Linux、 Android、 iOS多平台支持H5无插件播放RTSP摄像机解决方案

需求分析

视频流媒体监控行业已经进入互联网时代,浏览器承载了绝大多数的互联网访问流量,目前在网页上播RTSP流的普遍做法是将RTSP转成互联网直播协议RTMP或者HLS;而RTMP协议播放需要Flash插件,且其衍生的FLV或者HLS协议延迟很大(2s以上) ,根本达不到视频流媒体传输低延迟的要求。

早年风靡一时的互联网直播RTMP协议,只有flash浏览器插件播放器才能支持,而Flash不支持RTSP,以后估计也不会支持,而FLASH插件也已经被浏览器厂商淘汰;

那么我们可以自己做浏览器插件播放RTSP,通过npapi、ppapi插件,IE用的ocx插件就可以把播放器可执行程序做成插件给浏览器调用;但是,兼容性太差了,开发成本过高。在PC web兼容性上面,目前最好的方案是flash或者H5,在手机 web/微信兼容上面,毫无疑问,H5是唯一选择;

解决方案

如何实现解决上述需求中的几点问题,解决方案如下:

通过H5直接播放RTSP协议

在PC端通过流媒体输出兼容性强的RTSP协议,通过WEBSOCKET直接和H5交互直接播放RTSP协议,那么以上问题就迎刃而解了,即保证了低延时又能直接网页端无插件播放,简单高效;同时同步输出:rtmp/hls/http-flv多种码流,增加前端的兼容适配,就能完美地达到想要的方案,总结来说,需要通过以下几个步骤:

  • RTSP拉流;
  • 音视频转码(可选);
  • 流媒体服务器RTSP转发+WEBSOCKET代理;
  • 流媒体服务器多协议转发RTMP/HTTP-FLV/HLS/WS-FLV;
  • 前端H5无插件取流播放;

技术实现

  1. RTSP拉流
    目前市面上能非常兼容地拉取各个厂家的RTSP流的方案总结来说有两种:

Live555

Live555取流实时性高,但是兼容性差,对某些小众厂家的RTSP流或者标准性较差的RTSP流可能存在拉不到流的问题;

FFmpeg

FFmpeg拉流稳定性高,兼容性强,实时性相对较低,我们通常可以通过调整参数来提高实时性。

当然,两种都能比较不错地请求获取到各个厂家的摄像机码流,但从兼容性、稳定性可靠性、以及可操作的灵活角度上来说,FFmpeg更胜一筹,

没有绝对,根据需求,也许您就只需要接入某两款特定类型的摄像机呢,怎么适合现场需求怎么来;

2.音视频转码(H.265转H.264,音频转AAC)

由于目前WEB前端H5的支持上,对H264的支持更好一些,比如:H264支持硬件解码,解码效率更高;而H265只支持软解吗,解码效率相对较低;所以,我们需要将各种视频格式:H.265、MJPEG、MPEG4转成H.264再转发给H5播放,各种音频格式:G.711A/U、G.726,都统一转码成AAC格式,同样的道理,H5对AAC支持更好一些;而音视频转码,业界公认的神奇当然是FFmpeg。

3.流媒体服务器RTSP转发+WEBSOCKET代理

SkeyeSMS支持RTSP转发流媒体服务,我们参考Live555的轻量级RTSPServer流媒体服务设计思想,充分吸收其超低延迟的特点,在此基础上设计多线程分发策略,提高RTSP流媒体分发并发能力和分发效率,弥补Live555单线程分发的并发不足的缺陷。同时,增加WEBSocket代理算法策略,在不影响原有RTSPServer分发策略的基础上共用一个分发缓存队列,建立和H5交互的高效分发通道,达到页面多并发无插件播放RTSP的效果。

关于时间戳调优上,部分监控厂商(大华、雄迈等)的摄像机,其出流的时间戳是极其不均匀的,这就会导致流媒体分发的流经常会出现快放、慢放、卡顿缓冲加载的现象,所以就需要在流媒体分发时对时间戳进行一次均匀化,这一点上可以参考的ffmpeg的-re命令的方案,对时间戳进行了优化,保证均匀播放;

4.流媒体服务器多协议转发RTMP/FLV/HLS
这里说到的RTMP服务器有几种输出协议:

* rtmp
* hls
* http-flv
* ws-flv

SkeyeSMS参考nginx-rtmp-module流媒体rtmp转发服务,在此基础上开发 了对 http-flv和ws-flv协议的支持,剔除了其RTMP推流模块,以免无端增加流转发延迟,并优化提高流媒体转发的效率,实现高效、稳定、高并发的多流媒体协议分发;

5.前端兼容取流播放

SkeyeVSS前端采用业界广泛使用的VUE+elementUI先进的前端框架,能响应式地接受各种不同平台终端的请求,为PC web、手机 web、微信分配从网络摄像机流前端获取RTSP并通过SkeyeSMS媒体服务器转发rtsp、rtmp、hls、http-flv、ws-flv等直播流;

H5播放rtsp流 demo h5 rtsp 视频播放器_H5播放rtsp流 demo

关于SkeyeVSS

SkeyeVSS是一款基于Web网页H5无插件直播点播的视频云融合管理系统:

  • 支持 WEB 页面配置管理;
  • 支持组织机构管理;
  • 支持设备或平台通过GB/T28181协议接入;
  • 支持IPC、NVR通过Onvif协议接入;
  • 支持IPC、NVR通过RTSP协议接入;
  • 支持设备状态管理, 可实时查看设备在线状态;
  • 支持标准的RTSP协议输出;
  • 支持基于WebSocket的RTSP协议输出;
  • 支持全平台(PC/Android/iOS/微信/H5)观看;
  • 支持 WebRTC、RTMP、HLS、HTTP-FLV、Websocket-FLV、RTSP 、Websocket-RTSP分发
  • 支持网页端H5无插件播放、回放;
  • 支持多分屏多路同时实时播放;
  • 支持多分屏多路同时录像回放;
  • 支持H264、H265视频解码播放;
  • 支持云台控制,焦距缩放、预置点控制;
  • 支持设备端录像、查询、回放;
  • 支持服务端录像计划、时段查询和检索回放;
  • 支持服务端录像自定义时段下载;
  • 支持报警管理;
  • 支持电子地图;
  • 支持电视墙上墙管理;
  • 支持GB/T28181国标协议级联;
  • 支持用户管理,权限验证,播放鉴权;
  • 支持Windows & Linux(ARM/国产操作系统)部署;

SkeyeVSS综合安防视频云服务, 提供一站式私有化部署视频安防综合管理系统解决方案。SkeyeVSS秉持网络化、集成化、智能化的理念,采用先进的软硬件开发技术,解决了综合安防系统集中管理、多级联网、信息共享、互联互通、多业务融合等问题。

SkeyeVSS其独创的ws-rtsp流媒体直播技术,兼容传统安防流媒体的同时,不需要安装浏览器插件,解决互联网接入安防监控延迟高、起播慢等问题;支持全平台终端H5直播点播(PC、Web、Android、iOS)。