直播原始碼如何搭建一個屬於自己的直播平臺?

vx15610367886發表於2018-03-13

現在直播非常火爆,可以從PC或手機直播,然後從PC或是手機或支援HTML5的瀏覽器 收看。但是,你知道直播平臺後面的技術和實現原理碼?

 正好去年過年的時候,一個朋友破解了AirPlay和Chromecast協議,然後開發了一套技術能夠截獲和播放任何手機(iOS或是Android)螢幕上的任何內容。想到的第一個應用是做一個 直播的直播服務 。比如,通過螢幕直播,你可以邀請朋友看你正在看的直播的電影,球賽,演唱會,晚會,不管是免費的還是付費的。當初的想法是將螢幕的內容,通過AirPlay或Chromecast,推送到後臺伺服器,然後,受邀的朋友就可以從瀏覽器或是其它視訊播放器觀看了。為此,我們搭建和開發了一個直播平臺,現在把我們實現的過程記錄下來和大家共享。首先,視訊有它的播放協議。原則上,RTSP,RTMP,HTTP都可以做直播和點播,但一般做直播用RTSP和RTMP,做點播用HTTP。我們選用的是RTMP協議。RTMP(Real Time Message Protocol/實時資訊傳輸協議)是應用層協議,靠底層傳輸層協議(通常是TCP)來保證資訊傳輸的可靠性的。在TCP連結建立後,RTMP協議也要客戶端和伺服器通過“握手”來建立RTMP Connection,然後在Connection上傳輸控制資訊。RTMP協議傳輸時會對資料格式化,而實際傳輸的時候為了更好地實現多路複用、分包和資訊的公平性,傳送端會把Message劃分為帶有Message ID的Chunk,每個Chunk可能是一個單獨的Message,也可能是Message的一部分,在接受端會根據Chunk中包含的data的長度,message id和message的長度把chunk還原成完整的Message,從而實現資訊的收發。我們看看兩個常用的視訊服務。一個是由客戶端向伺服器發起請求推流到伺服器,這個就是直播的播放服務.另一個是由客戶端向伺服器發起請求從伺服器端接受資料,可以多次呼叫,這就是播放服務。RTMP是直播後面的協議,有很多的開源軟體實現了,細節我們不再細說。下面,我們看看怎麼搭建後臺服務系統。直播客戶端(後面我們要介紹的OBS)將實時視訊推送到NGINX的RTMP模組。RTMP模組會根據配置將視訊流轉換成HLS檔案。這時,HLS檔案可以使用兩種模式播放。一是點播VOD模式,下載當前時間點可以獲取到所有index檔案和ts檔案,並播放。這種模式允許客戶端訪問全部內容,不一定是實時內容。二是Live 模式,實時生成m3u8和ts檔案。它的索引檔案一直處於動態變化的,播放的時候需要不斷下載index檔案,以獲得最新生成的ts檔案播放視訊。一般來說,實況直播時,會有一些延時。下面,來看一個JS實現的HLS player,嵌入到支援HTML5的瀏覽器就可以播放HLS檔案基於上面描述的技術和開源系統,我們用PHP實現了一個簡單的支援多使用者的直播平臺。使用者可以註冊,登入,follow/unfollow,評論,標籤,收看,直播(每個使用者有自己的直播金鑰),等等。直播的精髓都應該討論到了,如果將系統sharding,分層,SOA化,負均衡,cache,就可以搭建出一個可擴充套件的大規模的直播平臺。
       為了讓更多的直播人擁有屬於自己的直播平臺和為每一位直播人打造一個直播夢想作為理念,現在的直播軟體原始碼有了更多有趣新穎的功能:遊戲直播間、一對一直播、短視訊、私密直播間、奪寶遊戲等等,支援各種二次開發等等。如果您需要進軍直播市場的直播平臺,建議找我們專業的直播APP原始碼服務商為您搭建ab65198!
複製程式碼

相關文章