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---

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章