BIGO | imo实时语音传输优化揭秘
?2020年新冠疫情持續(xù)蔓延全球,億萬(wàn)人的生活因此發(fā)生了巨大的改變,人們對(duì)實(shí)時(shí)音視頻通話的日常需求也越來(lái)越大。作為BIGO公司旗下重要的全球性即時(shí)通訊產(chǎn)品imo為全球2億多用戶提供優(yōu)質(zhì)穩(wěn)定的即時(shí)通訊服務(wù),在2020年上半年全網(wǎng)通話時(shí)長(zhǎng)提升30%以上,開(kāi)齋節(jié)(穆斯林節(jié)日)更是提升50%以上。是什么技術(shù)力量支撐讓imo能夠適應(yīng)全球各式各樣的網(wǎng)絡(luò)環(huán)境和用戶類型,在各類競(jìng)品中脫穎而出,為imo全球化的戰(zhàn)略保駕護(hù)航,乘風(fēng)破浪,迎難而上的呢?接下來(lái)我們就結(jié)合imo的語(yǔ)音傳輸業(yè)務(wù)和大家探討一下。
?
一、imo實(shí)時(shí)語(yǔ)音業(yè)務(wù)背景和面臨挑戰(zhàn)
?
眾所周知當(dāng)前的絕大部分手機(jī)即時(shí)通訊產(chǎn)品都是基于VoIP技術(shù)。基于IP網(wǎng)絡(luò)的VoIP技術(shù),我們公認(rèn)在網(wǎng)絡(luò)架構(gòu)存在著挑戰(zhàn)。因?yàn)閂oIP一般走的都是公共網(wǎng)絡(luò),網(wǎng)絡(luò)環(huán)境不穩(wěn)定,會(huì)面臨丟包、延時(shí)以及語(yǔ)音包抖動(dòng)等問(wèn)題,所以基于IP的通話是沒(méi)有質(zhì)量保障的。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1 ?VOIP系統(tǒng)示意圖
?
業(yè)界上使用QoE/QoS的模型來(lái)介紹和分析這樣的問(wèn)題。
QoE(Quality of Experience)的評(píng)價(jià)主體是終端用戶,評(píng)價(jià)對(duì)象是業(yè)務(wù)和支撐業(yè)務(wù)的網(wǎng)絡(luò)。其設(shè)計(jì)理念是為了更貼近用戶的真實(shí)感受,主要是用來(lái)衡量用戶的主觀體驗(yàn),例如通話過(guò)程發(fā)生頻繁卡頓,有多少用戶會(huì)因?yàn)闊o(wú)法忍受而選擇結(jié)束通話。
與之對(duì)應(yīng),QoS(Quality of Services)主要反映的是客觀指標(biāo),如一次通話過(guò)程中發(fā)生了多少次網(wǎng)絡(luò)卡頓或者丟包。其更專注于純網(wǎng)絡(luò)范疇的指標(biāo),設(shè)計(jì)理念主要負(fù)責(zé)從網(wǎng)絡(luò)的角度進(jìn)行業(yè)務(wù)管理和提供業(yè)務(wù)的差異性,網(wǎng)絡(luò)實(shí)體根據(jù)不同的質(zhì)量需求來(lái)處理不同業(yè)務(wù)。終端+整條網(wǎng)絡(luò)鏈路的一系列服務(wù)需求,例如帶寬,延時(shí),抖動(dòng),丟包這些都反應(yīng)著服務(wù)質(zhì)量QoS。
不難看出,服務(wù)質(zhì)量QoS的優(yōu)劣與否很大程度上影響著用戶體驗(yàn)質(zhì)量QoE,并最終反映在用戶對(duì)產(chǎn)品的喜愛(ài)和依賴程度等主觀感受上。因此為了更好的讓用戶獲得清晰流暢的用戶體驗(yàn),我們imo音視頻傳輸團(tuán)隊(duì)需要盡可能的提升QoS保證服務(wù)質(zhì)量。
而要想提供優(yōu)質(zhì)和穩(wěn)定實(shí)時(shí)服務(wù),保證服務(wù)質(zhì)量不是一件容易的事情。因?yàn)椴煌谠S多國(guó)內(nèi)同類型的其他產(chǎn)品,作為一個(gè)全球性的實(shí)時(shí)音視頻通訊產(chǎn)品,imo面對(duì)著更多復(fù)雜的挑戰(zhàn)。首當(dāng)其沖的就是復(fù)雜多樣的網(wǎng)絡(luò)。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖2 ?imo全網(wǎng)用戶和東南亞某新興市場(chǎng)用戶網(wǎng)絡(luò)比例圖
?
imo用戶的一大特點(diǎn)就是遍布全球各地,網(wǎng)絡(luò)環(huán)境豐富動(dòng)態(tài)差異大,有較好的4G/WIFI網(wǎng)絡(luò),但更多地方特別是近年來(lái)用戶增長(zhǎng)率高的一些新興市場(chǎng)主要是3G/2G的弱網(wǎng)環(huán)境為主。和中國(guó)地區(qū)4g網(wǎng)絡(luò)覆蓋比例達(dá)95%以上相比,imo用戶接入網(wǎng)絡(luò)相對(duì)較為落后。從上圖可以看到全網(wǎng)imo用戶接入網(wǎng)絡(luò)占比中,4G網(wǎng)絡(luò)比例只占了39%,2G/3G占了29%,而以東南亞某新興市場(chǎng)為例,其imo用戶接入網(wǎng)絡(luò)占比中2G+3G的用戶比例占比高達(dá)49%。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖3 ?中東與南亞兩個(gè)主要市場(chǎng)國(guó)內(nèi)國(guó)際電話比例圖
?
imo用戶的另一大特點(diǎn)就是對(duì)跨國(guó)甚至跨洲際的通話有著極大的需求。
據(jù)imo線上數(shù)據(jù)統(tǒng)計(jì),以中東和南亞的兩個(gè)主要市場(chǎng)為例,某中東市場(chǎng)imo用戶的國(guó)際電話比例占到總通話次數(shù)的60%,而某南亞主要市場(chǎng)imo用戶的國(guó)際電話次數(shù)比例則高達(dá)69%。這樣的國(guó)際通話就涉及到更復(fù)雜多變的媒體服務(wù)中轉(zhuǎn)和較長(zhǎng)的傳輸鏈路。這會(huì)導(dǎo)致用戶之間的網(wǎng)絡(luò)鏈路較長(zhǎng),使得抖動(dòng)甚至擁塞突發(fā)不可避免。要想在這樣的背景下提供優(yōu)質(zhì)穩(wěn)定的QoS可謂困難重重。
因此我們imo音視頻傳輸團(tuán)隊(duì)圍繞QoS深耕服務(wù),著重設(shè)計(jì)強(qiáng)化了相關(guān)需求模塊,同時(shí)針對(duì)imo的特殊情況我們也做了許多差異化的服務(wù)來(lái)應(yīng)對(duì)挑戰(zhàn)。接下來(lái)我們就先來(lái)了解一下imo語(yǔ)音傳輸技術(shù)體系是如何在這樣的網(wǎng)絡(luò)環(huán)境下提供穩(wěn)定優(yōu)質(zhì)服務(wù)的。
?
二、基于QoS的imo語(yǔ)音傳輸技術(shù)體系
?
01? 用戶接入
imo通過(guò)一系列的措施保障用戶無(wú)論何時(shí)都享受各種網(wǎng)絡(luò)的高可用性
1、通過(guò)實(shí)時(shí)探測(cè)計(jì)算整體用戶網(wǎng)絡(luò),計(jì)算分配最合適的接入節(jié)點(diǎn)
隨機(jī)挑選少量空閑用戶,通過(guò)對(duì)用戶到不同節(jié)點(diǎn)到小流量的探測(cè),判斷當(dāng)用戶到節(jié)點(diǎn)的網(wǎng)絡(luò)狀況,并將探測(cè)結(jié)果上報(bào)到后臺(tái),后臺(tái)通過(guò)結(jié)合客戶端探測(cè)結(jié)果和各個(gè)節(jié)點(diǎn)的負(fù)載情況,匯總分析出用戶最合適的接入節(jié)點(diǎn),當(dāng)相同運(yùn)營(yíng)商用戶通話時(shí),將實(shí)時(shí)計(jì)算出來(lái)的最優(yōu)節(jié)點(diǎn)分配給用戶
2、使用多Relay(中轉(zhuǎn)服務(wù)器)轉(zhuǎn)發(fā)保證跨國(guó)用戶通話網(wǎng)絡(luò)質(zhì)量
通過(guò)使用計(jì)算出來(lái)的最優(yōu)節(jié)點(diǎn)解決的是用戶第一公里和最后一公里的接入問(wèn)題,當(dāng)用戶進(jìn)行跨國(guó)通話的時(shí)候通過(guò)多條relay轉(zhuǎn)發(fā)保證用戶通話長(zhǎng)鏈路質(zhì)量的最優(yōu)
3、通過(guò)多協(xié)議轉(zhuǎn)換,保障高可用性
imo通話支持UDP,TCP, HTTP等多種協(xié)議,并且數(shù)據(jù)格式靈活多變,通過(guò)不同協(xié)議間切換,保障用戶在各個(gè)網(wǎng)絡(luò)情況下的高可用性。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖4? imo通話各個(gè)協(xié)議占比
?
如圖4所示,可以看到imo通話中有超過(guò)10%的通話使用的不是傳統(tǒng)的UDP協(xié)議,通過(guò)后臺(tái)的配置,將部分用戶配置成TCP或者HTTP,以保證用戶的通話可用性,提高通話接通率。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖5 ?北美和中東用戶通話接入示例圖
?
如圖5所示:北美用戶和中東用戶進(jìn)行國(guó)際通話,通過(guò)分別接入倫敦服務(wù)器和阿姆斯特丹服務(wù)器保證用戶接入最優(yōu)節(jié)點(diǎn),兩個(gè)服務(wù)器再進(jìn)行中轉(zhuǎn),以保證整個(gè)鏈路的高可用性。
?
02??流量控制模塊
帶寬自適應(yīng)是指在語(yǔ)音的收發(fā)過(guò)程中,根據(jù)網(wǎng)絡(luò)帶寬的變化,自動(dòng)的來(lái)調(diào)整發(fā)送碼率,來(lái)適應(yīng)帶寬的變化。在帶寬足夠的情況下,增加采樣率和碼率,提高語(yǔ)音的質(zhì)量,帶來(lái)更好的通信體驗(yàn)。在帶寬不足的情況下,主動(dòng)降低采樣率和碼率,保證通信的流暢性和可用性,也是帶來(lái)更好的通信體驗(yàn)。帶寬自適應(yīng)的核心,就是如何準(zhǔn)確的估計(jì)帶寬。
imo使用了基于接收端的丟包率和延時(shí)反饋的帶寬估計(jì)算法,同時(shí)引入pacer,pacer會(huì)根據(jù)評(píng)估出來(lái)的碼率,按照最小單位時(shí)間(5ms)做時(shí)間分片進(jìn)行遞進(jìn)發(fā)送數(shù)據(jù),避免瞬時(shí)對(duì)網(wǎng)絡(luò)的沖擊。pacer的目的就是讓媒體數(shù)據(jù)按照評(píng)估碼率均勻的分布在各個(gè)時(shí)間片里發(fā)送, 所以在弱網(wǎng)環(huán)境,pacer是個(gè)非常重要的關(guān)鍵步驟。
imo的自適應(yīng)碼率方案,收集全部模塊的輸出流量按優(yōu)先級(jí)分配,根據(jù)帶寬估計(jì)反饋的丟包率和延時(shí),決定ARQ和FEC的使用策略。采用冗余包進(jìn)行上探,碼率穩(wěn)定后再提升源碼率。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖6 碼率自適應(yīng)示意圖
?
1、Receiver接收到報(bào)文,計(jì)算進(jìn)行到達(dá)時(shí)間統(tǒng)計(jì)和丟包統(tǒng)計(jì)
2、Detect根據(jù)收端的延遲增量和丟包率信息計(jì)算出網(wǎng)絡(luò)擁塞狀態(tài), 評(píng)估出適合當(dāng)前網(wǎng)絡(luò)傳輸?shù)拇a率,并通過(guò)feedback反饋到發(fā)端
3、收到反饋碼率,pacer會(huì)根據(jù)這個(gè)碼率改變pacer的網(wǎng)絡(luò)發(fā)送速度,流量控制模塊根據(jù)反饋信息,決定是否需要上探或者下調(diào),調(diào)整ARQ&FEC的使用策略
4、sender收到pacer的發(fā)送事件,開(kāi)始新一輪的碼率評(píng)估流程
?
03??抗丟包模塊
音頻實(shí)時(shí)通信對(duì)信息要求確保盡可能完整恢復(fù)信息的同時(shí),盡量降低延時(shí),而且要避免擁塞。業(yè)界有多種策略可以解決丟包問(wèn)題,一般包括:自動(dòng)重傳請(qǐng)求ARQ、前向糾錯(cuò)FEC、HARQ(Hybric ARQ)等。
?
▼ 分段和透?jìng)鞯撵`活調(diào)度
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖 7 分段與透?jìng)鱂EC示意圖
?
在1v1通話中,需要考慮的一個(gè)問(wèn)題是 server 采用分段還是透?jìng)鞯姆绞阶鯢EC。兩種方式各有優(yōu)缺點(diǎn)。恢復(fù)的方式相對(duì)直接透?jìng)魅哂喟姆绞?#xff0c;雖然會(huì)增加server對(duì)RS包的編解碼消耗和編碼時(shí)延,但是可以避免丟包率小一側(cè)鏈路的冗余流量,因?yàn)橹鞅唤袃啥捂溌返膩G包率往往是不同的。此外,分段恢復(fù)的方式也容易擴(kuò)展到群語(yǔ)音。imo通話中,我們靈活調(diào)度這2種方法,對(duì)于對(duì)流量較為敏感,或者RTT較大的通話,選擇分段恢復(fù)的方式;對(duì)于流量不太敏感,或者RTT較小的通話,選擇透?jìng)鞯姆绞健?/p>
?
▼?冗余表
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖8 FEC 控制模型 ? ? 黑線數(shù)據(jù)流,紅線控制流
?
在FEC的控制中,冗余表扮演一個(gè)非常重要的角色,決定了冗余是否高效,在恢復(fù)丟包的同時(shí)不引入過(guò)多冗余。在imo中,我們根據(jù)下面的方法計(jì)算冗余表。
假設(shè) n 個(gè)原始包編 k 個(gè)冗余包,每個(gè)包的丟包率為p,那么收到 i 個(gè)包的概率為:
在收到 i 個(gè)包的條件下,原始包個(gè)數(shù)為 j,那么恢復(fù)后的原始包個(gè)數(shù)期望值為:
如果希望恢復(fù)后的丟包率小于某個(gè)丟包率,例如1%,那么,對(duì)方程求解,就可以得到特定 (n, k) 下可抵抗鏈路丟包率的最大值。
選擇不同的 n 和 k,可以求解得到如下表,如果選定n=5,鏈路丟包率在[4.7%, 9.6%)區(qū)間,那么使用 5+2 的冗余,可以使得恢復(fù)后的數(shù)據(jù)丟包率小于1%。下面,我們稱恢復(fù)后的數(shù)據(jù)丟包率為容忍丟包率。
根據(jù)這個(gè)計(jì)算方法,我們可以畫出組包個(gè)數(shù) n=5 的容忍丟包率對(duì)應(yīng)的鏈路丟包率率切換閾值曲線。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖 9? n = 5時(shí),容忍丟包率與鏈路丟包切換閾值的關(guān)系
?
從上表和圖9,我們可以發(fā)現(xiàn)幾個(gè)特點(diǎn):
1、如果控制容忍丟包率趨向0,那么鏈路丟包率切換的曲線也趨向0。
意味著需要增加越來(lái)越多的冗余流量,才可以使容忍丟包率控制在一個(gè)很小的值,性價(jià)比越來(lái)越低,以0%為容忍丟包率是不現(xiàn)實(shí)的。
2、在不同的容忍丟包率要求下,FEC覆蓋的丟包率范圍不同。
例如,設(shè)置1%的容忍丟包率下,只能覆蓋到24.5%的鏈路丟包率。
3、同樣的容忍丟包率和冗余率,組包數(shù)n越大,覆蓋的丟包率范圍越大。
例如,同樣在1%的容忍丟包率要求下,n = 1 時(shí),1+1的冗余只能覆蓋到10%的鏈路丟包率;而 n =5 時(shí),5+5 能覆蓋 24.5%的丟包率。
在此基礎(chǔ)上,根據(jù)連續(xù)丟包個(gè)數(shù)和容忍的最大延時(shí),選擇不同的分組組合,理論上可以達(dá)到高效利用帶寬的目標(biāo)。真實(shí)場(chǎng)景的丟包率并不是恒定的,丟包率的統(tǒng)計(jì)、連續(xù)丟包數(shù)和RS編碼改變?nèi)哂嘤袦笮?#xff1b;因此需要考慮運(yùn)行中的動(dòng)態(tài)性,適當(dāng)增加冗余,才可以達(dá)到較好的效果。
?
▼?動(dòng)態(tài)冗余率的收斂速度
冗余率的收斂速度是影響恢復(fù)效果的。我們發(fā)現(xiàn)開(kāi)啟FEC的丟包率閾值附近,存在頻繁啟停與冗余率切換的問(wèn)題,這個(gè)問(wèn)題不僅使恢復(fù)率大大降低,而且浪費(fèi)了冗余流量。針對(duì)這個(gè)問(wèn)題,我們采用了滯回的策略:在不擁塞前提下,冗余率至少保持一段時(shí)間不下降。如下圖9所示,冗余率頻繁切換過(guò)程中,丟包不能得到及時(shí)恢復(fù),在增加滯回后,恢復(fù)效果明顯變好。
?
圖10?
左:頻繁調(diào)整? ??
右:滯回 ? 紅線代表丟包率,黑線代表冗余率 ?特定場(chǎng)景下恢復(fù)后丟包率從7.35%下降到1.14%
?
▼?HARQ
針對(duì)ARQ與FEC兩種抗丟包方法的特點(diǎn),我們采用了揚(yáng)長(zhǎng)避短的策略,盡可能發(fā)揮各自的優(yōu)勢(shì),這就是HARQ(Hybric ARQ)。整體思路是,HARQ在RTT較小的網(wǎng)絡(luò)中,主要采用重傳策略,減少冗余流量;在RTT較大的場(chǎng)景中,主要使用FEC,降低恢復(fù)延時(shí)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖11 HARQ策略轉(zhuǎn)換圖
?
難點(diǎn)一:切換閾值確定
HARQ一個(gè)難點(diǎn)是不同策略的切換閾值如何確定,rtt/丟包率的閾值設(shè)定小了會(huì)浪費(fèi)流量,閾值設(shè)定大了恢復(fù)率可能達(dá)不到預(yù)期。
我們的方法是以恢復(fù)率為目標(biāo)做自動(dòng)調(diào)整:
1、根據(jù)當(dāng)前rtt和鏈路丟包率,先計(jì)算ARQ在最大引入延時(shí)下的理論恢復(fù)率
(1)如果srtt大于設(shè)定的ARQ最大引入延時(shí),則關(guān)閉ARQ。
(2)如果ARQ恢復(fù)率滿足設(shè)定目標(biāo),則只開(kāi)啟ARQ。
(3)如果ARQ恢復(fù)率不能滿足設(shè)定目標(biāo),則剔除ARQ恢復(fù)后的丟包率作為輸入,計(jì)算并調(diào)整FEC的冗余度。
2、理論計(jì)算和實(shí)際情況會(huì)有偏差,為了矯正這個(gè)偏差,接收端反饋丟包恢復(fù)情況給發(fā)送端,發(fā)送端根據(jù)反饋的恢復(fù)率和目標(biāo)恢復(fù)率比較,如果偏小則對(duì)應(yīng)調(diào)大冗余。
?
難點(diǎn)二:擁塞避免
不管是ARQ還是FEC,都需要增加額外的流量來(lái)實(shí)現(xiàn)抗丟包。然而在擁塞場(chǎng)景,這種額外的流量反而會(huì)惡化網(wǎng)絡(luò),使丟包率變大;這時(shí)如果抗丟包模塊不對(duì)這種情況做區(qū)分發(fā)送更多額外流量,只會(huì)使得網(wǎng)絡(luò)更差。
我們?cè)趧偵暇€HARQ的時(shí)候,就碰到了這樣的問(wèn)題。從AB實(shí)驗(yàn)數(shù)據(jù)中,我們發(fā)現(xiàn)部分的case的恢復(fù)率較低,一小段時(shí)間出現(xiàn)丟包率特別高、rtt增大明顯的情況,可以推測(cè)發(fā)生了擁塞。為此,我們?cè)诳箒G包模塊增加了基于rtt梯度變化來(lái)做擁塞判斷邏輯。在srtt大于一定閾值,認(rèn)為可能存在,這時(shí)計(jì)算梯度變化,變化大則認(rèn)為擁塞,從而調(diào)整抗丟包冗余。另外,我們也設(shè)計(jì)增加BWE做更精確的擁塞判斷,這個(gè)工作也正在進(jìn)行之中。
下圖12是東南亞某市場(chǎng)增加擁塞判斷邏輯前后線上數(shù)據(jù)對(duì)比,在丟包恢復(fù)率相當(dāng)?shù)那疤嵯?#xff0c;優(yōu)化后rtt從增量100ms到變化不大,擁塞現(xiàn)象減少:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖12 增加擁塞判斷邏輯前后線上數(shù)據(jù)對(duì)比
?
下圖13是不同場(chǎng)景下HARQ和ARQ+FEC各自處理的效果對(duì)比,可以看到,限速場(chǎng)景HARQ恢復(fù)率提升明顯,減少擁塞發(fā)生提升了恢復(fù)率;另外引入流量降低明顯,HARQ統(tǒng)一決策有效降低無(wú)效流量。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖13 不同場(chǎng)景下恢復(fù)率和引入流量
?
▼?抗丟包整體效果
丟包場(chǎng)景下,抗丟包模塊明顯提升了mos,丟包率40%以下mos分能保持在4分以上,音質(zhì)平穩(wěn)度較高,有效地提升了用戶體驗(yàn)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖14 ?無(wú)抗丟包版本mos分測(cè)試?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖15 抗丟包版本mos分測(cè)試
?
▼?運(yùn)營(yíng)挑戰(zhàn)和思路
在運(yùn)營(yíng)中,因?yàn)楹芏鄶?shù)據(jù)是基于整個(gè)通話來(lái)統(tǒng)計(jì),但是在實(shí)際問(wèn)題和排查中,難以定位具體的原因。例如,在一個(gè)30分鐘的通話中,前28分鐘的通話質(zhì)量非常好,最后2分鐘因?yàn)橥ㄔ捒D或者聽(tīng)不到聲音而掛斷電話。在這樣的場(chǎng)景下,分析整個(gè)通話的播放丟包、網(wǎng)絡(luò)丟包情況,丟包率并不高,難以定位到用戶發(fā)生了什么問(wèn)題。為了解決這個(gè)痛點(diǎn),我們?cè)O(shè)計(jì)了trace運(yùn)營(yíng)思路:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖16 ?抗丟包trace運(yùn)營(yíng)流程圖
?
通過(guò)trace抽樣上報(bào),我們達(dá)到了全鏈路包級(jí)別數(shù)據(jù)可泛化,這樣讓我們對(duì)于問(wèn)題收集和分類更加充分和完備。對(duì)線上具體bad case分析,以此推動(dòng)了抗丟包模塊的不斷優(yōu)化迭代;同時(shí),對(duì)線上用戶的痛點(diǎn)了解更加深刻,對(duì)如果評(píng)價(jià)抗丟包效果有更多思考。
?
04??抗抖動(dòng)模式
抗抖動(dòng)的基本思路是用適當(dāng)?shù)难訒r(shí)來(lái)?yè)Q取卡頓率的下降并在二者之間達(dá)到最優(yōu)的播放體驗(yàn),業(yè)界常見(jiàn)的抗抖動(dòng)算法有基于自回歸(AR)估算算法,基于統(tǒng)計(jì)(Statistically)的算法和基于自適應(yīng)濾波(Adaptive Filter)的算法。
基于自回歸估算的算法,輸入的是單向延時(shí),經(jīng)過(guò)自回歸估算得出播放延時(shí)。實(shí)現(xiàn)上可在talkspurt之間調(diào)整延時(shí)(需要靜音信息),或talkspurt期間調(diào)整延時(shí)(需要引入TSM,變速器),甚或引入Spike檢測(cè),可以適應(yīng)網(wǎng)絡(luò)擁塞引入的突發(fā)抖動(dòng),快速響應(yīng)網(wǎng)絡(luò)變化。
基于統(tǒng)計(jì)的算法,以過(guò)去一段時(shí)間收包的網(wǎng)絡(luò)延時(shí)做直方圖統(tǒng)計(jì),取一定概率總和所對(duì)應(yīng)的延時(shí)值作為網(wǎng)絡(luò)抖動(dòng)的估計(jì),難點(diǎn)在于過(guò)去一段時(shí)間長(zhǎng)短的取舍,取得太長(zhǎng),最近網(wǎng)絡(luò)變化會(huì)被平均,取得太短,估值起伏隨網(wǎng)絡(luò)變化太快,也就失去了統(tǒng)計(jì)的意義,經(jīng)典的實(shí)現(xiàn)代表是webrtc neteq,使用遺忘算法對(duì)每種遲包概率進(jìn)行動(dòng)態(tài)調(diào)整,結(jié)合峰值檢測(cè)得到較好的網(wǎng)絡(luò)抖動(dòng)估值,在此就不作詳解。
基于自適應(yīng)濾波器的算法沒(méi)有對(duì)網(wǎng)絡(luò)延時(shí)做出反應(yīng),而是嘗試預(yù)測(cè)網(wǎng)絡(luò)延時(shí)。自適應(yīng)濾波算法旨在最小化實(shí)際網(wǎng)絡(luò)延時(shí)和估計(jì)之間的期望均方誤差。先前的延時(shí)通過(guò)有限脈沖響應(yīng)(FIR)濾波器傳遞,以計(jì)算當(dāng)前估算值。然后,將均方誤差用于調(diào)整自適應(yīng)濾波器的抽頭權(quán)重。經(jīng)典實(shí)現(xiàn)有歸一化最小均方算法(NLMS)。
imo用戶分布全球,通話類型也以跨國(guó)通話為主,為適應(yīng)這種網(wǎng)絡(luò)鏈路引入的抖動(dòng),我們引入并優(yōu)化了業(yè)界多種抗抖動(dòng)算法,經(jīng)過(guò)比較,最終Bigojitter勝出。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖17 ?BigoJitter原理架構(gòu)和網(wǎng)絡(luò)抖動(dòng)估算示意圖
?
如上圖17所示,Bigojitter主體包括語(yǔ)音包緩沖區(qū),網(wǎng)絡(luò)抖動(dòng)估算,播放延時(shí)估算,播放決策,解碼器,變速器,解碼數(shù)據(jù)緩沖區(qū)等模塊,核心算法在于網(wǎng)絡(luò)抖動(dòng)估算,播放延時(shí)估算以及播放策略,Bigojitter使用歷史抖動(dòng)范圍和自回歸算法來(lái)估算播放延時(shí),從而可以快速適應(yīng)網(wǎng)絡(luò)的抖動(dòng)變化。
Bigojitter的優(yōu)化主要分為兩個(gè)階段:第一階段是在實(shí)驗(yàn)室構(gòu)造各種弱網(wǎng)場(chǎng)景,使MOS分和延時(shí)都能達(dá)到最佳狀態(tài)。由圖17可見(jiàn),MOS分在各個(gè)場(chǎng)景平穩(wěn)下降,延時(shí)和網(wǎng)絡(luò)抖動(dòng)符合線性關(guān)系。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖18 ?BigoJitter實(shí)驗(yàn)室優(yōu)化效果示意圖
?
雖然Bigojitter優(yōu)化在實(shí)驗(yàn)室測(cè)得較好成績(jī),但上線運(yùn)營(yíng)符合預(yù)期才是關(guān)鍵。借助強(qiáng)大的ab實(shí)驗(yàn)系統(tǒng),可分析不同版本各個(gè)維度參數(shù)的變化趨勢(shì),甚至提取trace數(shù)據(jù)進(jìn)行研究,我們發(fā)現(xiàn)imo用戶在某些地區(qū)和通話場(chǎng)景下,網(wǎng)絡(luò)擁塞和超大抖動(dòng)是不可避免的。在這種情況下,jitter基于實(shí)時(shí)通信的要求觸發(fā)了主動(dòng)丟包降低延時(shí),導(dǎo)致信號(hào)完整性問(wèn)題。于是我們及時(shí)調(diào)整了策略,增加jitter自適應(yīng)范圍的上限,用適當(dāng)?shù)难訒r(shí)來(lái)?yè)Q取遲包丟包率和播放丟包率的下降,事實(shí)證明,這個(gè)優(yōu)化使得ab結(jié)果從一直負(fù)向轉(zhuǎn)向顯著正向,最終達(dá)到技術(shù)優(yōu)化和業(yè)務(wù)增長(zhǎng)雙贏的目標(biāo)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖19 Bigojitter迭代優(yōu)化過(guò)程:遲包丟包率和播放丟包率明顯下降
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖20? Bigojitter迭代優(yōu)化過(guò)程:buffersize分布
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖21 ?某新興市場(chǎng)的音頻單次通話時(shí)長(zhǎng)趨勢(shì)(注:該新興市場(chǎng)在4月推全BigoJitter優(yōu)化版本)
?
04??完善的語(yǔ)音質(zhì)量測(cè)評(píng)體系
想要持續(xù)運(yùn)營(yíng)維護(hù)一款受眾數(shù)億用戶的產(chǎn)品,單單只專注于功能性需求的開(kāi)發(fā)是肯定不夠的。搭建一套完善而全面的語(yǔ)音質(zhì)量評(píng)測(cè)體系,不僅能支撐各項(xiàng)優(yōu)化開(kāi)發(fā)穩(wěn)步前進(jìn),提供數(shù)據(jù)平臺(tái)的支持,還能賦能各個(gè)開(kāi)發(fā)人員,提供驅(qū)動(dòng)力在各種評(píng)估體系中探尋不斷優(yōu)化完善產(chǎn)品的突破。
?
▼ 實(shí)驗(yàn)室內(nèi)部自動(dòng)化測(cè)評(píng)工具建設(shè),分為以下幾方面
(1)采購(gòu)第三方語(yǔ)音質(zhì)量評(píng)測(cè)儀器,該儀器采用ITU-T P.863(POLQA)算法,覆蓋了超寬帶語(yǔ)音傳輸評(píng)測(cè),用到感知模型和認(rèn)知模型模擬了人耳聽(tīng)覺(jué)對(duì)外界聲音信號(hào)的心理物理反應(yīng);
(2)搭建網(wǎng)絡(luò)實(shí)驗(yàn)室,采購(gòu)了能夠精確模擬的硬件網(wǎng)絡(luò)損傷儀、自己搭建TC網(wǎng)絡(luò)模擬環(huán)境以及自研內(nèi)嵌網(wǎng)絡(luò)模擬配合白盒測(cè)試,模擬用戶各種網(wǎng)絡(luò)場(chǎng)景;
(3)打通測(cè)試平臺(tái),與CI結(jié)合建立全自動(dòng)音頻質(zhì)量測(cè)試,制定音頻質(zhì)量基線。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖22 自動(dòng)化測(cè)試流程示意圖
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖23 ?自動(dòng)化測(cè)試報(bào)告對(duì)比圖
?
通過(guò)實(shí)驗(yàn)室自動(dòng)化測(cè)試,基于質(zhì)量基線開(kāi)發(fā),不僅節(jié)省測(cè)試人力成本提高測(cè)試和研發(fā)效率而且還支持異地和海外同事遠(yuǎn)程使用。
?
▼ 研發(fā)線上無(wú)參考評(píng)估系統(tǒng)
在基于網(wǎng)絡(luò)參數(shù)的無(wú)參考這方面參考ITU-T G.107(E-Model)等標(biāo)準(zhǔn),首先模擬網(wǎng)絡(luò)情況構(gòu)造嚴(yán)重卡頓和輕微卡頓的測(cè)試樣本,記錄卡頓次數(shù)break_num;其次是獲取codec、采樣率、編碼碼率等參數(shù),記錄為codec_type、sample_rate、encode_rate;然后將測(cè)試樣本通過(guò)polqa/主觀打分得出mos;最后通過(guò)mos、codec_type、sample_rate、encode_rate、break_num多元擬合得到無(wú)參考模型;根據(jù)大量的polqa/主觀打分修正無(wú)參考模型。
在基于音頻信號(hào)的無(wú)參考模型建模方面,建立純粹的語(yǔ)音通話Demo(排除網(wǎng)絡(luò)因素);構(gòu)造噪聲,響度,回聲,內(nèi)容卡頓檢測(cè)等測(cè)試樣本,同樣測(cè)試樣本需要polqa/主觀打分得出mos;通過(guò)LSTM深度學(xué)習(xí)提取無(wú)參考模型;最后根據(jù)大量的polqa/主觀打分修正無(wú)參考模型。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖24 ?imo語(yǔ)音線上質(zhì)量評(píng)估體系圖
?
Imo線上的無(wú)參考質(zhì)量體系實(shí)現(xiàn)了對(duì)語(yǔ)音通話的實(shí)時(shí)評(píng)估,撈取低分案例,結(jié)合低分原因以及診斷工具可以更好地分析跟進(jìn)badcase,提升通話質(zhì)量;imo線上的無(wú)參考質(zhì)量體系打破了以通話時(shí)長(zhǎng)作為技術(shù)優(yōu)化的標(biāo)準(zhǔn),同時(shí)給AB實(shí)驗(yàn)提供支持。
?
▼ 線上質(zhì)量問(wèn)題分析跟進(jìn)利器-診斷工具
要能夠及時(shí)解決線上用戶的問(wèn)題,就必須具備以下的兩個(gè)條件:1. 聚合線上用戶所有相關(guān)的日志 ?2. 高效分析用戶日志。診斷工具已把以上的兩個(gè)條件全程自動(dòng)化,開(kāi)發(fā)員只要輸入用戶的UID就能一鍵查詢到相關(guān)日志和看到這通通話的初步分析拓?fù)鋱D。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖25? 診斷工具分析拓?fù)鋱D
?
從拓?fù)鋱D25可以看到服務(wù)器與被叫的下行鏈路丟包率異常的高,并也導(dǎo)致jitter的播放丟包率升高。根據(jù)這個(gè)分析,我們就能快速的定位到發(fā)生問(wèn)題的模塊,讓模塊的負(fù)責(zé)人深入的調(diào)查問(wèn)題根源。這樣,解決問(wèn)題的效率能夠大大的提升,提升了團(tuán)隊(duì)的問(wèn)題響應(yīng)速度和定位問(wèn)題的能力。
?
▼ 競(jìng)品對(duì)比-主動(dòng)尋找與業(yè)界差距
技術(shù)在不斷更新,我們會(huì)定期與業(yè)界競(jìng)品進(jìn)行質(zhì)量對(duì)比,主動(dòng)發(fā)掘與競(jìng)品的差距,例如在一次與競(jìng)品的測(cè)試中發(fā)現(xiàn),imo的丟包抗性不如某國(guó)外競(jìng)品,通過(guò)對(duì)抗丟包模塊進(jìn)行專項(xiàng)優(yōu)化實(shí)現(xiàn)了對(duì)齊該競(jìng)品甚至超越。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖26 ?imo語(yǔ)音抗丟包優(yōu)化前后音質(zhì)對(duì)比某競(jìng)品
?
同時(shí),我們也不局限于實(shí)驗(yàn)室,imo是一個(gè)全球化的產(chǎn)品,每個(gè)用戶所處的環(huán)境都是不一樣,特別是跨國(guó)通話,網(wǎng)絡(luò)環(huán)境的差異、服務(wù)器的部署等都環(huán)環(huán)相扣,imo在新加坡等海外地區(qū)也有專業(yè)的測(cè)試團(tuán)隊(duì),imo團(tuán)隊(duì)也是全球化的團(tuán)隊(duì),依托Bigo海外30多個(gè)辦公室,可以比較全面的與競(jìng)品進(jìn)行實(shí)地評(píng)測(cè)。
?
三、基于imo特點(diǎn)的差異化服務(wù)
?
為了能夠從眾多競(jìng)品中脫穎而出,imo除了深耕于傳統(tǒng)的QoS相關(guān)模塊,提高服務(wù)質(zhì)量的基礎(chǔ)上,針對(duì)全球化用戶的特點(diǎn),也不斷探索了出一些差異化的服務(wù)需求。
?
01??用戶數(shù)據(jù)的隱私性和安全性
隨著網(wǎng)絡(luò)音視頻產(chǎn)品的普及和需求日益增加,相對(duì)的安全性問(wèn)題也在不斷凸顯,私人音視頻信息遭泄露等事件時(shí)有出現(xiàn),前不久爆紅視頻會(huì)議軟件ZOOM也因其安全性問(wèn)題而飽受抨擊。而imo在早期就已經(jīng)開(kāi)始關(guān)注用戶數(shù)據(jù)的隱私性和安全性的保護(hù)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖27 ?imo媒體加密示意圖
?
imo客戶端之間的數(shù)據(jù)傳輸使用128比特AES-CTR加密模式加密,客戶端與服務(wù)器之間的數(shù)據(jù)傳輸使用256比特AES-CBC加密模式在確保用戶數(shù)據(jù)安全的同時(shí)性保護(hù)用戶隱私,這兩種加密模式都是當(dāng)前主流商用密碼加密模式,加密安全強(qiáng)度有保障。相較于AES-ECB,RC4,imo采用的AES-CBC加密模式可以較好的隱藏?cái)?shù)據(jù)細(xì)節(jié),以此為用戶數(shù)據(jù)提供更高的安全性保護(hù)。
?
02? 針對(duì)機(jī)型碎片化改進(jìn)的統(tǒng)計(jì)上報(bào)機(jī)制
如上文所提到的一樣, imo用戶的手機(jī)機(jī)型碎片化是非常嚴(yán)重的。通過(guò)分析線上數(shù)據(jù)imo用戶機(jī)型分布,我們發(fā)現(xiàn)前一百機(jī)型的比例只占不到50%。而且imo用戶手機(jī)升級(jí)也較為緩慢,以android機(jī)為例,Android系統(tǒng)從4.1~11都存在,所以音頻采集和播放需要考慮設(shè)備的兼容性。為此,imo在設(shè)備運(yùn)行各個(gè)環(huán)節(jié)都埋下?tīng)顟B(tài)碼統(tǒng)計(jì),并對(duì)最終采集和播放結(jié)果進(jìn)行檢測(cè),通過(guò)后臺(tái)數(shù)據(jù)分析和用戶反饋,即可發(fā)現(xiàn)碎片化的問(wèn)題,并實(shí)現(xiàn)設(shè)備各種模式和參數(shù)切換的可配置,從而及時(shí)解決線上用戶的設(shè)備異常問(wèn)題。
?
03? 基于統(tǒng)計(jì)學(xué)設(shè)計(jì)的AB測(cè)試實(shí)驗(yàn)
為優(yōu)化imo音視頻的通話質(zhì)量,需要不斷迭代并上線新的feature,而在未證實(shí)該feature確切有效之前,是絕不可輕易上線的。AB實(shí)驗(yàn)正是為了驗(yàn)證feature是否有效而設(shè)計(jì)的,它是一個(gè)樣本推斷總體的過(guò)程,方式是進(jìn)行小流量的測(cè)試,利用樣本的效果來(lái)推斷上線后的效果。AB實(shí)驗(yàn)的解讀思想是假設(shè)檢驗(yàn),通過(guò)定義原假設(shè),并試圖利用小概率事件推翻原假設(shè)。AB實(shí)驗(yàn)的正確設(shè)計(jì)和正確解讀,能夠幫助開(kāi)發(fā)人員更好評(píng)估新特性,以決定是上線還是繼續(xù)優(yōu)化。
既然是用樣本推斷總體,就難免犯錯(cuò),指標(biāo)解讀過(guò)程中會(huì)存在以下兩種錯(cuò)誤:
-
第一類錯(cuò)誤α:原假設(shè)為真,卻被我們拒絕了
-
第二類錯(cuò)誤β:原假設(shè)為假,卻被我們接受了
傳統(tǒng)的ab解讀,基本上都只對(duì)第一類錯(cuò)誤α進(jìn)行控制,因?yàn)榈谝活愬e(cuò)誤是人為定義的,是確定的,易于控制。但是,如果只控制α錯(cuò)誤,而不對(duì)β進(jìn)行控制的話,會(huì)發(fā)生“實(shí)驗(yàn)有效果,但是卻沒(méi)被檢測(cè)出來(lái)”的情況,導(dǎo)致錯(cuò)過(guò)有效果的feature。
實(shí)際上,在實(shí)驗(yàn)中,如果發(fā)現(xiàn)指標(biāo)不顯著,有可能是流量不足而沒(méi)被檢測(cè)出來(lái),這時(shí)候我們需要加大樣本量。那么,樣本量越大越好嗎?其實(shí)不然,因?yàn)樵诖髽颖镜那闆r下,我們會(huì)檢測(cè)出那些細(xì)小但有時(shí)不具有任何意義的差別,也就是說(shuō),即使假設(shè)檢驗(yàn)的結(jié)果具有統(tǒng)計(jì)顯著性,但是由于該結(jié)果效應(yīng)量太小,實(shí)際上并沒(méi)有什么意義。
為解決這個(gè)問(wèn)題,在imo實(shí)驗(yàn)中,我們會(huì)基于定義好的α錯(cuò)誤,期望達(dá)到的效應(yīng)量,以及可接受的β錯(cuò)誤,事先計(jì)算出合適的樣本量。這樣在實(shí)驗(yàn)觀察過(guò)程中,如果發(fā)現(xiàn)指標(biāo)不顯著,并且沒(méi)有到達(dá)預(yù)期樣本量,那么我們便會(huì)加大樣本量,再觀察實(shí)驗(yàn)結(jié)果。
下表為演示具體case的計(jì)算流程,比如我們拿到的樣本數(shù)據(jù)如下所示(此處數(shù)據(jù)為偽數(shù)據(jù),主要用于公式說(shuō)明,非實(shí)際線上數(shù)據(jù)):
1、提出假設(shè)
(1)H0(原假設(shè)):假設(shè)Bigojitter表現(xiàn)和speexjitter表現(xiàn)無(wú)差異,即μ1-μ2=0
(2)H1(備擇假設(shè)):Bigojitter表現(xiàn)優(yōu)于speexjitter,即μ1-μ2>0
2、如果原假設(shè)成立,那么得到該樣本,即x1-x2=4.46的概率多大?
(1)抽樣分布均值:0
(2)抽樣分布標(biāo)準(zhǔn)差:利用樣本標(biāo)準(zhǔn)差替代總體標(biāo)準(zhǔn)差,可得到
??
3、計(jì)算當(dāng)前樣本之差4.46距離0有幾個(gè)標(biāo)準(zhǔn)差:4.46÷1.43≈3.12
#sigma為3.12,說(shuō)明在原假設(shè)成立的條件下,該樣本均值距離總體參數(shù)超過(guò)3個(gè)標(biāo)準(zhǔn)差,出現(xiàn)概率極低(如下圖紅色面積),所以我們有理由拒絕原假設(shè),認(rèn)為Bigojitter表現(xiàn)優(yōu)于speexjitter。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖28 Bigojitter抽樣結(jié)果概率分布圖
?
當(dāng)前,imo音視頻已有一套強(qiáng)大的ab系統(tǒng),該系統(tǒng)不僅涵蓋了幾百個(gè)關(guān)鍵指標(biāo),并且每個(gè)指標(biāo)都會(huì)自動(dòng)計(jì)算出#sigma。利用ab系統(tǒng),開(kāi)發(fā)人員能快速判斷核心指標(biāo)是否顯著,以決定功能是否上線。
下面為imo ab系統(tǒng)的部分指標(biāo),對(duì)于第一個(gè)指標(biāo),其#sigma為107.2,遠(yuǎn)高于閾值3,可以得出指標(biāo)顯著的結(jié)論。對(duì)于第二個(gè)指標(biāo),雖然指標(biāo)不顯著,但我們可以根據(jù)效應(yīng)量計(jì)算理論樣本量,評(píng)估當(dāng)前樣本量是否ok,從而決定是否放量再進(jìn)行觀測(cè)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖29 ?imo AB實(shí)驗(yàn)系統(tǒng)指標(biāo)展示圖
?
四、總結(jié)?
?
綜上所述,imo音視頻傳輸團(tuán)隊(duì)圍繞QoS不斷深耕核心模塊,以解決網(wǎng)絡(luò)丟包,抖動(dòng),延時(shí)等實(shí)時(shí)音視頻通信中的核心挑戰(zhàn)。與此同時(shí)也在不斷完善完整的語(yǔ)音質(zhì)量評(píng)價(jià)體系,完備的測(cè)試環(huán)境和置信度更高專項(xiàng)性更強(qiáng)的線上ab測(cè)試實(shí)驗(yàn)與統(tǒng)計(jì)。這一切都是為了能夠不斷產(chǎn)生新的驅(qū)動(dòng)力去優(yōu)化imo的音頻傳輸業(yè)務(wù)。
目前而言我們已經(jīng)具備了語(yǔ)音傳輸相關(guān)的QoS相關(guān)算法模塊并各自取得了一定的成績(jī),但實(shí)際上QoS保證牽扯到了編解碼,鏈路,傳輸,處理, 設(shè)備等眾多環(huán)節(jié),處理好技術(shù)的協(xié)作關(guān)系,如何對(duì)各種 QoS 算法的調(diào)度、管理、配合是核心難點(diǎn),也是我們未來(lái)階段不斷前進(jìn)的目標(biāo)與方向。相信隨著對(duì)更多基于業(yè)務(wù)細(xì)節(jié)的不斷深入研究和探索,我們團(tuán)隊(duì)會(huì)找到更加適合imo的協(xié)作策略,讓我們的實(shí)時(shí)音頻傳輸體系能夠在更多的業(yè)務(wù)場(chǎng)景中發(fā)揮它的優(yōu)勢(shì)和價(jià)值。
?
?
版權(quán)聲明
轉(zhuǎn)載本網(wǎng)站原創(chuàng)文章需要注明來(lái)源出處。因互聯(lián)網(wǎng)客觀情況,原創(chuàng)文章中可能會(huì)存在不當(dāng)使用的情況,如文章部分圖片或者部分引用內(nèi)容未能及時(shí)與相關(guān)權(quán)利人取得聯(lián)系,非惡意侵犯相關(guān)權(quán)利人的權(quán)益,敬請(qǐng)相關(guān)權(quán)利人諒解并聯(lián)系我們及時(shí)處理。
?
關(guān)于本文
本文首發(fā)于公眾號(hào)【BIGO技術(shù)】,感興趣的同學(xué)可以移步至公眾號(hào),獲取最新文章~
?
總結(jié)
以上是生活随笔為你收集整理的BIGO | imo实时语音传输优化揭秘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sanicOpenApi 学习
- 下一篇: 数据规整