JavaCV音视频开发宝典:使用JavaCV和springBoot实现http-flv直播服务,无需流媒体服务,浏览器网页flv.js转封装方式播放rtsp,rtmp和桌面投屏实时画面

《JavaCV音视频开发宝典》专栏目录导航
《JavaCV音视频开发宝典》专栏介绍和目录

JavaCV音视频开发宝典

前言

自从2021年初开始,各个浏览器开始禁用flash插件,以前直播中经常使用的rtmp无法在网页中使用,各种浏览器web网页直播技术层出不穷,有webm、hls、dash、http-flv、websocket-flv,webrtc等等等等不一一赘述,之前,博主写过了webm直播,今天只单独讲讲http-flv,websocket-flv后面再补上。

http-flv缘起

起源于Flash的黄金时代

对于年纪稍微大一些的小伙伴们来说flash可能很熟悉,几乎伴随了童年的记忆,但是还有很多人不了解,所以为了便于没有接触过flash时代的小伙伴们,简单提一下在H5火热之前的Flash时代。
伴随着Flash大行其道的是rtmp流媒体和flv格式的视频、游戏等等的流行在当年在计算机硬件水平没有这么高的情况下,至今很多效果都远比现在的H5还要绚丽,更流畅,flash游戏和流媒体带来的极致体验,甚至于很多网页直接就是使用flash开发的,这个就不多提了。

http-flv诞生,伴随着flash时代的落幕

这个情况一直持续到2020年各大浏览器厂商全面禁用flash插件,flash时代这才正式落幕。但是问题也随之而来,很多流媒体网站(比如B站、you.ku、爱.奇.艺等视频网站)都大量使用了flash时代的flv视频,怎么办?把所有资源全部转换成mp4、m4s或者ts吗?这个工作量太大了,显然不太可能,这时候就不得不提到Hls.js,也是因为参考hls.js的mse转封装技术,B站有位月薪5k块(你没看错,就是如此廉价)的大佬开发了著名的flv.js,在网页流媒体(webrtc)技术尚未成熟的时候,不得不说flv的mse转封装技术作为过渡几乎是行业唯一之选。也正因此,才有了今天的这篇文章。

浏览器兼容性

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

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

参考资料

  1. ffmpeg官方文档
  2. hls.js
  3. flv.js

实现功能

需要现代浏览器(IE11+以上就可以)以及flv.js(基于flv.js封装或者实现mse转封装功能的播放器,比如video.js,xgplayer等)

1、一个用来提供http-flv视频转发的http服务。
为了简单起见,使用springboot构建一个简单的http接口用来转发(当然大家也可以使用喜闻乐见的netty,这里就一笔带过了)
2、JavaCV解析读取文件或者rtsp、rtmp直播或者本机摄像机、屏幕等视频源
3、使用h264编码对视频源进行转码成flv视频格式并发送视频流到springboot的http接口。

本文转载自:https://eguid.blog.csdn.net/article/details/123342546?,完整查看本章请到:https://eguid.blog.csdn.net/article/details/123342546?

---end---

posted @ 2022-03-17 00:03  eguid  阅读(1897)  评论(0编辑  收藏  举报