鋒利的javaCV,2020最新流媒體教程,從零開始三分鐘教你搭建直播平臺

寫在開始之前

之前也分享過不少零散的技術文章,包括音視頻、圖像處理和流媒體服務相關的技術都略有涉獵。但是,都寫得比較偏具體功能的實現,不夠系統。因此也讓很多讀者產生迷惑和不解。需要讀者對流媒體相關的架構和知識有一定的瞭解之後才能上手。

對於開發者而言,這些都還好說。但是對於非技術型讀者來說,可以說是直接勸退了,因此本系列文章分爲面向開發者得技術向非技術向兩種教程分別更新,對於“非技術向”系列教程將不會出現代碼編寫,力求通俗易懂;對於開發者得“技術向”系列教程將會出現大量得代碼開發和優化教程。

本系列文章將以具體的應用場景作爲實戰教程,系統的講解整個直播平臺的架構是如何設計的,如何開發這些子系統或者模塊功能,從而搭建一套完整的直播平臺。

補充:本教程也適用於視頻會議視頻監控等應用場景。視頻會議與直播中的連麥原理是相同的,視頻監控與直播平臺的差別是沒有主動推流端,多了拉流或者轉流端。

直播平臺結構

爲了防止出現盲人摸象的問題。以我們將由面到點的從整體瞭解整個直播平臺的結構,然後把這個面分解成一個個子系統或者具體模塊功能,這樣,我們才能夠清晰的瞭解直播平臺下每個系統模塊的功能是做什麼的,如何運行的。

最簡單的直播平臺結構:
最簡單的直播平臺架構事實上我們只要搭建了流媒體服務,就已經完成最簡單的直播平臺了。剩下的就是等直播UP主推流,然後用戶觀看就可以了,是不是很簡單。

當然了,光是這樣還不行,用戶不知道如何獲取和播放你得直播地址,直播UP主也不知道往哪裏推流,直播平臺就是幫助用戶顯示直播UP主的房間,方便篩選和觀看,也方便用戶發彈幕能夠和正在直播的up主交流。至於直播UP主這塊的推流,還是需要知道直播地址並使用OBS等推流工具進行推流纔可以直播。

CDN分發
爲什麼會用到CDN分發,這是因爲使用直播平臺觀看直播的用戶多了以後出現了一個重大問題,那就是帶寬不夠了。

舉個例子:假設你只有一個直播UP主在推一路1080P高清直播,碼率是4Mbps/s(每秒512KB),現在有一千個用戶同時在觀看,每個用戶拉流也是4Mbps/s(每秒512KB),那麼一千人同時就需要4000Mbp/s(每秒500MB的實時流量)的帶寬,也就是說不到三千的用戶就需要一萬兆的帶寬了。

怎麼辦?可想而知,光靠帶寬硬抗肯定是不現實的。而且國內帶寬費用可不便宜。所以這時候需要CDN來幫助緩解流媒體中心服務器的帶寬壓力了,CDN分發一般會按照流量收費,天下沒有免費的午餐。
這時候直播平臺的結構變成了這樣:
在這裏插入圖片描述

推流端

推流端一般使用的軟件是OBS推流工具。這個工具就不多贅述了,用的實在很廣泛。
當然了,對於開發者而言,肯定需要的是FFmpegopencv了,FFmpeg是做音視頻編碼推流,opencv當然是用來實現美顏

流媒體服務

流媒體服務就是實時視頻的中轉站。
流媒體服務一般而言:nginxsrsred5等等,這個系列的後續教程會主要涉及nginxsrs

拉流播放端

PC端:VLC
web端:videojs,flv.js,hls.js,ckplayer等等
移動端:ijkplayer
微信小程序:最好用企鵝雲的播放,否則會出現兼容性問題,親測只有企鵝自己的網頁播放器纔可以同時兼容QQ微信小程序和公衆號。

系列教程後續會主要使用VLC測試拉流播放,雖然VLC延遲很大,但是兼容性是最好的,網頁端測試主要使用videojs和flv.js以及企鵝的播放器

CDN分發

很多CDN服務商都支持rtmp,flv,hls等流媒體的分發,由於涉及具體廠家,不打廣告,這裏就不列舉了。

下一章

從零開始開發和搭建直播平臺-流媒體服務搭建之1-nginx流媒體服務搭建
從零開始開發和搭建直播平臺-流媒體服務搭建之2-srs流媒體服務搭建

javacv系列

推流端實現:https://blog.csdn.net/eguid_1/article/details/52678775

拉流端實現:https://blog.csdn.net/eguid_1/article/details/52680802

以前寫的流媒體服務搭建

nginx-rtmp服務搭建:https://blog.csdn.net/eguid_1/article/details/51749830

感謝支持eguid原創文章。歡迎轉載文章,但還請註明出處,創作不易,萬分感謝!

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