JavaCV音视频开发宝典:使用JavaCV和springBoot实现websocket-flv直播服务,无需流媒体服务,浏览器网页flv.js播放器直接播放rtsp,rtmp等实时视频_音视频开发


硬核注意:本文默认读者已经熟练掌握springboot和websocket的前置知识并了解流媒体音视频技术。


前言

前面我们已经讲了webm直播,http-flv直播,本章就直接开始动手实现websocket-flv直播。

关于flv格式的起源与发展等等基本知识在上一章:

《​​JavaCV音视频开发宝典:使用JavaCV和springBoot实现http-flv直播服务,无需流媒体服务,浏览器网页flv.js转封装方式播放rtsp,rtmp和桌面投屏实时画面​​》中基本上都讲过了,不再赘述,有兴趣的可以去看看。

websocket-flv是为了解决http-flv的一些弊端而出现的流媒体传输技术。

websocket-flv是要解决什么问题呢?

这就不得不提到浏览器的http有连接限制,一般而言,浏览器http连接数最大不超过6个连接,比如常用的chrome浏览器的最大http连接数是6个,大部分浏览器http连接数限制如下图所示:

JavaCV音视频开发宝典:使用JavaCV和springBoot实现websocket-flv直播服务,无需流媒体服务,浏览器网页flv.js播放器直接播放rtsp,rtmp等实时视频_连接数_02

与大部分http接口使用短连接不同的是,http-flv是长连接,而且不会释放,会一直占用http连接,所以浏览器端过多使用http长连接(超过6个)之后会导致浏览器http连接阻塞,无法发送任何http连接,也无法请求任何http接口。

websocket-flv兼容性

现代浏览器(chrome、safari、firefox、edge、IE11+等)都可以直接播放websocket-flv格式视频。

利用浏览器的mse特性,来使用基于flv.js转封装技术的播放器来播放JavaCV实现的websocket-flv直播。

参考资料

  1. ​ffmpeg官方文档​
  2. ​flv.js​



作者:​​eguid​​​,​