• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 資訊 > 文章精選 >
     首頁(yè) > 資訊 > 文章精選 >

    音視頻合成的云邊緣計算實(shí)現

    2020-02-06 09:44:45   作者:時(shí)杰    來(lái)源:LiveVideoStack   評論:0  點(diǎn)擊:


     

      在互聯(lián)網(wǎng)云時(shí)代的今天,實(shí)時(shí)音視頻的各種計算也在向云端發(fā)展,由于音視頻的數據計算量巨大,加上移動(dòng)、聯(lián)通、電信等運營(yíng)商之間的互通問(wèn)題,使得中心云端的計算壓力巨增,互通性的成本也隨之增加。為了最優(yōu)的解決這一矛盾,三體云在實(shí)踐中不斷的改進(jìn)優(yōu)化,實(shí)現了一套充分利用邊緣云端分散計算的方式,很好的解決了這一矛盾。

      大家好,我是來(lái)自三體云后端服務(wù)器的架構師時(shí)杰,從事有關(guān)編解碼方面的工作。今天與大家分享的內容是三體云服務(wù)器在音視頻合成的元邊緣計算方面的發(fā)展歷程。 之前我是從事廣電行業(yè)的,也從事跟音視頻網(wǎng)絡(luò )相關(guān)的工作,但模式跟現在是完全不同的,以前3G、4G初的階段面向的更多是廣電系列的電視臺、HTV之類(lèi)的視頻,與現在實(shí)時(shí)互動(dòng)視頻還是有一些差別的。

      進(jìn)入互聯(lián)網(wǎng)時(shí)代后,在實(shí)時(shí)通訊方面,不光終端是端對端的,有很多計算都要通過(guò)服務(wù)器進(jìn)行一些混合運算。比如多個(gè)主播進(jìn)行連麥的時(shí)候,他們的音視頻要進(jìn)行合并后傳遞給觀(guān)眾,他們所看到的數據并不是直接從采集端發(fā)過(guò)來(lái),而是要通過(guò)服務(wù)器進(jìn)行各種加工、渲染,最后推到終端。問(wèn)題是在所有的計算過(guò)程中服務(wù)器的結構過(guò)程會(huì )遇到各種的問(wèn)題。今天跟大家分享的就是如何解決以及優(yōu)化遇到的問(wèn)題,并介紹一下三體云在其中是如何做的。

      這次演講的內容主要分為四部分:第一是音視頻合成的相關(guān)的一些解釋?zhuān)瑸楹竺孀鲈贫朔稚⒂嬎氵M(jìn)行鋪墊;第二是音視頻合成整鏈路的基本結構;第三是音視頻合成計算的發(fā)展歷程;最后是三體云在國內、國外一些案例的結構模型。

      1. 音視頻合成的相關(guān)解釋

      1.1 音頻合成

      音視頻合成從文字上解釋就是將發(fā)言者的聲音通過(guò)混音器合成之后再輸出的過(guò)程,也稱(chēng)之為混音。合成器可以是硬件也可以是軟件,在服務(wù)器結構里不強調什么是硬件和軟件的。這張圖就很好的詮釋了音頻合成的一個(gè)過(guò)程,圖中有四個(gè)音頻輸入,經(jīng)過(guò)服務(wù)器進(jìn)行合成后輸出到混音,這是音頻合成的一個(gè)簡(jiǎn)單的模型。

      1.2 視頻合成

      視頻合成是將所有連麥者的視頻畫(huà)面通過(guò)采集編碼后 通過(guò)服務(wù)器解碼進(jìn)行混合,根據指定的布局或者樣式進(jìn)行布局,合成之后再推到觀(guān)眾端。這張圖就是一個(gè)簡(jiǎn)單的模型,所有的主播或者終端客戶(hù),他們采集自己的視頻到服務(wù)器進(jìn)行一個(gè)合成,再推到觀(guān)眾端。這兩個(gè)點(diǎn)服務(wù)器都有在進(jìn)行大量的音頻或者視頻數據計算,我們需要做到將這些大量且復雜的運算進(jìn)行邊緣化。

      1.3 節點(diǎn)類(lèi)型

      音視頻合成鏈路基本結構里涉及到一些圖形節點(diǎn),一種是客戶(hù)端,像手機、平板之類(lèi)的電子產(chǎn)品通過(guò)采集或者聲音的捕捉都是可以的。另一種節點(diǎn)類(lèi)型模式是SFU,它只負責一種點(diǎn)對點(diǎn)的轉發(fā)傳輸。最后一種節點(diǎn)類(lèi)型是MCU,它是一個(gè)真正的核心運算終端,是一個(gè)多點(diǎn)控制單元,將所有終端上傳的數據進(jìn)行正常的分發(fā)以及合成。 其次,服務(wù)器所屬機房分為單線(xiàn)和多線(xiàn),就是某一個(gè)服務(wù)器在云端的部署時(shí),它具有運營(yíng)商的特性。比如舉國內的一個(gè)例子來(lái)說(shuō),單線(xiàn)的指針可以是聯(lián)通的或者是移動(dòng)的,如果一個(gè)客戶(hù)端本身是非聯(lián)通、非移動(dòng),而是電信的,那這時(shí)就需要一個(gè)多線(xiàn),它支持所有運營(yíng)商的接入,這就區分了兩種服務(wù)器的接入方式。

      2. 音視頻合成鏈路基本結構

      2.1 SFU模型

      下面介紹這種接入方式在服務(wù)器結構部署上的優(yōu)勢以及劣勢,這張圖是解釋SFU的一種模型圖,它是所有的終端進(jìn)行SFU服務(wù)器的轉發(fā)傳輸,并且是單進(jìn)單出的一個(gè)模型。

      2.2 MCU模型

      下面介紹這種接入方式在服務(wù)器結構部署上的優(yōu)勢以及劣勢,這張圖是解釋SFU的一種模型圖,它是所有的終端進(jìn)行SFU服務(wù)器的轉發(fā)傳輸,并且是單進(jìn)單出的一個(gè)模型。

      2.3 單線(xiàn)模型

      這個(gè)模型表示了一個(gè)簡(jiǎn)單的單線(xiàn),這里以聯(lián)通為例,如果左邊用戶(hù)是聯(lián)通,只能接受一個(gè)單線(xiàn)服務(wù)器,那么右邊的出口也只能和聯(lián)通的另一個(gè)終端用戶(hù)進(jìn)行連接。

      2.4 多線(xiàn)模型

      如果兩個(gè)用戶(hù)不是同一個(gè)運營(yíng)商,就需要一個(gè)多線(xiàn)服務(wù)器進(jìn)行連接,多線(xiàn)服務(wù)器是不需要識別具體的運營(yíng)商的,它的任何運營(yíng)商都有接口接入的,而且它的出口也是多點(diǎn)的,這樣所有的終端用戶(hù)都會(huì )連到一起,并且暢通無(wú)阻。但問(wèn)題是成本太高。對此的解決方案是用一個(gè)單線(xiàn)服務(wù)器,讓它去承載三線(xiàn)所帶來(lái)昂貴費用的功能點(diǎn),然后分散到單線(xiàn)上,這也是我們這次內容的關(guān)鍵和中心。

      2.5 節點(diǎn)之間的關(guān)系



      節點(diǎn)之間的關(guān)系主要有兩點(diǎn):

    • 一是所有節點(diǎn)之間都有網(wǎng)絡(luò )鏈路連接傳輸;
    • 二是節點(diǎn)之間以多媒體流處理和轉發(fā)為主要功能。

      3. 音視頻合成計算的發(fā)展歷程

      3.1 音視頻合成計算的第一階段

      這張圖就是音視頻合成的第一階段模型,在2017年三體云成立之初,服務(wù)器結構全部都是以這種方式進(jìn)行接入的。 這里列舉一個(gè)簡(jiǎn)單的點(diǎn)對點(diǎn)、一對一的圖,當然在現實(shí)的服務(wù)器中不是一對一的,而是非常多的。圖中的橢圓形表示一個(gè)多線(xiàn)的服務(wù)器。圖中的方形表示一個(gè)單線(xiàn)的服務(wù)器。服務(wù)器所具備的功能是圖中所標識的SFU和MCU,通過(guò)前面概念的講解,可知SFU是用來(lái)傳輸的,而不是用來(lái)運算的,而MCU不僅僅用來(lái)傳輸,里面還摻雜各種的混合運算。圖中左邊黃色的client1以及右邊綠色的client2,它們在進(jìn)行連麥時(shí),各自有各自所對應的多線(xiàn)的服務(wù)器進(jìn)行連接。這個(gè)時(shí)候就不去具體區分client1和client2是哪一個(gè)運營(yíng)商,它們在接入服務(wù)器之后就可以暢通無(wú)阻的進(jìn)行接通了。這種模型看似沒(méi)問(wèn)題,也解決了實(shí)際問(wèn)題,使得client1和client2可以暢通地進(jìn)行連麥通話(huà),但問(wèn)題是圖中紅色部分其實(shí)是在負載,計算client1和client2上所有數據的混合運算,所以圖中紅色標記都是運算的標記。圖中所有的服務(wù)器都是一個(gè)多線(xiàn)服務(wù)器,所以在線(xiàn)上很多的服務(wù)器的結構是非常簡(jiǎn)單的。但問(wèn)題還是過(guò)高的成本。

      3.1.1 第一階段的簡(jiǎn)介

      中心計算節點(diǎn)都是多線(xiàn)IDC機房的(MCU)服務(wù)器,實(shí)現所有運營(yíng)商之間的通訊,簡(jiǎn)單易實(shí)現這是它的一個(gè)特點(diǎn)。但問(wèn)題是它的壓力大,成本高,因為它是多線(xiàn),就意味著(zhù)所有的client都會(huì )去連接它,我們在做中心運算的時(shí)候是一個(gè)服務(wù)器在進(jìn)行,不可能每一個(gè)服務(wù)器都在進(jìn)行運算,因為要有一個(gè)數據的匯聚,這就是第一階段的一個(gè)模式。還有一個(gè)問(wèn)題就是計算和轉發(fā)沒(méi)有分離出來(lái)。圖中所有多線(xiàn)服務(wù)器的SFU和MCU都在一起,沒(méi)有分離出來(lái),這就造成后面要提到一個(gè)問(wèn)題。下面這個(gè)模型就是client1通過(guò)SFU和MCU多線(xiàn),將剛才的圖形模型以這種方式描述出來(lái)。

      3.2 音視頻合成計算的第二階段

      通過(guò)第一階段后來(lái)看一下發(fā)展的第二個(gè)歷程。在音視頻合成的第二階段,就只有一個(gè)三線(xiàn)服務(wù)器了,而且是紅色的標識,它是參與中心計算的。左邊方塊的SFU和右邊方塊的SFU,僅僅是用來(lái)進(jìn)行client1和client2的用戶(hù)上行的接入轉發(fā)的。如果client1是聯(lián)通,client2是移動(dòng),那么它們所對應的圖中黃色的單線(xiàn)服務(wù)器就是聯(lián)通,綠色的SFU就是移動(dòng),所以它們匯聚時(shí)通過(guò)中心MCU是可以接入的,這就將一個(gè)多線(xiàn)的服務(wù)器變成兩個(gè)不需要運算的、低成本的單線(xiàn)服務(wù)器接入了。

      3.2.1音視頻合成計算第二階段的簡(jiǎn)介

      這樣一種進(jìn)化,使它的計算壓力并沒(méi)有得到緩解,但是它的結構發(fā)生變化可以部署更多的SFU邊緣計算機。所以它的特點(diǎn)就是以中心計算為主,以邊緣為輔,因為邊緣已經(jīng)被慢慢地剝離出來(lái),這樣做就減少了多線(xiàn)服務(wù)器的壓力,這種壓力的減少更多的是在傳輸上進(jìn)行了減壓,但是在運算上還沒(méi)有得減壓,所以剛剛提出的問(wèn)題還沒(méi)有被解決。將上行分散到單線(xiàn)服務(wù)器,剛才第二階段的上行全部都是單線(xiàn)服務(wù)器了,特點(diǎn)是這樣的軟件結構比第一階段復雜,因為要實(shí)現SFU在傳輸過(guò)程中找到對應的三線(xiàn)服務(wù)器,而且需要更多的SFU服務(wù)器。還有一個(gè)特點(diǎn)就是計算和轉發(fā)是分開(kāi)的,但問(wèn)題還是中心計算問(wèn)題并沒(méi)有得到實(shí)質(zhì)性的解決,只是把轉發(fā)的這一部分功能從多線(xiàn)服務(wù)器剝離了出來(lái),但是計算還停留在第一階段的結構上。

      3.3 音視頻合成計算的第三階段

      接下來(lái)是第三階段的進(jìn)化,這也是我們目前三體云線(xiàn)上所部署的正在使用的一種場(chǎng)景。這種階段不是最終的目標,但就目前而言是比較優(yōu)化的。 圖中可以看到client1和client2,它們各自接入自己的單線(xiàn)服務(wù)器上行,比如client1是上海,client2是北京,它們會(huì )找最近的SFU服務(wù)器以及對應的運營(yíng)商,同理client2也會(huì )在上海找對應的這個(gè)SFU服務(wù)器以及相對應的運營(yíng)商,并把數據傳輸到對應的MCU服務(wù)器。問(wèn)題是圖中紅色的MCU,方塊MCU代表的是一個(gè)單線(xiàn)。在第三階段,我們已經(jīng)把計算的方式開(kāi)始邊緣化,已經(jīng)分配到它所對應的單線(xiàn)的MCU服務(wù)器上了,還要保證client1和client2暢通無(wú)阻的連接,所以還需要圖中右邊橢圓形的多線(xiàn)服務(wù)器去進(jìn)行匯聚連接,這就很好地把中心計算剝離出來(lái)并將其分散到單線(xiàn)MCU。但并不是右邊的SFU跟MCU多線(xiàn)服務(wù)器不進(jìn)行計算了,而是中心服務(wù)器的運算量在減少,這只是一個(gè)client1和client2簡(jiǎn)單的連麥模型。而線(xiàn)上是一個(gè)網(wǎng)狀、樹(shù)狀的結構,它的連接關(guān)系是非常的復雜的,這里SFU和MCU多線(xiàn)服務(wù)器起到了多運營(yíng)連接跳轉的作用,所以SFU和MCU中心節點(diǎn)還是不能省的,但是它們在client1和client2連接過(guò)程的模型中只做了轉發(fā),沒(méi)有做任何的運算,這就達到了音視頻計算邊緣化的目的。

      3.3.1音視頻合成計算的第三階段的簡(jiǎn)介

      第三階段就是分散到邊緣,減少多線(xiàn)服務(wù)器的壓力,所有的單線(xiàn)服務(wù)器都是參與計算的。但特點(diǎn)是軟件實(shí)現復雜,即通過(guò)我們的設計結構以及框架去改變之前的中心節點(diǎn)計算下壓力大的問(wèn)題,就是把它的復雜度通過(guò)軟件的實(shí)現達到減少壓力,減少成本,減少多節點(diǎn)服務(wù)器的目的,這樣每一個(gè)服務(wù)器都參與了計算,并且SFU和MCU的軟件部署是可分可合的,這也使得部署過(guò)程非常靈活。 模型中的SFU單線(xiàn)到MCU單線(xiàn),在實(shí)際的生產(chǎn)過(guò)程中,為了節約帶寬成本,圖中左邊紅色單線(xiàn)中心計算服務(wù)器MCU和黃色的SFU(大概率)在同一臺服務(wù)器,可以節省左邊黃色的SFU到MCU之間帶寬的費用,因為兩者都是單線(xiàn),能夠連接說(shuō)明它們具有相同的運營(yíng)商屬性,所以把它們部署到一塊,可以節省兩者之間的通信帶寬的費用。 其次,邊緣計算還帶來(lái)另一個(gè)節約成本的作用,在第一階段,每一個(gè)三線(xiàn)中心服務(wù)器在做運算的時(shí)候,它匯聚所有的客戶(hù)端傳來(lái)的數據時(shí),勢必會(huì )增加寬帶的壓力,就意味著(zhù)服務(wù)器所承載的95峰值計算的峰值達到很高,不利于成本的節約。相反,單線(xiàn)服務(wù)器承載運算之后,每一個(gè)點(diǎn)都在運算,它所承擔的數據匯聚就把之前的中心節點(diǎn)分散出來(lái),使得95峰值的帶寬降下來(lái),進(jìn)而節約了帶寬的成本,這就是邊緣計算帶來(lái)的成本上的節約。 圖中SFU和MCU左邊紅色標識,它們在一個(gè)服務(wù)器上,就使得它們的帶寬得到節省,傳輸距離也縮短了,短距離的網(wǎng)絡(luò )傳輸使得延遲變短,傳輸更加流暢,卡頓率降低,這方面就得到進(jìn)一步的優(yōu)化。以前的方式,中心量大,CPU的總線(xiàn)以及帶寬的總線(xiàn)都達到了極致,就會(huì )造成卡頓,并非是距離上的,而是負載上的,負載太高就會(huì )造成卡頓,也更容易丟包,所以把這些問(wèn)題分散就能解決了。

      4. 三體云的國內、國外案例模型

      4.1 三體云的國內案例模型

      這部分是三體云在目前服務(wù)器部署上的一個(gè)簡(jiǎn)單拓撲。是前面所講的client1和client2稍微復雜的一種拓撲圖,所有的client對應的是單線(xiàn)的SFU,都有各自的運營(yíng)商。 這張圖是一個(gè)國內的例子,表示一個(gè)房間里的連麥,在這個(gè)連麥的過(guò)程中,所有用戶(hù)在一個(gè)房間內進(jìn)行連麥只使用一個(gè)多線(xiàn)服務(wù)器,并且大量使用單線(xiàn)邊緣的服務(wù)器。圖中紅色標識承載了房間內所有用戶(hù)的混流的合成運算。從業(yè)務(wù)上講,圖中C1、C2可能是主播,由它發(fā)起創(chuàng )建一個(gè)房間,所以離它們的計算服務(wù)器最近,其他與之連麥的主播通過(guò)它們各自的SFU和MCU進(jìn)行轉發(fā),匯聚到主播所在的SFU多線(xiàn)服務(wù)器,最后再匯聚到SFU紅色的方塊內進(jìn)行混合運算。混合運算以后就推給它所在的粉絲或者是觀(guān)眾。

      4.2 三體云的國外案例模型

      國外看似跟國內沒(méi)什么區別,圖中展示也只是圖形發(fā)生變化,在國外沒(méi)有單線(xiàn)服務(wù)器的概念,所有的服務(wù)器都是多線(xiàn)的,可以隨意的聯(lián)通,但計算的點(diǎn)還在主播端。 在實(shí)際的生產(chǎn)過(guò)程中,有一個(gè)案例,在印度有一部分人在房間內做交互,如中間這張圖,他們視頻連完之后,計算就在他們的計算范圍內。如果會(huì )議需要一部分印尼人參加,需要把印尼的數據直接傳輸到印度所在房間的MCU中心計算服務(wù)器上。先將印尼的數據進(jìn)行收集,通過(guò)離得最近的SFU服務(wù)器匯聚到他們所在的SFU、MCU多線(xiàn)服務(wù)器,匯聚完之后把他們的數據統一匯聚到印度MCU中心計算服務(wù)器上,最后再輸出。同理,左邊的迪拜,可能人數更少,也是按這樣一個(gè)過(guò)程進(jìn)行。 這種方式的好處是不需要把每一個(gè)人單獨通過(guò)他們的單線(xiàn)去連接到印度,而是在印尼做一個(gè)小范圍的匯聚,然后再全部匯集到一起。好處是比如圖中綠色和紅色的橢圓的中間的連線(xiàn)出現了問(wèn)題,因為跨國的帶寬費用高,保證性也比較差,萬(wàn)一出現了中斷,至少印尼里C3、C40、C41三個(gè)用戶(hù)所組成的結構是可以互通的,互通完后網(wǎng)絡(luò )有可能變好或者恢復,所以這是一個(gè)樹(shù)狀的結構,保證小局域范圍內的安全性。

      4.3 三體云的國內、國外案例模型對比

      將國內和國外的兩個(gè)案例模型做一個(gè)比較,國內和國外的網(wǎng)絡(luò )運營(yíng)方式不同。國內多運營(yíng)商,互通性是有問(wèn)題的,我們的聯(lián)通、移動(dòng)是不通的。這種跨運營(yíng)商之間的互通的中斷,很容易造成三線(xiàn)節點(diǎn)增多,帶來(lái)的不確定的因素就越多,就增加卡頓以及掉線(xiàn)率。所以如果用單線(xiàn)和用一個(gè)多線(xiàn)服務(wù)器技術(shù)進(jìn)行中轉的話(huà),因為多線(xiàn)節點(diǎn)變少了,效果就會(huì )好很多。 而國外是沒(méi)有單線(xiàn)這樣的問(wèn)題的,全部都是多線(xiàn),所以邊緣節點(diǎn)可以任意選取,如果用戶(hù)發(fā)起一個(gè)房間的連麥,那么他所在的多線(xiàn)邊緣節點(diǎn)就參與計算,以及區域內的保障和區域之間互通的特點(diǎn)。

      4.4 三體云邊緣計算

      從2017年經(jīng)過(guò)這樣一個(gè)優(yōu)化過(guò)程到現在,得到了如下一些成果,首先因為單線(xiàn)多了,部署節點(diǎn)就更多,這就意味著(zhù)所有的客戶(hù)端在連接各自的服務(wù)器時(shí)就更近、更容易,那丟包和卡頓就會(huì )很少,像前面講的峰值、帶寬的成本也會(huì )下降。所以服務(wù)器越多,節點(diǎn)邊緣越多,它的覆蓋用戶(hù)越多,貸款成本、核心負載下降,這就達到了我們讓所有線(xiàn)上的服務(wù)器都運轉起來(lái)、都參與計算的預期效果。

      5. 總結

      總的來(lái)說(shuō),三體云在去中心充分利用邊緣云端分散計算的方式使服務(wù)器資源得到最大限度的利用。相比之前的方式,大大降低了服務(wù)器成本,因為單線(xiàn)服務(wù)器成本幾乎等于多線(xiàn)服務(wù)器成本的三分之一,甚至更低。雖然服務(wù)器的成本下降,但邊緣計算還將持續優(yōu)化下去。雖然這種部署是每一個(gè)邊緣節點(diǎn)都參與了計算,但并不是每一個(gè)都參與計算才是最好的,往往要根據流量,包括成本控制去計算,比如兩個(gè)人都在上海,各自上行對應各自的服務(wù)器,如果把他們兩個(gè)上行的用戶(hù)都通到一個(gè)服務(wù)器上,那另一個(gè)服務(wù)器目前就空出來(lái)了,但是這并不能給服務(wù)器的帶寬帶來(lái)質(zhì)的飛躍,并不影響它的計費,這種情況下服務(wù)器就可以省出來(lái)并用來(lái)做其他事情,這也是一種優(yōu)化。所以我們的優(yōu)化方案需要不斷地調整,也希望大家在這次的分享中得到一些啟發(fā)。

    【免責聲明】本文僅代表作者本人觀(guān)點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對文中陳述、觀(guān)點(diǎn)判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

    相關(guān)閱讀:

    專(zhuān)題

    CTI論壇會(huì )員企業(yè)

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 合作市| 顺平县| 兴城市| 惠州市| 沙坪坝区| 错那县| 盐池县| 石泉县| 沾益县| 佛冈县| 保山市| 宁陵县| 黎城县| 青铜峡市| 广灵县| 鹤壁市| 竹溪县| 喀喇| 兴海县| 湛江市| 双流县| 衡东县| 北海市| 盐亭县| 安平县| 错那县| 胶州市| 湖州市| 钟山县| 瑞金市| 两当县| 鹿泉市| 武清区| 同江市| 德清县| 中阳县| 北川| 弋阳县| 定西市| 阜宁县| 南江县| http://444 http://444 http://444 http://444 http://444 http://444