一對一直播軟件開發中,如何進行推流?

推流環節對直播鏈路的影響很是大,若是推流網絡不穩定,就算前期在音視頻處理、編碼和封裝上作何種優化,用戶體驗都會很糟糕。所以接下來,小編就以一對一直播軟件開發爲例,爲你們講述下推流過程當中涉及的協議、實現方案等。android

更多Android高級面試合集放在github上面了(更多面試文檔,項目下載,源碼)
https://github.com/xiangjiana/androids
須要更多項目下載,源碼 的小夥伴能夠點擊關於我 聯繫我獲取

1、推流的定義

推流實際上就是在把封裝好的視頻和音頻傳輸到服務器的過程。換句話說,就是將現場的視頻信號傳到網絡的過程。此外,推流這個環節對網絡的要求比較高,若是網絡不穩定,直播的效果就會不好,像是遇到卡頓、延時等狀況。git

2、推送協議種類

根據使用案例,一對一直播軟件開發中,接觸到的推送協議有如下幾個:
程序員

一、RTMP
RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的首字母縮寫。該協議基於TCP,是一個協議族,包括RTMP基本協議及RTMPT、RTMPS、RTMPE等多種變種。RTMP是一種設計用來進行實時數據通訊的網絡協議,主要用來在Flash平臺和支持RTMP協議的流媒體之間進行音視頻和數據通訊。支持該協議的軟件包括Adobe Media Server、Ultrant Media Server、red5等。github

RTMP是目前主流的流媒體傳輸協議,普遍用於直播領域,能夠說市面上大多數的直播平臺都應用了這個協議。優勢:CDN廠商基本都支持此協議,兼容性強,且在各平臺上實現容易。缺點:傳輸成本高,在弱網環境下比較容易丟包;不支持瀏覽器推送;最重要的一點是RTMP是Adobe的私有協議,可是Adobe已經再也不更新。
一對一直播軟件開發面試

二、WebRTC
WebRTC,即網頁即時通訊的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的API。它目前已經開源而且在Google、Mozilla、Opera支持下被歸入萬維網聯盟的W3C推薦標準。相對於一對一直播軟件,它更多的是普遍應用在各類視頻會議中。此協議的優勢是:因爲是歸入W3C標準,主流瀏覽器對它的支持逐漸提升,相比起RTMP來說,它在弱網狀況下的空間優化較大,並且支持點對點通訊,從而下降了總體延遲。可是缺點也比較棘手,就是目前傳統CDN中沒有相似的服務提供。
一對一直播軟件開發瀏覽器

三、基於UDP的私有協議
有些一對一直播軟件開發商會使用UDP做爲底層協議開發本身的私有協議,由於UDP在弱網環境下,經過一些定製化的調優能夠達到比較好的弱網優化效果,但一樣由於是私有協議也勢必會有現實問題:開發成本高,每每須要自建CDN或者和CDN達成協議,另外因爲兼容性較差,在面對升級時可能得不到技術支持。服務器

3、推流實現方案舉例

一、在推流傳輸方面所有由開發商本身搭建,花費較大,整體來講不太現實。
二、在直播軟件開發中,能夠和一些主流CDN廠商或者雲視頻服務商合做,它們每每會提供推流的「一條龍」服務。
三、大多數直播平臺都會同時接入多個視頻雲服務提供商,這樣能夠作拉流線路互備,對推流後視頻集羣再進行優化也可提升直播的流暢性和穩定性。
以上,就是一對一直播軟件開發中,一些關於推流的簡單介紹網絡

關於我

更多Android高級面試合集放在github上面了優化

須要的小夥伴能夠點擊關於我 聯繫我獲取編碼

很是但願和你們一塊兒交流 , 共同進步

也能夠掃一掃, 目前是一名程序員,不只分享 Android開發相關知識,同時還分享技術人成長曆程,包括我的總結,職場經驗,面試經驗等,但願能讓你少走一點彎路。

相關文章
相關標籤/搜索