Web下无插件播放rtsp视频流的方案总结

折腾了一下午,稍微搞明白了几种可行的方案,罗列如下:

方案一:服务器端用 websocket 接受 rtsp ,然后,推送至客户端

Web下无插件播放rtsp视频流的方案总结_第1张图片此方案,客户端因为直接转成了mp4,所以H5的video标签直接可以显示。

参考地址:https://github.com/Streamedian/html5_rtsp_player

方案二:主流浏览器不再支持 ActiveX插件,改用 NPAPI 或者 PPAPI 来开发浏览器播放插件,这种方案,NPAPI 由于安全问题,已经不被Chrome支持了,PPAPI 是可行,但涉及到C++编程,难度稍大。

方案三:此方案应该是最主流的。

用 ffmpeg 把 rtsp 转成 rtmp 通过 nginx代理出去,其中核心处用到了 nginx 的 nginx-rtmp-module 模块,在客户端则使用著名的网页播放器 jwplayer 来播放 rtmp 流即可,但是 jwplayer 播放器好像是付费的,此方案也是搭建流媒体服务器的通用方案之一。

方案四:与方案三类似,只是这里使用 ffmpeg + nginx 把 rtsp 转成了 hls 协议,客户端使用 videojs 播放

参考地址:https://videojs.com/getting-started/ 

方案五:使用 WebRTC,WebRTC 是支持网页浏览器进行实时音视频的一套API,例如:HTML5 通过 webRTC 直接调用摄像头,但是如果要实现远程视频流的显示,则需要将 RTSP 转换为 WebRTC 流,供 web 端显示

参考地址:https://github.com/lulop-k/kurento-rtsp2webrtc

方案六:此方案比较高大上,但是性能与 Native 比还有明显差距。视频数据用 websocket 传到前端,在前端进行软解码,解码器是通过 Emscripten 把C语言的解码库编译成 .js 或者 .wasm 给前端调用,解码后的 YUV 数据转换为 RGB 推到 HTML5 的 Canvas 播放。

参考地址:http://taobaofed.org/blog/2019/03/18/web-player-h265/

你可能感兴趣的:(Web)