"几种浏览器播放RTSP视频流解决方案"
RTSP(Real-Time Streaming Protocol)是一种用于实时音视频流传输的协议,但是在浏览器中播放RTSP视频流存在一定的挑战。本文将介绍五种不同的浏览器播放RTSP视频流解决方案。
方案一:H5 + Websocket_RTSP_Proxy
Streamedian 提供了一种“html5_rtsp_player + websock_rtsp_proxy”的技术方案,可以通过html5的video标签直接播放RTSP的视频流。整个架构分为服务器端和浏览器端两部分:
* 服务器端:RTSP服务器将视频流转换为WebSocket流,然后通过WebSocket协议传输到浏览器端。
* 浏览器端:使用html5的video标签播放视频流,通过WebSocket协议与服务器端进行通信。
方案二:RTSP 转 RTMP 到 RTMP 服务器,转 http-flv
该方案通过RTMP服务器将RTSP视频流转换为RTMP流,然后将RTMP流转换为http-flv流,最后使用flv.js播放flv.js将FLV文件流转码复用成ISO BMFF(MP4 碎片)片段,再通过Media Source Extensions API传递给原生HTML5 Video标签进行播放。flv.js使用ECMAScript 6编写,然后通过Babel Compiler编译成ECMAScript 5,使用Browserify打包。
方案三:RTSP 转 RTMP 到 RTMP 服务器,转 hls
该方案通过RTMP服务器将RTSP视频流转换为RTMP流,然后将RTMP流转换为hls流,最后使用video.js播放。video.js是一款web视频播放器,支持html5和flash两种播放方式。
方案四:VLC 或者 SmartPlayer 第三方插件播放
该方案使用VLC或者SmartPlayer第三方插件播放RTSP视频流。VLC不再多说,几乎做流媒体的开发者都知道,SmartPlayer是大牛直播SDK(Github)的播放插件,延迟和功能体验更好。插件形式的优点是无需二次转换,直接通过ActiveX控件的形式播放,延迟非常低,缺点是只支持IE浏览器。
方案五:RTSP 转 WebRTC 播放
该方案通过WebRTC将RTSP视频流转换为WebRTC流,然后使用video标签播放。浏览器对WebRTC的支持良好,特别是在H264编码方面几个主流的浏览器都已经支持了。WebRTC使用SRTP进行媒体数据的传输,那么我们只需要将RTP中的负载数据通过WebRTC通道发送给浏览器,而浏览器端只需要通过video标签播放即可,目前RTSP转WebRTC对浏览器的适配比较好,延迟也比较低。
五种解决方案各有其优缺,开发者可以根据实际情况选择合适的解决方案。