伴隨智能硬件設(shè)備快速發(fā)展和網(wǎng)絡(luò)條件提升,實時語音視頻的應(yīng)用越來越廣泛,從互動直播、到休閑游戲、再到陌生人社交,而如何保障實時互動過程流暢不卡頓、如何消除回聲以及全球網(wǎng)絡(luò)節(jié)點部署調(diào)度成為了關(guān)鍵。即構(gòu)科技聯(lián)合創(chuàng)始人蔣寧波在LiveVideoStack Meet上以語音視頻社交為例,深度解析實時語音視頻互動技術(shù),本文為分享的整理。
大家好,我是即構(gòu)科技的聯(lián)合創(chuàng)始人蔣寧波,今天分享的題目《實時語音視頻技術(shù)的深度解析》,希望和大家交流實時音視頻互動的一些技術(shù)點。首先簡單自我介紹下,我從2005年到2015年在騰訊工作,前期負責QQ Hummer部分重構(gòu)項目,后期負責騰訊QQ安全的工作,包括把QQ的安全能力開放給其他企業(yè)使用。2015年聯(lián)合創(chuàng)立即構(gòu)科技,即構(gòu)科技是提供實時音視頻的云服務(wù)商,致力于提供全球最穩(wěn)定最高質(zhì)量的實時語音視頻云服務(wù),主要產(chǎn)品針對多人實時語音,多人實時視頻,和互動直播。現(xiàn)有的客戶包括映客、花椒、一直播,喜馬拉雅FM,六間房、酷狗直播、自由之戰(zhàn)2和好未來等。
今天主要分四塊內(nèi)容跟大家一起交流,首先是通過兩年大量實時音視頻客戶的合作,看到了行業(yè)應(yīng)用的一些發(fā)展趨勢,其次就是實時音視頻互動的技術(shù)難點,以及即構(gòu)科技解決這些問題的思路,最后會分享如何選擇實時語音視頻云服務(wù)商。
行業(yè)趨勢
近幾年,伴隨手機等智能硬件設(shè)備以及網(wǎng)絡(luò)情況的提升,實時音視頻得到越來越廣泛的應(yīng)用,在娛樂化方面,從互動直播,到集成音視頻SDK、帶有社交屬性的休閑小游戲,再到現(xiàn)在音視頻的陌生人社交應(yīng)用。從15年下半年到16年的千播大戰(zhàn),基本上,一二線的直播平臺都標配了連麥直播,允許多個主播做實時互動;16年底到17年初,集成了音視頻的社交屬性的休閑小游戲異軍突起,最典型的就是狼人殺,還有一些棋牌類游戲;現(xiàn)在最火爆的則是陌生人視頻社交應(yīng)用,像多人群聊社交產(chǎn)品Houseparty和青少年社交網(wǎng)絡(luò)Monkey等等,而且伴隨美顏、掛件這些圖像處理技術(shù)越來越成熟,更多的90后、00后等一批互聯(lián)網(wǎng)原住民將視頻社交融入到日常生活中。
實時音視頻互動難點
對于一個實時互動的音視頻系統(tǒng)而言,存在很多技術(shù)難點,我從中摘取幾個比較重要的點:首先是低延遲,如果要滿足比較流暢地進行實時互動,那么單向的端到端的遲延大概要在400毫秒以下才能保證流暢溝通;第二點就是流暢性,你也很難想象在視頻過程中頻繁卡頓會有良好的互動;第三點是回聲消除,回聲的產(chǎn)生是揚聲器播放的聲音經(jīng)過環(huán)境反射被麥克風重新采集并傳輸給對方,這樣對方就會一直聽到自己的回聲,整個互動過程會非常難受;第四點是國內(nèi)外互通,隨著現(xiàn)在國內(nèi)同質(zhì)化產(chǎn)品越來越多,國內(nèi)的競爭也異常激烈,很多廠商紛紛選擇出海,這時就需要做好海內(nèi)外的互通;第五點是海量并發(fā),當然這不僅僅指實時音視頻了,基本對于任何一款互聯(lián)網(wǎng)產(chǎn)品而言都是必須要考慮的難點。
難點解決方案
接下來我將針對上面幾個技術(shù)難點,跟大家分享一下我們即構(gòu)團隊的解決思路和實踐經(jīng)驗。
低延遲
首先,如果實時音視頻要保證低延遲,那么前端和后端的整個鏈條一定要做到極致的,比如前端的一些編碼算法、流控,甚至丟幀、追幀策略等等都要做到足夠好。另外,不同的業(yè)務(wù)場景下,編碼器的選擇也會有所區(qū)別,從而會帶來不同的編碼延遲,因此不同的業(yè)務(wù)場景能達到的延遲程度也是不一樣的。
其次,就是對推拉流網(wǎng)絡(luò)的選擇,通常的方案是讓需要實時互動的用戶通過核心語音視頻網(wǎng)絡(luò)——像BGP這樣的優(yōu)質(zhì)節(jié)點來做語音視頻傳輸,而對于一些特定場景來說,比如互動游戲會直播給一些圍觀用戶看,那么這里就需要做轉(zhuǎn)碼、轉(zhuǎn)協(xié)議、甚至混流,再通過內(nèi)容分發(fā)網(wǎng)絡(luò)去分發(fā)。像 內(nèi)容分發(fā)網(wǎng)絡(luò)本身天然就有做就近接入,但對于接入核心語音視頻網(wǎng)絡(luò)就需要有智能的調(diào)度策略來完成就近接入,以及跨運營商、跨區(qū)域的接入,比如可以采用上次登錄IP、常用IP和區(qū)域調(diào)度,甚至可以測速再去連接,當然網(wǎng)絡(luò)調(diào)度的策略也需要根據(jù)業(yè)務(wù)群的分布仔細規(guī)劃,甚至采用多個策略配置權(quán)重的方式。
流暢性
要實現(xiàn)流暢性也會有很多的技術(shù)難點和策略,我主要會介紹其中幾種。第一個是可以做動態(tài)伸縮的JitterBuffer,在網(wǎng)絡(luò)較差或者網(wǎng)絡(luò)抖動比較劇烈的情況下,可以適當增大JitterBuffer,從而降低一點點延遲來對抗抖動。
第二個是快播和慢播技術(shù),在網(wǎng)絡(luò)較差的環(huán)境,可以在用戶無感知的條件下稍微降低播放速度,來應(yīng)對短暫網(wǎng)絡(luò)抖動引起的立即卡頓,當網(wǎng)絡(luò)恢復(fù)可以加快速度追回來,但這種方式并非適合所有場景,比如對于節(jié)奏要求非常準確的唱歌場景,當播放速度稍微放慢就可以被感知。
第三個是碼率自適應(yīng),也就是以比較合適的碼率做動態(tài)傳輸,為了保證流暢度甚至可以調(diào)整幀率和分辨率。語音視頻引擎會根據(jù)當前網(wǎng)絡(luò)測速的結(jié)果和應(yīng)用所期望的碼率,動態(tài)地調(diào)整碼率、幀率和分辨率,最終達到流暢觀看的用戶體驗。
第四個是分層編碼、傳輸控制,在推流端做一些分層的編碼,這樣在拉流端可以動態(tài)根據(jù)偵測到的網(wǎng)絡(luò)帶寬情況來拉取不同的數(shù)據(jù)去做渲染。分層編碼允許拉流端取選擇不同層次的視頻編碼數(shù)據(jù),網(wǎng)絡(luò)情況好的時候,就拉取較多層次的數(shù)據(jù);網(wǎng)絡(luò)情況差的情況下,就拉取基礎(chǔ)層次的數(shù)據(jù)。
第五個是動態(tài)調(diào)度,當在推拉流端監(jiān)測當前推拉流質(zhì)量比較差,而且即使通過降低碼率、幀率和分辨率等策略已經(jīng)無法保證質(zhì)量,這時就可以選擇放棄這條鏈路,直接重新做選入、建立連接,當然在這個過程中可能會出現(xiàn)短暫的停頓。
回聲消除
首先介紹下回聲消除的原理:對端發(fā)送的信號會先給到回聲消除的模塊,作為將來消除的參考信號,再把信號給到揚聲器播放,揚聲器播放后由于周圍環(huán)境反射形成回聲,與真實的音頻輸入一同被麥克風采集,這時采集到的輸入信號是帶有回聲的,回聲消除模塊會根據(jù)前面的參考信號生成濾波抵消掉回聲消后再發(fā)送出去。
原理聽起來會比較簡單,但在實際過程中卻蘊藏著很多的難點,比如回聲消除模塊接收的參考信號與最終被環(huán)境反射后的回聲本身就是存在差異的,此外設(shè)備也會極大的影響回聲消除,尤其是國內(nèi)的安卓機型特別多,比如國內(nèi)某手機廠商,從麥克風采集音頻數(shù)據(jù)到提交中間有將近一百毫秒的延遲,這時回聲消除算法如何適應(yīng)這么長回聲延遲的手機就很關(guān)鍵;再比如很多用戶在直播中都會用外置聲卡,甚至是模擬器,這無形中也會帶來回聲的延遲。除了設(shè)備,場地同樣存在很大的相關(guān)性,對于普通會議室,設(shè)置 40米的回聲延遲可能已經(jīng)足夠了,但一些大會場這種回聲延遲能達到將近上百米,這也是一種挑戰(zhàn)。
關(guān)于回聲消除,其實谷歌開源的WebRTC提供了回聲消除模塊,但WebRTC的設(shè)計本身是為了在PC端實時音視頻互動的場景,在移動端的適應(yīng)性上就會差一些,尤其體現(xiàn)在安卓的一些低端機上。而相對來說,蘋果因為整體硬件、軟件全是自己實現(xiàn)的,麥克風、揚聲器也都有聲學模型設(shè)計,因此回聲消除的效果會比安卓好很多。即構(gòu)科技的音視頻引擎都是采用自研,在真機和模擬器等1000多的機型上測試過,都可以做到很好的回聲消除。
國內(nèi)外互通
前面提到很多產(chǎn)品都會選擇出海,包括主打國內(nèi)市場的產(chǎn)品也會有一些海外用戶,因此流媒體數(shù)據(jù)和控制信令就要做好跨國的互通,這就需要考慮在全球合理布置一些中繼節(jié)點。
這張圖就是一個典型的中繼續(xù)傳,北京用戶和迪拜用戶之間要做視頻溝通,根據(jù)就近接入原則他們會分別連接當?shù)氐墓?jié)點,而這兩個節(jié)點間如果互拉,效果會非常差,這時就需要布置適合的中繼節(jié)點,比如香港、新加坡、日本等等,數(shù)據(jù)路徑的選擇是需要根據(jù)業(yè)務(wù)側(cè)決定的,也就是說在物理鏈路路由之上還要再有一條業(yè)務(wù)的路由表,需要根據(jù)用戶場景制定,包括用戶分布、用戶訪問頻率、高頻段峰值等等,可能每次的路由都會有所不同。
海量并發(fā)
海量并發(fā)是所有互聯(lián)網(wǎng)產(chǎn)品都會遇到的問題,這里就不再展開,主要要考慮負載均衡,如何平滑擴容,對于無法覆蓋的地方要做代理調(diào)度,甚至需要考慮容災(zāi)、接入層的設(shè)計等等。
如何選擇實時語音視頻云服務(wù)商
實時語音視頻的技術(shù)門檻相對比較高,如果依靠自己研發(fā),可能即使會投入很多開發(fā)成本也無法與匹配市場快速發(fā)展的節(jié)奏。現(xiàn)在實時音視頻云服務(wù)已經(jīng)十分成熟,其實不妨“讓專業(yè)的人去做專業(yè)的事”。而對于實時語音視頻云服務(wù)商的選擇也大致可以歸為幾點:
第一點,肯定是技術(shù)過硬。測試產(chǎn)品質(zhì)量是很好的選型方法,測試的指標包括延遲時間、回聲消除的效果以及多機型兼容性等等。
第二點,是否被頂級廠商地大規(guī)模驗證過。很多系統(tǒng)在小規(guī)模并發(fā)時看起來質(zhì)量很好而且非常穩(wěn)定,但在真實現(xiàn)網(wǎng)環(huán)境下一旦大規(guī)模并發(fā)上來的時候就會出現(xiàn)各種各樣的問題。因此選擇的產(chǎn)品必須得能在真實的復(fù)雜網(wǎng)絡(luò)中支持大規(guī)模并發(fā)。
第三點,系統(tǒng)接口要足夠簡單、靈活,可以保證基礎(chǔ)功能的廠商快速集成,同時也要能滿足高端客戶定制化能力的接入。從采集、前處理、編碼、推流、拉流、解碼和渲染一整套流程中每個環(huán)節(jié)都是要完全解耦的,這樣就可以集成第三方、甚至客戶自身的技術(shù)模塊。
第四點是技術(shù)服務(wù)足夠好,對需求的響應(yīng)足夠快,而且要有完善的運營支撐體系,能快速定位問題,因此對于監(jiān)控告警、日志的上報采集就顯得非常重要。
圖:秒級原始數(shù)據(jù)
-
音頻技術(shù)
+關(guān)注
關(guān)注
1文章
137瀏覽量
24603 -
視頻技術(shù)
+關(guān)注
關(guān)注
1文章
105瀏覽量
22856
原文標題:語音視頻社交背后技術(shù)深度解析
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論