從零開始開發和搭建直播平台-教程匯總篇


寫在開始之前

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

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

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

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

直播平台結構

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

最簡單的直播平台結構:
最簡單的直播平台架構事實上我們只要搭建了流媒體服務,就已經完成最簡單的直播平台了。剩下的就是等直播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系列

以前寫的流媒體服務搭建

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM