摘要:除了一些線程調(diào)度和線程模型的調(diào)整,我們還需要進(jìn)行業(yè)務(wù)邏輯上的優(yōu)化,比如縮減高消耗,低反饋的業(yè)務(wù)模塊,降低消耗,限制業(yè)務(wù)邏輯隊(duì)列內(nèi)存分配增長空間,避免某些業(yè)務(wù)場景中內(nèi)存持續(xù)增長導(dǎo)致系統(tǒng)奔潰。
HaaS RTC是阿里云IoT聯(lián)合視頻云開發(fā)的IoT設(shè)備端上的實(shí)時通訊服務(wù),主要面向直播,音視頻通話等各種場景。HaaS700是我們HaaS家族新推出的多媒體開發(fā)板,它運(yùn)行AliOS Things操作系統(tǒng)(RTOS),集成了Camera,音視頻等多媒體能力,目前HaaS700中集成了HaaS RTC音視頻對講方案。
在RTC技術(shù)方案中,目前最具代表性的就是WebRTC,WebRTC是 Google 的一個專門針對網(wǎng)頁實(shí)時通信的標(biāo)準(zhǔn)及開源項(xiàng)目,只提供了基礎(chǔ)的前端功能實(shí)現(xiàn),包括編碼解碼和抖動緩沖等,開發(fā)者若要基于 WebRTC 開發(fā)商用項(xiàng)目,那么需要自行做服務(wù)端實(shí)現(xiàn)和部署,信令前后端選型實(shí)現(xiàn)部署,以及手機(jī)適配等一系列具體工作;在此之外還要在可用性和高質(zhì)量方面,進(jìn)行大量的改進(jìn)和打磨,對自身開發(fā)能力的門檻要求非常高。一個專業(yè)的 RTC 技術(shù)服務(wù)系統(tǒng),需要除了涵蓋上述的通信環(huán)節(jié)外,實(shí)際上還需要有解決互聯(lián)網(wǎng)不穩(wěn)定性的專用通信網(wǎng)絡(luò),以及針對互聯(lián)網(wǎng)信道的高容忍度的音視頻信號處理算法。
從技術(shù)角度出發(fā),兩個設(shè)備之間的通信可以是設(shè)備對設(shè)備(P2P),也可以是設(shè)備-服務(wù)端-設(shè)備,設(shè)備對設(shè)備方案看起來是一個很直觀的想法,并且還可以節(jié)約流量(不需要通過服務(wù)器轉(zhuǎn)一道),但是這種模式是有一定局限性的,它更多的是服務(wù)一對一的音視頻對講,并且這種設(shè)備還不能太低端,在沒有服務(wù)端介入的情況下,特別是IOT領(lǐng)域,低端設(shè)備要做到適應(yīng)各種場景(抗網(wǎng)絡(luò)丟包,NetEQ,音頻3A等各種算法)的能力是不現(xiàn)實(shí)的。而設(shè)備-服務(wù)端-設(shè)備這種模式,可以把一些耗CPU,耗內(nèi)存的工作放到服務(wù)端,能夠做到滿足各種不同能力的IoT設(shè)備用戶體驗(yàn),同時整體技術(shù)方案也可以平滑適配當(dāng)前新興的直播等領(lǐng)域。在HaaS RTC中,我們采用的是設(shè)備-服務(wù)端-設(shè)備的整體解決方案。
?
HaaS RTC技術(shù)方案是在視頻云基礎(chǔ)上搭建的,它主要關(guān)注的是如何在低端的IoT設(shè)備上打造跨設(shè)備,跨系統(tǒng)的音視頻方案,在高可靠,低成本的基礎(chǔ)上,為千萬級別的IoT多媒體設(shè)備帶來實(shí)時通訊能力。目前在HaaS700的開發(fā)板上,支持設(shè)備和設(shè)備對講,設(shè)備和手機(jī)對講以及設(shè)備和PC對講。
HaaS實(shí)現(xiàn) 音視頻實(shí)時通話
這里設(shè)備的概念指的是除了手機(jī),平板以及PC類的其他IoT設(shè)備, 在現(xiàn)實(shí)生活中,我們常見的音視頻通話設(shè)備有可穿戴手表(兒童手表),公網(wǎng)對講機(jī)以及智能門禁對講等,音視頻通話能力在這些設(shè)備中是具備主導(dǎo)屬性的,不同的設(shè)備場景在產(chǎn)品化過程中的技術(shù)要求有很大的不同。比如在兒童手表中,我們需要考慮功耗問題,通過對音視頻的編碼格式,幀率,軟硬件的編解碼還有參數(shù)的調(diào)整,盡可能的降低設(shè)備功耗,確保通話時長,同時,還需要保證視頻通話的高清晰度和高保真,在視頻通話的場景中,由于孩子始終處于移動的狀態(tài),4G信號極其容易不穩(wěn)定,但是家長和小孩需要能夠在視頻通話的過程中流暢且清晰的進(jìn)行溝通,這是尤為重要的;而在門禁對講中,由于設(shè)備本身是得到持續(xù)供電的,所以功耗問題不需要特別關(guān)注,同時國內(nèi)的可視對講系統(tǒng)通常應(yīng)用于大型的住宅小區(qū),很多是上千戶,甚至上萬戶的小區(qū),對聯(lián)網(wǎng)戶數(shù)容量及穩(wěn)定性要求更高,可視對講系統(tǒng)的主流仍然是采用RS-485總線信號傳輸,有向數(shù)字化發(fā)展的趨勢,國內(nèi)采用TCP/IP的戶數(shù)容量更大的可視對講系統(tǒng)正在逐漸走向成熟,所以在門禁對講領(lǐng)域,我們更需要關(guān)注高容量,穩(wěn)定性等問題。HaaS700考慮到了這些場景的需求,在功耗以及穩(wěn)定性方面都做了大量的優(yōu)化,可以應(yīng)用在各種音視頻對講或直播等場景中。
隨著互聯(lián)網(wǎng)以及設(shè)備智能化進(jìn)程加速,設(shè)備和手機(jī)之間的通信已經(jīng)越來越常見。比如手表和手機(jī)視頻通話,直播設(shè)備和手機(jī)之間的視頻直播,智能音箱和手機(jī)之間的視頻通話等。在這些場景中,設(shè)備和手機(jī)之間存在比較大的差異,包括屏幕分辨率差異,視頻編解碼能力差異,CPU運(yùn)算能力差異,網(wǎng)絡(luò)帶寬差異等等,這些差異決定了在音視頻通話整體方案中,需要從技術(shù)角度做到各種差異性的屏蔽,比如常見的音視頻編解碼格式適配,屏幕分辨率適配,網(wǎng)絡(luò)擁塞控制算法調(diào)整發(fā)送碼率解決網(wǎng)絡(luò)帶寬變化帶來的數(shù)據(jù)傳輸問題,NetEQ算法解決網(wǎng)絡(luò)抖動導(dǎo)致的音頻播放不平滑問題等等。同時,在不同的場景中,對音視頻延遲的要求也不盡相同,比如音視頻通話場景延遲要求要高于直播場景,在音視頻通話場景中,需要盡可能確保音視頻發(fā)送端到接收端的時延在1S以內(nèi),這對用戶體驗(yàn)尤為重要。
在移動互聯(lián)網(wǎng)時代,用戶的通信方式更多的轉(zhuǎn)向移動設(shè)備,設(shè)備和PC之間的通信越來越偏向行業(yè)化的趨勢發(fā)展,特別是近兩年直播的興起以及疫情的影響,加速了各種電商直播,線上教學(xué)以及線上會議的普及化,不同于設(shè)備對設(shè)備以及設(shè)備對手機(jī)之間的一對一音視頻通話場景,電商直播主要是一對N,而線上教學(xué),線上會議更是N對N的關(guān)系,這意味這要滿足線上會議等場景,我們需要實(shí)現(xiàn)N路推流,N路拉流,從技術(shù)角度來說,目前已經(jīng)有比較成熟的技術(shù)方案,但對于設(shè)備端,主要的挑戰(zhàn)是設(shè)備性能(CPU,內(nèi)存帶寬等),特別是一些低端的設(shè)備,在這種情況下,我們可以把一些性能和內(nèi)存要求比較高的操作放在服務(wù)端,比如N路推流在服務(wù)端建立映射,設(shè)備端只推一路,N路拉流在服務(wù)端進(jìn)行,合成一路后,再下發(fā)到設(shè)備端。把這些性能要求比較高的操作轉(zhuǎn)嫁到服務(wù)端后,設(shè)備端實(shí)際上還是一路拉流和一路推流,性能要求和一對一的音視頻通話并無區(qū)別。在HaaS RTC中,我們打通了設(shè)備和PC之間的音視頻通話,進(jìn)一步推進(jìn)了HaaS設(shè)備通信跨系統(tǒng)跨硬件平臺的能力,實(shí)現(xiàn)真正的三端互通。
HaaS RTC支持在RTOS級別的系統(tǒng)上搭建音視頻通話能力,為此,我們做了整體的架構(gòu)調(diào)整和性能優(yōu)化。區(qū)別于Android和Linux系統(tǒng),RTOS操作系統(tǒng)一般CPU能力弱,內(nèi)存小,比如HaaS700的CPU是ARM A7單核800Hz, 剩余可用內(nèi)存24MB左右,這要求我們需要盡可能的減少內(nèi)存消耗,重構(gòu)線程模型,比如一些串行或者不是很耗時操作的線程合并,降低簡單線程的線程棧空間等,同時,由于RTOS系統(tǒng)是單進(jìn)程,它的線程調(diào)度和Android和Linux有很大的區(qū)別,對于需要及時響應(yīng)的收發(fā)數(shù)據(jù)線程,我們需要顯式的提高線程調(diào)度優(yōu)先級,避免出現(xiàn)需要及時響應(yīng)的線程長時間沒有被調(diào)度到。除了一些線程調(diào)度和線程模型的調(diào)整,我們還需要進(jìn)行業(yè)務(wù)邏輯上的優(yōu)化,比如縮減高CPU消耗,低反饋的業(yè)務(wù)模塊,降低CPU消耗,限制業(yè)務(wù)邏輯隊(duì)列內(nèi)存分配增長空間,避免某些業(yè)務(wù)場景中內(nèi)存持續(xù)增長導(dǎo)致系統(tǒng)奔潰。
在架構(gòu)層面,為了快速適配不同的系統(tǒng)平臺,HaaS RTC打造了系統(tǒng)和驅(qū)動統(tǒng)一適配層,包括Camera,Display,渲染,編解碼以及系統(tǒng)線程,時鐘等,這樣的好處是在不同的系統(tǒng)平臺上,HaaS RTC核心代碼不需要做修改,只需要在適配層做一些簡單的底層適配。在適配層之上,包括音視頻推流,音視頻拉流,視頻云SDK以及信令系統(tǒng)模塊,其中音視頻推流模塊主要負(fù)責(zé)推流通道建立,編碼后的音視頻數(shù)據(jù)推送,音視頻拉流模塊負(fù)責(zé)拉流通道建立,接收服務(wù)端發(fā)送的音視頻碼流,視頻云SDK主要負(fù)責(zé)音視頻數(shù)據(jù)傳輸,以及適應(yīng)傳輸過程中的網(wǎng)絡(luò)抖動算法實(shí)現(xiàn),包括帶寬估計(jì),NetEQ等等,信令系統(tǒng)負(fù)責(zé)信令的呼叫控制,包括呼叫響應(yīng),呼叫接聽,呼叫掛斷等流程中涉及到的各種信息控制管理,在音視頻對講場景下,它需要和服務(wù)端配合,比如雙方建立會話過程中,服務(wù)端需要查詢驗(yàn)證呼叫方和被呼叫方賬號信息和設(shè)備信息,經(jīng)過驗(yàn)證后,通知被呼叫方,被呼叫方可以接聽或者掛斷呼叫,服務(wù)端根據(jù)被呼叫方的反饋建立會話通道或中止會話流程。RTC Manager是基于音視頻推流,音視頻拉流以及信令和系統(tǒng)能力之上的RTC管理模塊,在推流場景中,它負(fù)責(zé)音頻和視頻數(shù)據(jù)采集,并進(jìn)行音視頻編碼,編碼器輸出的碼流傳到推流模塊并上傳到服務(wù)端,在拉流場景中,它負(fù)責(zé)接收音視頻推流模塊下發(fā)的音視頻數(shù)據(jù),并通過音視頻解碼器進(jìn)行解碼操作,最終通過播控模塊播放音頻和視頻畫面。除此之外,RTC Manager負(fù)責(zé)向應(yīng)用層暴露RTC場景的所有能力,應(yīng)用層通過RTC Manager暴露的接口實(shí)現(xiàn)視頻通話能力。
HaaS RTC設(shè)備端技術(shù)方案只是滿足了RTOS和Linux設(shè)備端上的技術(shù)能力支撐,對于一套完整的RTC解決方案,還需要移動端以及強(qiáng)大的服務(wù)端能力支撐,移動端需要解決各種手機(jī)平臺的能力適配,讓用戶獲得一致的用戶體驗(yàn),服務(wù)端需要提供大規(guī)模實(shí)時的音視頻推流,拉流能力,能夠配合設(shè)備端應(yīng)對網(wǎng)絡(luò)波動影響帶來的丟包,延遲等各種問題。
我們常見的RTC場景大部分是基于成熟的系統(tǒng)上,比如IOS,Android以及Windows等等,這些系統(tǒng)一般都具備性能比較高的處理器以及比較大的內(nèi)存容量,而RTC場景本身對CPU和內(nèi)存要求也是比較高的(曾經(jīng)微信視頻通話一段時間后,手機(jī)燙成暖寶寶的體驗(yàn)還記憶猶新)。對于低端設(shè)備,如果要集成RTC能力,需要我們針對RTC場景做大量的性能,內(nèi)存調(diào)優(yōu)工作。相比于動輒4核CPU,內(nèi)存2G的Android設(shè)備,HaaS700CPU是arm A7單核,頻率只有800MHz,并且剩余可用內(nèi)存不到24MB。
性能指標(biāo) | 數(shù)據(jù)值 |
CPU占用率 | 100% |
內(nèi)存 | 24MB |
幀率 | 10fps |
分辨率 | 320x240 |
碼率 | 100K |
視頻延遲 | >6S |
音頻延遲 | >3S |
音頻3A | Enable |
HaaS700 RTC性能(優(yōu)化前)
在HaaS700上剛bring up RTC時,CPU占用率100%,音視頻延遲大于6S,系統(tǒng)正常運(yùn)行時間不超過1分鐘,因?yàn)閮?nèi)存快速增加很快就超過24MB,導(dǎo)致系統(tǒng)crash。特別是在弱網(wǎng)情況下,由于數(shù)據(jù)包發(fā)送速率降低,帶寬估計(jì)模塊需要持續(xù)運(yùn)轉(zhuǎn),這不僅提高了CPU占用率,同時還導(dǎo)致發(fā)送隊(duì)列碼流大量堆積,使得內(nèi)存申請持續(xù)增長,整體系統(tǒng)基本處于不可用的狀態(tài)。所以單純把Android或Linux這種面向偏高端的設(shè)備端系統(tǒng)運(yùn)行經(jīng)驗(yàn)照搬到RTOS級別的低端系統(tǒng)上,是不可行的,我們需要線程級別的代碼重構(gòu),功能模塊裁減以及整體的性能和內(nèi)存優(yōu)化。
性能指標(biāo) | 數(shù)據(jù)值 |
CPU占用率 | 85% |
內(nèi)存 | 12.5MB |
幀率 | 20fps |
分辨率 | 640x360 |
碼率 | 400K |
視頻延遲 | <500 MS |
音頻延遲 | <250 MS |
音頻3A | Enable |
HaaS700 RTC性能(優(yōu)化后)
為此,在HaaS700上,我們針對視頻通話場景做了線程級別的代碼重構(gòu),并做了大量的性能和內(nèi)存優(yōu)化,整體性能和內(nèi)存要求達(dá)到了可產(chǎn)品化水平,同時,在用戶體驗(yàn)上,我們對音視頻延遲做了進(jìn)一步的優(yōu)化,在設(shè)備對設(shè)備,設(shè)備對手機(jī)上都可以達(dá)到音視頻通話場景的產(chǎn)品化水準(zhǔn)。
自從智能手機(jī)出現(xiàn)以來,音視頻通話在現(xiàn)實(shí)生活中已經(jīng)隨處可見,目前運(yùn)用最廣泛的莫過于微信,而近兩年來新興業(yè)務(wù)的蓬勃發(fā)展,讓RTC技術(shù)方案得以滲透到各個領(lǐng)域,比如直播,遠(yuǎn)程教育,線上會議等等。我們可以預(yù)見在不久的將來,RTC技術(shù)會有更多的業(yè)務(wù)形態(tài),特別是需要一些線上線下相結(jié)合的領(lǐng)域,值得我們不斷挖掘和探索。比如現(xiàn)在很多餐廳提倡透明衛(wèi)生廚房,顧客可以通過透明玻璃看到廚師炒菜,讓顧客更放心。這種方式是否可以有更好的表達(dá)?如果我們在餐廳廚房按照一個直播攝像頭,顧客在座位上直接掃碼就可以觀看廚房情況,是否可以達(dá)到更好的效果?同時,這種模式是不是可以降低餐廳打造安心廚房的改造成本,更容易復(fù)制和推廣。
如需更多技術(shù)支持,可加入釘釘開發(fā)者群,或者關(guān)注微信公眾號。
更多技術(shù)與解決方案介紹,請?jiān)L問HaaS官方網(wǎng)站https://haas.iot.aliyun.com
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/122291.html
摘要:宋體同時支持多平臺的接入,能滿足不同客戶端的接入需求。宋體宋體支持萬人直播推送宋體宋體利用實(shí)時集群直播集群,實(shí)現(xiàn)音視頻連麥互動可以同時推送萬人直播,具體原理如下。有人說:2G 看文字,3G 看圖片,4G 看視頻,那么對于已經(jīng)開啟序幕的 5G 時代呢?隨著短視頻、在線課堂、互動直播等音視頻應(yīng)用的崛起,如何適配差異化的網(wǎng)絡(luò)環(huán)境,為用戶提供更流暢高清的實(shí)時音視頻服務(wù)成為關(guān)注重點(diǎn)。而當(dāng)前的音視頻技術(shù)...
摘要:隨著通信的發(fā)展,實(shí)時音視頻服務(wù)將進(jìn)一步覆蓋更多的生活場景。什么是實(shí)時通訊,我們很容易把和混淆。另外的延遲是毫秒級,在正常的網(wǎng)絡(luò)情況下,延遲在之間,可以多方通話實(shí)時互動。這篇文章主要是圍繞告訴大家什么是,能解決什么問題的普及貼。2020年初爆發(fā)的疫情,催生了在線教育、視頻會議、遠(yuǎn)程醫(yī)療等實(shí)時音視頻應(yīng)用的大規(guī)模增長,也使得服務(wù)于這些場景背后的底層框架RTC技術(shù)站上了風(fēng)口。早在 2010 年,Go...
摘要:擁塞控制算法包含三種擁塞控制算法,和。在早期的實(shí)現(xiàn)當(dāng)中,這兩個擁塞控制算法分別是在發(fā)送端和接收端實(shí)現(xiàn)的。音頻算法音頻算法指的是在發(fā)送端對發(fā)送信號依次進(jìn)行回聲消除降噪以及音量均衡操作,它包含三個算法回聲消除,噪聲抑制和自動增益控制。 1、背景 RTC(Real-time Communica...
閱讀 4391·2021-11-19 09:59
閱讀 3318·2021-10-12 10:12
閱讀 2630·2021-09-22 15:25
閱讀 3320·2019-08-30 15:55
閱讀 1182·2019-08-29 11:27
閱讀 1462·2019-08-28 18:06
閱讀 2735·2019-08-26 13:41
閱讀 2554·2019-08-26 13:41