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