现在导师让做一个html实时显示rtsp视频流项目,在网上找了很多资料,主要有两种方法,插件和转流两种,第一种插件方法2015年之前Chrome等浏览器还未取消对 NPAPI插件支持的时候方案,继续使用低版本Chrome、Firefox等浏览器,通过VLC原生播放器直接播放,也不需要服务器支持,延迟非常低,终端也可以使用硬件的加速能力,多路播放也毫无压力。
缺点也非常明显:无法使用最新的浏览器和操作系统,不适合商用。如果能解决高版本的Chrome、Firefox、Edge等浏览器使用,此方案无疑是最佳选择!
第二种转流的方法:1.先转码再转流方案
原理是先在服务器端把RTSP转码成可播放的视频流,再提供给客户端播放器播放。此方案虽号称是无插件方案,但是需要服务器支持,两次转码导致延迟较高,一般高达数秒甚至数分钟。此方案首屏画面显示很慢。因为需要服务器不断转码转流,对CPU和内存消耗较大,带宽占用高,长期综合使用成本也很高。如果多路播放或者看高分辨率或 H.265视频,很可能就会出现卡顿、花屏等情况。
综合来看,此方案摄像头较少或者对延迟、画面要求较低的需求,商用难堪重任。
2.先转流再转码方案
原理与方案一不同点是把在服务器上转码的过程转移到终端电脑上,目前在高版本浏览器(除IE外)中,已经支持 WASM技术,可以使用此技术在终端电脑上把RTSP视频流转码后播放。此方案同样需要服务器的支持,由于在终端电脑转码,终端电脑配置好坏决定了播放质量,并且由于WASM只能软解码,无法利用终端电脑的加速能力,且不支持多线程,多路播放或者H.265格式视频,也容易出现卡顿、花屏等情况,大量占用电脑CPU和内存,电脑无法再做其他事情,体验非常不好。
综合来看,此方案也尽量慎用。
我最终用的是,第一种插件的方法,谷歌浏览器就用41版-44版。然后引入vlc插件,下面是引入插件方法
最后是可以调用外部摄像头的,但是有一个缺点就是,低版本的谷歌浏览器不支持js技术,如果单纯想做视频调用的就考虑用低版本浏览器,但是如果想商用的话,猿大师是个不错的选择。