之前用了videojs这个插件来播放视频流,这个插件其实是用flash来播放的,但是2020年底chrome不在支持flash,之后网页端要怎么实现实时视频的播放?
B站的看他直播有HTML5和Flash两种播放选项,但是Html5只支持MP4,它又是怎么实现直播的呢?
请教下各位
回答:
HTML5 并不是只支持 MP4,Media Source Extension(MSE) 了解一下?
事实上已经有两种协议支持视频流并且可以直接用 HTML5 Video 来播放,HLS 和 DASH,safari 支持 HLS,chrome 可能觉得支持 MSE 所以 HLS 就不原生支持了; DASH 是比较新的协议,还没有原生支持的。不过借助 MSE 是能够在不支持的浏览器上实现 HLS 和 DASH 的。HLS/DASH 延时相对较长,低延时方案可以用 websocket 配合 MSE 来实现。
MSE 可以让你用代码来控制媒体流中的数据源,把数据封装喂给 audio / video 来呈现。而获取数据的方式可以是前端能做到的任意方式,fetch/XHR 或者 Websocket 都行。这里就需要一台后端服务器把 rtsp 转成 websocket 来传输(ffmpeg),前端通过 websocket 接收数据,再通过 MSE 喂给 Video 标签来展示。
另外 WebRTC 也可以做到低延时视频流回放,有兴趣可以了解一下。