直播系統解決方案:直播平臺如何開發搭建

當下,直播依然很是的火爆,想要分羹的人也是很是多,看到這麼充滿激情的直播市場,免不了一些從事開發編程人員對直播的進一步開發和研究,但就算是在直播這麼「裸露」的狀況下,不少人對於直播也是很是的懵懂,下面我就來給你們講解一下如何搭建一個直播平臺,直播系統的開發:

首先是直播視頻採集端,由主播經過攝像頭手機等採集設備,採集視音頻流,編碼後採用RTMP協議推流到直播流服務器。這裏採用H.264編碼對視頻流進行編碼,使用AAC對音頻流進行編碼,採用這兩種編碼的緣由是hls協議要求使用這兩種編碼。
接下來直播服務器會對從採集端推送的流進行必定的處理。好比,hls協議會將視頻流切片成一個個的TS視頻文件緩存在服務器中,同時生成一個m3u8文件記錄了視頻流中的包含的TS文件。

直播總體流程圖以下:
java


以後若是有播放器請求某一個直播連接,服務器會使用RTMP或者hls協議將流推送到播放器。那麼咱們該若是根據狀況選擇這兩種協議呢。首先,咱們須要明確一點,這兩種協議各有利弊。
RTMP
公司:Adobe
平臺支持:FlashPlayer等一些網頁端的播放器、移動端 Vitamio
延遲:三秒鐘左右的延遲,實時性較高

HLS
公司:Apple
平臺支持:Apple產品原生支持,Android3.0以上原生支持,桌面機的瀏覽器須要使用一些第三方庫,如JWPlayer
延遲:根據TS長度不一樣而不一樣,通常會有10s以上的延遲

綜合以上因素,咱們認爲若是對實時性要求較高,那麼使用RTMP會比較好。網頁端使用RTMP會比較好,由於Flash Player原生支持,而大多數的瀏覽器都會安裝Flash player。而在移動端若是對實時性要求不高,那麼採用hls比較好,由於ios包括3.0以上的安卓都原生支持hls協議。


視頻採集與編碼
視頻採集能夠有多重途徑,好比經過電腦攝像頭,經過OBS等錄屏軟件進行錄屏,經過手機攝像頭採集。因爲目前戶外直播和移動互聯網很火,因此咱們就選擇實如今安卓設備上經過攝像頭採集視頻流。爲了實現這一功能,咱們使用了一個開源項目javacv 它包含了一些在計算機視覺領域應用比較多的庫,咱們主要使用的是它的FFMpeg庫。使用FFMpeg的FFMpegFrameRecoder類,咱們可以方便地將從android攝像頭採集到的幀傳輸到服務器。


直播流服務器
關於直播服務器,咱們選擇使用咱們中國人開發的一個開源項目——srs,它支持RTMP/HTTP/RTSP等協議的流輸入,支持RTMP/HDS/HLS/HTTP等協議的流輸出,同時它也支持集羣。關於srs的安裝和使用能夠直接看它在github上的wiki,這裏再也不贅述。須要注意的一點是該項目在centos 6.x 和ubunut12.x上能正常編譯經過,可是在好比我使用的ubuntu14.04上會有一些依賴包的缺失。因此爲了方便考慮的話,能夠在centos和ubuntu12.x上進行test。


播放器
咱們在試驗的過程當中,使用多種播放器和庫在全平臺實現了rtmp和hls的播放。在網頁端使用了videojs,在安卓端使用vitamio。
固然本文中的解決方案只是最簡單的,對於直播服務器集羣,直播間的建立和管理,直播間直播密碼和權限,內容分發網絡CDN都沒有進行深刻的研究。因此若是你在直播平臺開發搭建上仍是有太多問題的話能夠找一家專門開發直播的公司作,好比像美麗播直播這種專門開發直播系統、直播平臺的公司,不只可以減小成本還可以快速的就可以實現你的直播夢想。http://www.meilibo.net(美麗播)
android

相關文章
相關標籤/搜索