視頻直播技術詳解:直播的推流調度

做爲直播傳輸的第一步,推流調度對於直播鏈路的影響很是大。本篇文章將針對這個話題,從傳輸的角度,講一講網易雲信直播是如何作好推流調度的。docker

推薦閱讀
《視頻私有云實戰:基於Docker構建點播私有云平臺》
《如何快速實現移動端短視頻功能?》

直播推流是什麼

首先,直播推流,即主播將本身的本地客戶端採集編碼後的視頻數據「推」出去。推流會涉及到兩個問題:視頻推到哪裏去了以及觀衆從哪裏將流拉到播放端觀看。
主播推流是推到了直播接流服務器,由接流服務器負責分發到更高一層的傳輸層去將視頻流推往全球的觀衆處。直播接流服務器是視頻流從客戶端出發後的第一站,也是對傳輸質量影響最大的一站。直播上行調度處理的問題就是給推流客戶端選取一個合適的接流服務器。緩存

直播接流服務器的調度和部署

直播接流服務器的調度和部署大有講究:
首先,國內因爲網絡運營商的複雜性,存在衆多運營商,小運營商借大運營網絡等各類問題。對直播上行調度來講,第一步的挑戰就是須要識別出客戶具體的地域和網絡類型。這一步一般是經過一個網絡IP庫來處理。雖然網絡上存在着各類各樣的IP網絡庫,但準確性並沒有法保證。網易雲信基於20年的互聯網經驗,積累了大量的IP信息,擁有本身的IP庫,相對於網絡上通用的IP庫能更精準地識別出各地區及運營商問題。
其次,則是調度自己了,即按客戶的來源,分配給推流端對應的接流服務器。最多見的系統,是基於DNS的調度。網易雲信固然也支持這種調度方式。即給定一個域名,經過網易的DNS權威服務器解析,按照相應的規則,結合客戶的運營商和地域信息,分配對應運營商和相近地域的接流服務器給推流客戶端。好比,杭州的用戶使用域名xx.live.126.net推流,在不考慮DNS緩存的狀況下,它會先走到DNS服務器進行域名解析,網易的DNS權威服務器會最終接到這個解析請求,並按IP庫查出的對應地區和運營商,給予一個合適的接流服務器的IP地址,返回給客戶端。客戶端的推流便可以推到這臺接流服務器了。
DNS系統是個通用的解決方案,優勢即不須要額外的環節介入,直接基於DNS便可實現調度。但它的缺點也至關突出:DNS系統爲性能考慮,作了緩存。若是某臺接流服務器因爲各類緣由宕機不可用了,而客戶端還會經過緩存取到這臺機器做爲接流服務器,這樣會致使客戶端推流不可用。客戶端就須要等到對應的DNS緩存失效後,才能使用業務,而這個緩存的失效時間也很複雜,國內的運營商可能會對DNS緩存作額外的延長,這時直播業務可用性就沒法保證了。另外一方面,DNS系統看到的「客戶IP」並不必定是客戶視頻流出口的IP,而是本地DNS出口的IP,這可能會致使一些DNS系統的誤判。服務器

網易雲信如何作好推流調度

網易雲信擁有本身的直播調度系統。當用戶使用網易雲信直播SDK進行直播時,SDK會聯繫網易雲信的調度系統直接獲取接流服務器地址。因爲網易雲信調度系統部署選取了多線BGP,與衆多小運營商之間都拉了專線,所以小運營商用戶在聯繫網易雲調度系統時,不會走第三方大運營商的出口,而是直接走專線出口,這樣能夠最大程度上下降調度系統對於用戶網絡運營商的誤判。網易雲信調度系統在海外也會有對應的調度節點存在,即在海外,客戶端一樣能夠取到合適的接流服務器地址。
另外一方面,網易雲信的調度系統與全球各邊緣上行接流服務器之間有着緊密的聯絡,會實時監控各接流服務器的實時CPU、內存、網絡等資源使用情況,從而最終給出一個最合理的調度結果。
網易雲信的用戶,能夠經過使用網易視頻SDK而跳過上述DNS可能存在的問題,而進行更精確的調度,獲得更佳的直播體驗。
直播系統的上行調度,很大程度上影響着整個直播的質量。若是上行接流服務器調度的不夠好,好比客戶端運營商識別錯誤致使客戶端將視頻流進行了跨運營商的傳輸,那麼網絡就很容易不穩定而產生網頓等現象。網易雲信直播服務經過以上各類手段,最大程度保證了調度的準確性。網絡

想要獲取更多產品乾貨、技術乾貨,記得關注網易雲信博客`。ide

相關文章
相關標籤/搜索