色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用開源SFU構(gòu)建RTC云服務(wù)

LiveVideoStack ? 來(lái)源:LiveVideoStack ? 2020-07-13 16:05 ? 次閱讀

編者按:本文由百度智能云RTC產(chǎn)品技術(shù)負(fù)責(zé)人 李永興LiveVideoStack線上分享的內(nèi)容整理而成,從系統(tǒng)架構(gòu)角度,分析了常見的開源SFU在分布式部署以及高可用、高并發(fā)方面的不足,并提出相應(yīng)的解決方案。

大家好,我是來(lái)自百度智能云的李永興,在百度智能云媒體云團(tuán)隊(duì)主要負(fù)責(zé)RTC產(chǎn)品的研發(fā)工作。

01 開源SFU的現(xiàn)狀與不足

在研發(fā)RTC產(chǎn)品的過(guò)程中,我們調(diào)研了許多優(yōu)秀的開源WebRTC服務(wù)器,例如:Janus、MediaSoup、Licode、SRS4等,這些SFU都有不同的設(shè)計(jì)理念和特點(diǎn),我們從中受益頗多。同時(shí)我們也發(fā)現(xiàn)如果要基于這些優(yōu)秀的開源的SFU構(gòu)建一個(gè)高可用高并發(fā)的RTC云服務(wù),就必須對(duì)這些SFU進(jìn)行相應(yīng)的改造。本次分享會(huì)主要介紹這些“改造部分”,這些改造其實(shí)具備一些普遍性,即針對(duì)開源SFU普遍存在的問(wèn)題進(jìn)行優(yōu)化和改造,并不局限于某一特定的SFU。RTC云服務(wù)的要求

要想構(gòu)建一個(gè)RTC云服務(wù),存在以下幾點(diǎn)要求:

高并發(fā):RTC云服務(wù)必須要支持海量并發(fā)用戶,同時(shí)還需要支持海量房間。

高性能:除了單機(jī)性能,能抗更多的流次外,還要具備更高的連通率,保證通信的穩(wěn)定。同時(shí)還要求有很強(qiáng)的抗弱網(wǎng)性能。

高可用:?jiǎn)螜C(jī)單節(jié)點(diǎn)出現(xiàn)故障時(shí)不影響系統(tǒng)可用性。

彈性伸縮:系統(tǒng)可以很方便的進(jìn)行擴(kuò)容操作,并且擴(kuò)容時(shí)盡可能減少相應(yīng)配置,這樣可以使系統(tǒng)迅速進(jìn)行擴(kuò)容。

當(dāng)前一些開源SFU的現(xiàn)狀,例如Janus和MediaSoup,其服務(wù)端都會(huì)開UDP的操作范圍,即服務(wù)端用不同的端口服務(wù)不同的客戶端的媒體連接。同時(shí)在Janus中,信令和媒體是耦合在一起的;而在MediaSoup中,官方提供了nodejs庫(kù),其本身只是一個(gè)媒體層的庫(kù)。但同時(shí)官方也提供了一個(gè)Demo,其媒體層和信令也是耦合在一起的;SRS4實(shí)際是國(guó)產(chǎn)之光,產(chǎn)品推出的時(shí)間不久,目前只支持WebRTC拉流功能。 對(duì)于這些開源SFU,主要的改進(jìn)點(diǎn)有:

使用端的UDP服務(wù)端端口進(jìn)行流媒體的傳輸;

信令和媒體層分離設(shè)計(jì),可以支持大規(guī)模分布式部署;

關(guān)于級(jí)聯(lián)方面,各個(gè)開源SFU都沒(méi)有相對(duì)完整的解決方案。在我們的系統(tǒng)中,采用路由表方式的級(jí)聯(lián),并且是私有協(xié)議的級(jí)聯(lián),可以很好的支持和用戶就近接入。

當(dāng)然對(duì)于整個(gè)RTC云服務(wù),除了SFU這個(gè)核心功能之外,RTC云服務(wù)還需要支持一些混流、錄制、多協(xié)議網(wǎng)關(guān)支持(例如RTMP的接入:方便微信小程序的接入、SIP的接入)等。 02 單端口方案

目前無(wú)論是Janus還是MediaSoup,服務(wù)端都是使用單獨(dú)的UDP端口服務(wù)單獨(dú)的PeerConnection, SFU在啟動(dòng)時(shí)會(huì)配置一個(gè)可用的UDP的端口范圍,用于客戶端的數(shù)據(jù)傳輸。服務(wù)端接收到客戶端的請(qǐng)求后,會(huì)從配置的端口范圍內(nèi)為客戶端分配一個(gè)未被使用的端口,通過(guò)SDP把服務(wù)端的端口傳給客戶端。客戶端收到SDP端口并進(jìn)行解析,然后就可以向服務(wù)端發(fā)送或接收數(shù)據(jù)。這就要求服務(wù)端同時(shí)暴露成千上萬(wàn)個(gè)端口,對(duì)于網(wǎng)絡(luò)安全性是很不友好的,同時(shí)可運(yùn)維性也較差。另外,客戶端的網(wǎng)絡(luò)可能會(huì)對(duì)目的端口進(jìn)行一些限制,如果分配的端口在允許范圍之外,那么客戶端就連接不到服務(wù)器,導(dǎo)致整個(gè)連通的失敗。 為了實(shí)現(xiàn)云服務(wù)的高可用、彈性伸縮一般會(huì)配置負(fù)載均衡設(shè)備作為網(wǎng)絡(luò)的接入設(shè)備。在真正生產(chǎn)環(huán)境中,可能一個(gè)IP后面會(huì)掛著幾十甚至上百臺(tái)機(jī)器,當(dāng)機(jī)器宕機(jī)時(shí)不會(huì)導(dǎo)致整個(gè)服務(wù)的不可用。常見的負(fù)載均衡設(shè)備中很少看到有支持UDP PortRange方式的,即使支持了,由于暴露了很多端口,健康檢查方面實(shí)際是不可能完成的任務(wù)。 鑒于以上問(wèn)題,我們就需要對(duì)SFU進(jìn)行相應(yīng)的改造,以使得服務(wù)端使用單端口對(duì)流媒體的數(shù)據(jù)進(jìn)行傳輸。 Janus使用了Libnice庫(kù)作為底層網(wǎng)絡(luò)傳輸庫(kù),該庫(kù)本身是多端口的實(shí)現(xiàn),因此要在Janus基礎(chǔ)上實(shí)現(xiàn)單端口存在兩種方案:一種是直接替換掉Libnice庫(kù),重新構(gòu)建底層,改為單端口的傳輸方式。但是由于Janus和Libnice庫(kù)的耦合非常緊密,若要使用重新構(gòu)建底層的方式,實(shí)現(xiàn)較為復(fù)雜的,難度很大;另外一種方式就是保留Libnice多端口的實(shí)現(xiàn),在Janus上增加單端口代理的功能。代理的功能是指將單一的對(duì)外端口傳輸?shù)目蛻舳说臄?shù)據(jù),在接收到數(shù)據(jù)之后,同時(shí)將相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)到Libnice內(nèi)部分配的不同服務(wù)端的內(nèi)部端口中。這種方式修改起來(lái)會(huì)更簡(jiǎn)單一些。

若選擇使用代理方式,其實(shí)現(xiàn)難點(diǎn)在于來(lái)自不同客戶端的數(shù)據(jù)都是通過(guò)同一個(gè)服務(wù)端端口進(jìn)行傳輸,服務(wù)端該如何判斷傳輸?shù)臄?shù)據(jù)與用戶的對(duì)應(yīng)關(guān)系。對(duì)此,我們可以通過(guò)SDP協(xié)商里面的ICE-Ufrag字段進(jìn)行解決,當(dāng)服務(wù)端接收到客戶端的SDP后,按照之前的流程,會(huì)創(chuàng)建本地服務(wù)的端口,并且將相應(yīng)的ICE-Ufrag與該端口映射起來(lái)。服務(wù)端會(huì)將對(duì)外的IP端口寫入SDP傳給客戶端,然后一直監(jiān)聽對(duì)外端口。客戶端建聯(lián)時(shí)會(huì)發(fā)送Stun包, Stun包中會(huì)帶有ICE-Ufrag,服務(wù)端接收并解析出ICE-Ufrag,再根據(jù)之前的映射關(guān)系,從IP-MAPS中找到對(duì)應(yīng)的服務(wù)端端口。同時(shí)服務(wù)端還會(huì)記錄Stun包的來(lái)源客戶端IP和端口,服務(wù)端就會(huì)將用戶側(cè)的IP和端口與服務(wù)端的IP和端口映射起來(lái)。每次收到客戶端的數(shù)據(jù)之后,就可以查看數(shù)據(jù)源的IP和端口,通過(guò)MAP的映射關(guān)系查到對(duì)應(yīng)的服務(wù)端的端口,將數(shù)據(jù)轉(zhuǎn)發(fā)到相應(yīng)的服務(wù)端端口中。同理,服務(wù)端發(fā)出的數(shù)據(jù)也會(huì)從映射關(guān)系中找到對(duì)應(yīng)客戶端的IP和端口,通過(guò)單個(gè)端口發(fā)出。 通過(guò)這種單端口的方案,我們就可以將SFU部署在負(fù)載均衡設(shè)備之后,并且可以很方便的進(jìn)行臺(tái)線擴(kuò)容和健康檢查,達(dá)到高并發(fā)和高可用的目的。另外,服務(wù)端是有公網(wǎng)地址的,因此WebRTC的ICE、打洞的操作實(shí)際上也就不需要了。在進(jìn)行地址映射時(shí),需要使用客戶端Stun包的真實(shí)地址。在測(cè)試中我們發(fā)現(xiàn),有時(shí)候真實(shí)地址與客戶端發(fā)送過(guò)來(lái)的Candidate中的地址不一樣,如果使用Candidate中的地址則會(huì)存在連通失敗的問(wèn)題。 MediaSoup雖然也是多端口方案,但是并未使用Libnice庫(kù),因此可以直接在底層實(shí)現(xiàn)整套單端口方案,并不需要Porxy的存在。 這里值得一提的是SRS4,雖然SRS4目前只支持WebRTC的拉流,但是其實(shí)現(xiàn)是基于原生的單端口方案,沒(méi)有使用Libnice庫(kù),整個(gè)MAP的建立過(guò)程與前面所描述的是一致的,也不需要Porxy的存在。SRS4在單端口方面還是相當(dāng)友好的,可以很簡(jiǎn)單的實(shí)現(xiàn)集群化的分布式部署。 03 信令分離

WebRTC標(biāo)準(zhǔn)本身并沒(méi)有規(guī)定信令的部分,因此各個(gè)開源的SFU基本都是自定義實(shí)現(xiàn)的。Janus實(shí)現(xiàn)了基于HTTP或WebSocket的信令,MediaSoup本身是nodejs的庫(kù),不包含信令部分,但是其官方的Demo也實(shí)現(xiàn)了HTTP或WebSocket的信令。它們的共同點(diǎn)是信令部分的實(shí)現(xiàn)和媒體部分的實(shí)現(xiàn)是集成在一起的。信令一般基于TCP協(xié)議的,媒體一般是基于UDP協(xié)議的。如果它們的實(shí)現(xiàn)集成在一起的話,就需要一個(gè)客戶端的TCP信令和UDP流媒體數(shù)據(jù)發(fā)送到服務(wù)端的同一臺(tái)機(jī)器上。這主要是因?yàn)榉?wù)端在收到客戶端的信令后,會(huì)在本機(jī)進(jìn)行一些資源的初始化工作,如果TCP信令和UDP流媒體數(shù)據(jù)不在同一臺(tái)機(jī)器上是無(wú)法完成的。 這樣就存在兩種簡(jiǎn)單的方案,其一:每臺(tái)機(jī)器都有一個(gè)單獨(dú)的公網(wǎng)IP;其二使用源地址哈希的負(fù)載均衡。 如果選擇單獨(dú)的公網(wǎng)IP的方案,功能實(shí)現(xiàn)沒(méi)有問(wèn)題,但并不能達(dá)到高可用、高并發(fā)的要求。一臺(tái)機(jī)器對(duì)應(yīng)一個(gè)IP,如果這臺(tái)機(jī)器上的流特別多,就會(huì)很難負(fù)載,無(wú)法進(jìn)行彈性擴(kuò)容。 我們的主要目的就是希望同一個(gè)客戶端的TCP和UDP負(fù)載到同一個(gè)服務(wù)器上,而使用源地址哈希的方式,會(huì)出現(xiàn)兩個(gè)問(wèn)題:一個(gè)是負(fù)載不均衡的問(wèn)題,如果多個(gè)用戶共享同一個(gè)網(wǎng)絡(luò)出口的話,會(huì)造成負(fù)載的不均衡;另外一個(gè)問(wèn)題是在實(shí)際網(wǎng)絡(luò)過(guò)程中,即使是同一個(gè)客戶端,它的TCP出口與UDP出口也可能并不相同,這就會(huì)導(dǎo)致客戶端的整個(gè)連通失敗。

根據(jù)以上分析可知,造成這種問(wèn)題的根本原因是由于SFU同時(shí)提供了信令和媒體服務(wù),我們的解決方案就是將信令從SFU中分離出來(lái),信令分離其實(shí)有兩層意思,其一:是將信令服務(wù)從SFU中分離,SFU作為單純的流媒體處理器使用。其二:是將信令分為兩部分,一部分是與客戶端交互的信令,另外一部分是信令服務(wù)器與SFU或MeidiaServer之間的內(nèi)部交互信令。 將信令服務(wù)分離之后,就可以單獨(dú)實(shí)現(xiàn)信令服務(wù)器,為客戶提供基于TCP的信令服務(wù),包括SDP解析、生成服務(wù)。客戶端首先要連接到信令服務(wù)器上,進(jìn)行媒體協(xié)商,信令服務(wù)器會(huì)根據(jù)一定的策略選擇SFU或MeidiaServer的節(jié)點(diǎn)的IP通過(guò)SDP返回給客戶端,同時(shí)信令服務(wù)器還會(huì)把接收到的客戶端信息向?qū)?yīng)的分配的SFU進(jìn)行廣播。客戶端接收到SDP之后,根據(jù)IP相應(yīng)的連接到SFU的節(jié)點(diǎn),SFU的節(jié)點(diǎn)中的所有機(jī)器其實(shí)都已經(jīng)具備了客戶端的信息,這樣客戶端就可以進(jìn)行正常的推拉流。 因?yàn)椴捎昧诵帕罘蛛x,所以也就不需要依賴于源地址哈希的負(fù)載均衡策略。同一個(gè)客戶端的多個(gè)PeerConnection可能會(huì)打到后端不同的SFU上,也就達(dá)到了比較好的負(fù)載均衡的目的。 信令分離之后,緊接著的一個(gè)問(wèn)題就是:信令服務(wù)器與SFU或MeidiaServer之間內(nèi)部信令如何交互。信令服務(wù)器需要向SFU或MeidiaServer廣播用戶的信息,SFU需要向信令服務(wù)器上報(bào)一些媒體狀態(tài)。這些內(nèi)部信令的特點(diǎn)就是可以異步處理,不需要等待處理的返回結(jié)果,因此就可以使用消息隊(duì)列去完成內(nèi)部信令的交互,消息隊(duì)列的引入進(jìn)一步使得信令服務(wù)器與SFU進(jìn)行應(yīng)用的解耦,二者的部署就更加靈活。信令服務(wù)器可以與SFU進(jìn)行混合部署,也可以進(jìn)行單獨(dú)部署。 信令服務(wù)器除了向客戶端提供一些信令服務(wù)之外,還會(huì)使用客戶端真實(shí)的IP通過(guò)http-DNS服務(wù)獲得最佳的SFU節(jié)點(diǎn)地址,并返回給客戶端。這樣就會(huì)使得SFU的調(diào)度更加的準(zhǔn)確,提供更好的服務(wù)。 Janus的信令與媒體的耦合較為緊密,因此分離起來(lái)會(huì)稍顯復(fù)雜,同樣有兩種方案:一種是基于現(xiàn)有的Videoroom的插件去做修改,另外一種是直接自己實(shí)現(xiàn)一個(gè)SFU插件。兩者的工作量都不算太小,如果自己實(shí)現(xiàn)SFU插件,Janus Core里面的部分也需要進(jìn)行修改。 對(duì)于MediaSoup本身來(lái)說(shuō),它只是一個(gè)nodejs庫(kù),不包含信令部分,只需要實(shí)現(xiàn)一些上層消息隊(duì)列的收發(fā)以及內(nèi)部信令的解析功能即可,需要一個(gè)單獨(dú)的信令服務(wù)器與客戶端提供信令服務(wù)。 SRS4內(nèi)部有一個(gè)很簡(jiǎn)單的拉流信令部分,如果想用SRS4實(shí)現(xiàn)WebRTC的拉流功能,信令的分離工作也是需要去做的。 04 級(jí)聯(lián)Relay

對(duì)于級(jí)聯(lián)Relay部分的改造,RTC的多方通話存在跨地域、跨運(yùn)營(yíng)商的問(wèn)題。為滿足更多用戶的優(yōu)質(zhì)體驗(yàn),需要用戶就近接入,即通話多方分布在不同的SFU上。這就需要我們的SFU具備級(jí)聯(lián)Relay的能力,將相關(guān)的媒體流轉(zhuǎn)發(fā)到需要媒體流的SFU上。目前開源的Janus和MediaSoup都不具備完備的級(jí)聯(lián)能力,都需要進(jìn)行相應(yīng)的改造。 級(jí)聯(lián)主要涉及兩個(gè)問(wèn)題:其一,網(wǎng)絡(luò)拓?fù)涞膯?wèn)題,其二是級(jí)聯(lián)協(xié)議的問(wèn)題。 級(jí)聯(lián)網(wǎng)絡(luò)拓?fù)鋯?wèn)題中最主要的是級(jí)聯(lián)路由選擇的問(wèn)題。傳統(tǒng)的CDN網(wǎng)絡(luò)是樹形結(jié)構(gòu),由中心節(jié)點(diǎn)和邊緣節(jié)點(diǎn)構(gòu)成,其主要優(yōu)點(diǎn)是回源結(jié)構(gòu)比較簡(jiǎn)單,多級(jí)放大,并發(fā)能力較強(qiáng)。其主要缺點(diǎn)是由于中心源棧的存在,多級(jí)的回源結(jié)構(gòu)導(dǎo)致延遲較大,不太適合RTC的應(yīng)用。 由于網(wǎng)絡(luò)狀況每時(shí)每刻都在發(fā)生變化,所以我們也不能確定RTC的應(yīng)用最適合哪種結(jié)構(gòu)。因此我們?cè)谠O(shè)計(jì)的時(shí)候,最看重的是網(wǎng)絡(luò)的靈活性和自適應(yīng)性。 網(wǎng)絡(luò)靈活性是指可以靈活的通過(guò)配置的方式,改變網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),并且可以適應(yīng)多種網(wǎng)絡(luò)環(huán)境。級(jí)聯(lián)可能會(huì)有很復(fù)雜的應(yīng)用場(chǎng)景,例如,Relay可能是在公網(wǎng)做的,也可能是內(nèi)網(wǎng)做的,也可能是幾點(diǎn)間或內(nèi)部進(jìn)行級(jí)聯(lián)。 自適應(yīng)性是指系統(tǒng)可以根據(jù)實(shí)時(shí)的網(wǎng)絡(luò)狀況自動(dòng)調(diào)整路由選擇。為此,在級(jí)聯(lián)中我們引入了路由表的設(shè)計(jì),路由表就包括目的地址和下一跳地址。中心控制節(jié)點(diǎn)會(huì)將路由表下發(fā)到各個(gè)節(jié)點(diǎn)的SFU中,與CDN回源不同,由于RTC中沒(méi)有中心源站上的概念,因此采用的是主動(dòng)轉(zhuǎn)發(fā)的方式,而不是類似CDN拉流回源的方式。中心節(jié)點(diǎn)其實(shí)會(huì)保存每條流的節(jié)點(diǎn)位置的信息,當(dāng)某個(gè)節(jié)點(diǎn)需要某條流時(shí),中心節(jié)點(diǎn)會(huì)向距離最近的并且有這條流的節(jié)點(diǎn)轉(zhuǎn)發(fā)命令,SFU收到轉(zhuǎn)發(fā)命令之后,會(huì)將路由信息寫到轉(zhuǎn)發(fā)包的頭里面,并根據(jù)路由表查詢下一跳到哪里,進(jìn)行轉(zhuǎn)發(fā)。下一跳接收到轉(zhuǎn)發(fā)包之后,重復(fù)相應(yīng)的過(guò)程,直到到達(dá)最后的目的地。這種做法的優(yōu)點(diǎn)在于每次轉(zhuǎn)發(fā)只需要中心節(jié)點(diǎn)下發(fā)一次命令即可,后續(xù)的轉(zhuǎn)發(fā)完全由SFU自主完成。 中心控制節(jié)點(diǎn)還具備路由表的自動(dòng)生成能力,如果有新節(jié)點(diǎn)上線,會(huì)自動(dòng)生成新節(jié)點(diǎn)相關(guān)的路由表并下發(fā),這樣就可以保證新節(jié)點(diǎn)上線時(shí),自動(dòng)的完成數(shù)據(jù)流轉(zhuǎn)的暢通。自適應(yīng)的原理是節(jié)點(diǎn)主動(dòng)對(duì)相鄰的節(jié)點(diǎn)進(jìn)行延遲和丟包的探測(cè),并將這些探測(cè)結(jié)果上傳到中心節(jié)點(diǎn),中心節(jié)點(diǎn)根據(jù)這些探測(cè)結(jié)果對(duì)路由表進(jìn)行一些調(diào)整、下發(fā),這個(gè)功能目前我們還在處于測(cè)試階段。 級(jí)聯(lián)的另外一個(gè)問(wèn)題是協(xié)議的問(wèn)題,級(jí)聯(lián)主要是在SFU之間進(jìn)行,我們采用的是通過(guò)私有協(xié)議進(jìn)行級(jí)聯(lián)。WebRTC的協(xié)議本身是基于P2P的,因此如果使用WebRTC協(xié)議做SFU之間的級(jí)聯(lián)就太重了,很多內(nèi)容是不需要的。同時(shí)我們會(huì)將一些業(yè)務(wù)信息,例如房間號(hào)、用戶號(hào)、路由信息等加到私有協(xié)議中,當(dāng)接收端收到包之后就不需要再單獨(dú)進(jìn)行查詢操作,同時(shí)也可以自動(dòng)完成路由數(shù)據(jù)包的轉(zhuǎn)發(fā)。 SFU使用單獨(dú)的Relay端口進(jìn)行私有協(xié)議和數(shù)據(jù)的監(jiān)聽和轉(zhuǎn)發(fā),同時(shí)級(jí)聯(lián)的端口也可以開放給客戶端,客戶端也就可以通過(guò)私有協(xié)議接入RTC系統(tǒng)。由于有一些公網(wǎng)Relay場(chǎng)景的存在,私有協(xié)議里我們還會(huì)加入丟包重傳FEC的功能,以保證公網(wǎng)之下Relay的質(zhì)量。 Janus有一個(gè)RTP forword的功能,可以將用戶的媒體流以RTP的方式forword到一個(gè)地址里。如果要基于Janus做級(jí)聯(lián),可以基于這個(gè)功能進(jìn)行一些改造,增加級(jí)聯(lián)的監(jiān)聽功能,可以實(shí)現(xiàn)整個(gè)媒體流的轉(zhuǎn)發(fā)。 05 RTC云架構(gòu)

上圖所示是整體的RTC云架構(gòu),除了前面講到的流媒體服務(wù)器,還包含其它一些模塊,例如業(yè)務(wù)后臺(tái)的模塊Platform,包括Relay、路由表、房間等控制,Platform、信令服務(wù)器、流媒體服務(wù)器之間使用MQ進(jìn)行信令的同步和轉(zhuǎn)發(fā),另外還有一些混流的服務(wù),將多路視頻流混成一路,推向旁路直播或者存儲(chǔ),混流服務(wù)器的流媒體轉(zhuǎn)發(fā)也是通過(guò)Relay的方式進(jìn)行的。除了以上,還有一些多協(xié)議的網(wǎng)關(guān),例如支持RTMP(微信小程序)或SIP(傳統(tǒng)的視頻會(huì)議、終端)的接入。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 流媒體
    +關(guān)注

    關(guān)注

    1

    文章

    194

    瀏覽量

    16662
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    538

    瀏覽量

    66642

原文標(biāo)題:如何使用開源SFU構(gòu)建RTC云服務(wù)

文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    華為 Flexus 服務(wù)器 X 實(shí)例之 openEuler 系統(tǒng)下部署 Discuz 論壇網(wǎng)站

    前言 華為憑借其卓越的技術(shù)實(shí)力和穩(wěn)定的服務(wù)質(zhì)量,已成為眾多企業(yè)和開發(fā)者構(gòu)建云端應(yīng)用的首選平臺(tái)。隨著 Flexus 服務(wù)器 X 實(shí)例的推出
    的頭像 發(fā)表于 12-30 09:12 ?141次閱讀
    華為<b class='flag-5'>云</b> Flexus <b class='flag-5'>云</b><b class='flag-5'>服務(wù)</b>器 X 實(shí)例之 openEuler 系統(tǒng)下部署 Discuz 論壇網(wǎng)站

    華為Flexus服務(wù)器搭建SamWaf開源輕量級(jí)網(wǎng)站防火墻

    在當(dāng)今數(shù)字化高速發(fā)展的時(shí)代,網(wǎng)絡(luò)安全問(wèn)題日益凸顯。為了保障網(wǎng)站的穩(wěn)定運(yùn)行和數(shù)據(jù)安全,我們可以借助華為 Flexus 服務(wù)器搭建 SamWaf 開源輕量級(jí)網(wǎng)站防火墻。這不僅是一次技術(shù)的挑戰(zhàn),更是為網(wǎng)站筑牢安全防線的重要舉措。
    的頭像 發(fā)表于 12-29 16:59 ?204次閱讀
    華為Flexus<b class='flag-5'>云</b><b class='flag-5'>服務(wù)</b>器搭建SamWaf<b class='flag-5'>開源</b>輕量級(jí)網(wǎng)站防火墻

    華為 Flexus 服務(wù)器 X 實(shí)例之 openEuler 系統(tǒng)下部署 OpenCart 開源電子商務(wù)平臺(tái)

    前言 在數(shù)字經(jīng)濟(jì)迅猛發(fā)展的今天,華為憑借其卓越的技術(shù)實(shí)力和穩(wěn)定的服務(wù),成為眾多企業(yè)和開發(fā)者的首選平臺(tái)。作為新一代面向中小企業(yè)和開發(fā)者的柔性算力
    的頭像 發(fā)表于 12-26 18:15 ?165次閱讀
    華為<b class='flag-5'>云</b> Flexus <b class='flag-5'>云</b><b class='flag-5'>服務(wù)</b>器 X 實(shí)例之 openEuler 系統(tǒng)下部署 OpenCart <b class='flag-5'>開源</b>電子商務(wù)平臺(tái)

    服務(wù)盤什么意思?干什么用的

    等功能,適用于團(tuán)隊(duì)協(xié)作、數(shù)據(jù)備份等場(chǎng)景,兩者共同構(gòu)建計(jì)算基礎(chǔ)架構(gòu),提升工作效率和數(shù)據(jù)安全性。以下是UU小編對(duì)服務(wù)
    的頭像 發(fā)表于 11-27 11:16 ?116次閱讀

    api驅(qū)動(dòng)的服務(wù)是什么意思?

    API驅(qū)動(dòng)的服務(wù)是指利用API技術(shù)來(lái)驅(qū)動(dòng)和提供服務(wù)的模式。在這種模式下,服務(wù)提供商會(huì)公開一
    的頭像 發(fā)表于 11-14 10:06 ?203次閱讀

    如何構(gòu)建及優(yōu)化GPU網(wǎng)絡(luò)

    并從計(jì)算節(jié)點(diǎn)成本優(yōu)化、集群網(wǎng)絡(luò)與拓?fù)涞倪x擇等方面論述如何構(gòu)建及優(yōu)化GPU網(wǎng)絡(luò)。
    的頭像 發(fā)表于 11-06 16:03 ?384次閱讀
    如何<b class='flag-5'>構(gòu)建</b>及優(yōu)化GPU<b class='flag-5'>云</b>網(wǎng)絡(luò)

    海外輕量服務(wù)器是什么意思?如何使用

    海外輕量服務(wù)器是指位于海外數(shù)據(jù)中心內(nèi),采用虛擬化技術(shù)構(gòu)建的輕量級(jí)服務(wù)器實(shí)例。海外輕量
    的頭像 發(fā)表于 10-30 09:48 ?155次閱讀

    服務(wù)架構(gòu)與容器的關(guān)系與區(qū)別

    服務(wù)架構(gòu)與容器密切相關(guān)又有所區(qū)別。微服務(wù)將大型應(yīng)用拆分為小型、獨(dú)立的服務(wù),而容器基于容器技術(shù),為微
    的頭像 發(fā)表于 10-21 17:28 ?237次閱讀

    容器服務(wù)引擎是什么意思?

    容器服務(wù)引擎是什么意思?容器服務(wù)引擎是一種基于云原生架構(gòu)的容器編排工具,能夠幫助用戶快速構(gòu)建、部署和管理容器化應(yīng)用。它支持容器化應(yīng)用的全
    的頭像 發(fā)表于 10-19 17:08 ?185次閱讀

    容器服務(wù)引擎是什么?如何使用

    容器服務(wù)引擎(CloudContainerEngine,簡(jiǎn)稱CCE),是一個(gè)企業(yè)級(jí)的Kubernetes集群托管服務(wù),提供高度可擴(kuò)展、高性能的云原生應(yīng)用部署和管理方案。容器
    的頭像 發(fā)表于 09-30 10:17 ?198次閱讀

    什么是服務(wù)

    服務(wù)器(Cloud Server),又稱主機(jī)或彈性計(jì)算服務(wù)(Elastic Compute Service, ECS),是基于計(jì)算技術(shù)
    的頭像 發(fā)表于 09-27 09:34 ?260次閱讀

    海外輕量服務(wù)器是什么

    海外輕量服務(wù)器是指位于海外數(shù)據(jù)中心內(nèi),采用虛擬化技術(shù)構(gòu)建的輕量級(jí)服務(wù)器實(shí)例。與傳統(tǒng)的物理服務(wù)
    的頭像 發(fā)表于 09-25 10:09 ?258次閱讀

    Jtti:服務(wù)器OpenStack的優(yōu)勢(shì)分析

    混合環(huán)境中得到廣泛應(yīng)用。本文將詳細(xì)分析OpenStack服務(wù)器的優(yōu)勢(shì),以幫助企業(yè)和開發(fā)者理解其在構(gòu)建基礎(chǔ)設(shè)施方面的獨(dú)特價(jià)值。 1.
    的頭像 發(fā)表于 08-07 16:29 ?345次閱讀

    應(yīng)用NVIDIA Spectrum-X網(wǎng)絡(luò)構(gòu)建新型主權(quán)AI

    法國(guó)服務(wù)提供商 Scaleway 正在基于 NVIDIA 的 Hopper GPU和 Spectrum-X 以太網(wǎng)網(wǎng)絡(luò)平臺(tái) 構(gòu)建區(qū)域性 GPU 集群,為用戶提供 AI 按需服務(wù)
    的頭像 發(fā)表于 07-26 18:58 ?1186次閱讀

    信創(chuàng)服務(wù)器與openEuler開源操作系統(tǒng)完成互認(rèn)證

    日前,超 C86 平臺(tái)服務(wù)器 R3215、R3216 成功完成了與 openEuler 開源操作系統(tǒng)的兼容性適配工作。測(cè)試結(jié)果表明:openEuler 22.03 LTS SP3 版本的開源
    的頭像 發(fā)表于 03-12 16:08 ?1326次閱讀
    超<b class='flag-5'>云</b>信創(chuàng)<b class='flag-5'>服務(wù)</b>器與openEuler<b class='flag-5'>開源</b>操作系統(tǒng)完成互認(rèn)證
    主站蜘蛛池模板: 国产精品久久久久久久久久影院 | 国产成人一区免费观看| 亚洲蜜桃AV永久无码精品放毛片| 美女隐私黄www视频| 国产人成无码视频在线观看| free性欧美xxx狂欢| 一级毛片免费在线播放| 天堂岛www| 热99re久久精品国产首页| 丝瓜视频在线免费| 久久久这里有精品999| 国产乱妇乱子在线播视频播放网站| TIMI1TV天美传媒在线观看| 伊人久久大香线蕉无码麻豆| 小玲被公扒开腿| 日韩一区二区三区精品| 欧美高清18| 美目盼兮amy198281| 久久精品99国产精品日本| 果冻传媒色AV国产播放| 国产精品日本欧美一区二区| 扒开女生尿口| my pico未删减在线观看| 91免费精品国自产拍在线可以看| 伊人久久网站| 又黄又爽又无遮挡在线观看免费| 亚洲精品午夜久久久伊人| 亚洲 色 欧美 爱 视频 日韩| 天美传媒色情原创精品| 我不卡影院手机在线观看| 失禁 调教 刺激 哭喊男男| 日日噜噜噜夜夜爽爽狠狠| 青青草视频在线ac| 青青草A在在观免费线观看| 欧美乱码卡一卡二卡四卡免费| 美女被触手注入精子强制受孕漫画| 久久九九亚洲精品| 旧里番ovaの催○セイ活指导| 久久久乱码精品亚洲日韩| 久久精品无码人妻无码AV蜜臀| 久久精品视在线-2|