五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

如何針對(duì)海外不同地區(qū)進(jìn)行音視頻自動(dòng)化測(cè)試?丨Dev for Dev 專欄

2022-06-16 09:53 作者:聲網(wǎng)RTE開(kāi)發(fā)者社區(qū)  | 我要投稿

前言

近年來(lái)由于全球性的新冠疫情,世界各地對(duì)實(shí)時(shí)音視頻的需求猛增。不同國(guó)家和地區(qū)由于經(jīng)濟(jì)發(fā)展、國(guó)家政策等原因,網(wǎng)絡(luò)環(huán)境有很大不同,如果要做好音視頻體驗(yàn),就需要分地域進(jìn)行音視頻指標(biāo)測(cè)試。但是不論是外包,還是云測(cè),都無(wú)法滿足我們對(duì)質(zhì)量的要求。

本文將介紹在當(dāng)前新冠疫情下,聲網(wǎng)是如何對(duì)海外不同地區(qū)進(jìn)行音視頻自動(dòng)化測(cè)試,并獲得可靠的指標(biāo)結(jié)果。

本文為「Dev for Dev 專欄」系列內(nèi)容,作者為聲網(wǎng)音視頻實(shí)驗(yàn)室 Android 開(kāi)發(fā)工程師 胡大化。



目錄??

1.?傳統(tǒng)音視頻測(cè)試方法已不適用?

?2.?為何不外包給海外測(cè)試團(tuán)隊(duì)??

?3.?借助云測(cè)進(jìn)行自動(dòng)化測(cè)試

?4.?其他測(cè)試方法




以測(cè)視頻延時(shí)為例,以前我們通常的做法是:首先找一個(gè)網(wǎng)絡(luò)時(shí)鐘,然后讓發(fā)送端、接收端兩臺(tái)手機(jī)進(jìn)行視頻通話,并且用發(fā)送端手機(jī)拍攝這個(gè)時(shí)鐘,然后接收端就看到網(wǎng)絡(luò)時(shí)鐘的畫(huà)面。我們將網(wǎng)絡(luò)時(shí)鐘的時(shí)間,減去接收端手機(jī)顯示的時(shí)鐘時(shí)間,就是這一幀視頻的延時(shí)。如圖 1.1 所示:


圖1.1 當(dāng)前幀延時(shí)為315ms ??


這種測(cè)試方法需要測(cè)試人員到現(xiàn)場(chǎng)去布置測(cè)試設(shè)備。然而在當(dāng)前疫情環(huán)境下,很難派員工去海外出差進(jìn)行實(shí)地場(chǎng)測(cè)。




你可能會(huì)想到既然不能派員工去海外出差,可不可找當(dāng)?shù)厝藥兔?,或者外包給當(dāng)?shù)貙I(yè)的測(cè)試團(tuán)隊(duì)?


這種策略我們也考慮過(guò)。但音視頻測(cè)試不同于一般的軟件黑盒測(cè)試,在測(cè)試過(guò)程中實(shí)測(cè)用例很多,每個(gè)用例都要調(diào)不同的參數(shù),外部測(cè)試團(tuán)隊(duì)很難達(dá)到我們平時(shí)測(cè)試時(shí)關(guān)注細(xì)節(jié)的程度,另外他們也不具備測(cè)試音視頻所需要的專業(yè)知識(shí)。無(wú)法保證測(cè)試結(jié)果準(zhǔn)確可靠。再者不同國(guó)家和地區(qū)由于語(yǔ)言時(shí)區(qū)等原因,協(xié)調(diào)的成本極高。




我們嘗試使用云測(cè)供應(yīng)商在海外不同地區(qū)部署的手機(jī)做測(cè)試,在這些手機(jī)安裝測(cè)試程序,在國(guó)內(nèi)通過(guò)遠(yuǎn)程桌面或自動(dòng)化腳本控制手機(jī)進(jìn)行音視頻通話。


大的云測(cè)廠商如 Headspin 在國(guó)外幾十個(gè)國(guó)家地區(qū)都有部署云測(cè)手機(jī),但云測(cè)手機(jī)與真機(jī)不同,有很多限制:比如攝像頭被遮住,就無(wú)法使用那些通過(guò)攝像頭采集進(jìn)行視頻傳輸?shù)臏y(cè)試用例了。因此我們需要設(shè)計(jì)一套不使用攝像頭測(cè)音視頻指標(biāo)的方案。我們想到了通過(guò)自采集 YUV 視頻的方式測(cè)試視頻指標(biāo)。


采用自采集 YUV 的方式,實(shí)現(xiàn)了兩個(gè)云測(cè)手機(jī)之間視頻傳輸,那怎么才能得到視頻傳輸?shù)男阅苤笜?biāo)呢?如延時(shí)、卡頓、碼率、幀率等。使用 YUV 自采集的方式,沒(méi)有獨(dú)立的時(shí)鐘源可以參考,測(cè)延時(shí)必須要解決兩個(gè)手機(jī)對(duì)時(shí)問(wèn)題。我們嘗試通過(guò) NTP 服務(wù)器或局域網(wǎng)對(duì)時(shí)兩種方案。如果兩個(gè)手機(jī)都在一個(gè)局域網(wǎng)下,通過(guò)局域網(wǎng)對(duì)時(shí)會(huì)非常精準(zhǔn),我們?cè)诒镜貙?shí)測(cè)兩個(gè)手機(jī)之間交換數(shù)據(jù)包往返延時(shí) rtt<10ms,而且在同一個(gè)局域網(wǎng)內(nèi)上行和下行鏈路速度一樣,那么實(shí)際對(duì)時(shí)偏差應(yīng)該<2ms。這符合我們對(duì)精度的要求。


但是有的云測(cè)供應(yīng)商兩個(gè)手機(jī)之間無(wú)法通過(guò)局域網(wǎng)通信,比如 Headspin 就不可以。這時(shí)我們考慮用 NTP 方式對(duì)時(shí)。NTP 對(duì)時(shí)誤差在幾十毫秒,相比局域網(wǎng)大很多,如果超過(guò) 50ms,就會(huì)對(duì)我們測(cè)延時(shí)影響很大,我們希望對(duì)時(shí)偏差<50ms。如何做到這一點(diǎn)?通過(guò)查閱 NTP 官方文檔得知,只要對(duì)時(shí)時(shí) rtt 足夠小,就可以實(shí)現(xiàn)。rtt 與對(duì)時(shí)偏差的關(guān)系如下圖 1.2 所示(來(lái)源于 NTP 官網(wǎng)):


圖1.2 NTP 對(duì)時(shí)中 rtt 與對(duì)時(shí)偏差的關(guān)系


從上面可以看出,只要往返延時(shí) rtt 控制 100ms 以內(nèi),對(duì)時(shí)偏差-10ms<offset<10ms,這樣兩個(gè)手機(jī)的對(duì)時(shí)偏差不會(huì)超過(guò) 20ms,符合我們的要求。實(shí)際環(huán)境下能否做到 rtt<100ms 呢?通過(guò)實(shí)測(cè)我們發(fā)現(xiàn)完全可以做到。在上海通過(guò)阿里云的 NT P服務(wù)器(ntp.aliyun.com)對(duì)時(shí),rtt 在 30ms 左右,很少超過(guò) 60ms。


在海外,以印度新德里為例,使用當(dāng)?shù)氐?NTP 服務(wù)器(time.nplindia.org)rtt 也容易在 30ms 以下。因此我們只要使用當(dāng)?shù)鼗蚓嚯x比較近的 NTP 服務(wù)器對(duì)時(shí),精度都可以滿足要求。在程序?qū)崿F(xiàn)時(shí)我們可以多次對(duì)時(shí),取 rtt<100ms 時(shí)的最小值。


解決了對(duì)時(shí)問(wèn)題后,需要知道視頻幀的發(fā)送時(shí)間和接收到的時(shí)間。我們可以在發(fā)送端把發(fā)送時(shí)間畫(huà)在視頻幀上,接收端把當(dāng)前時(shí)間以浮窗形式蓋在接收到的視頻幀上,對(duì)接收端錄屏,錄像后的每一幀都有發(fā)送時(shí)間和接收時(shí)間,通過(guò)AI識(shí)別出來(lái)后,就可以計(jì)算出這一幀的延時(shí)。如圖 1.3 所示:



圖1.3 打上時(shí)間戳的視頻傳輸


除了延時(shí)外,接下來(lái)要計(jì)算幀率、碼率和卡頓率。


幀率的計(jì)算比較簡(jiǎn)單,對(duì)接收端錄屏后的視頻取每一幀,如果這一幀上的數(shù)字相比上一幀有變化,我們就認(rèn)為是不同幀,計(jì)算出幀數(shù)除以時(shí)間就是幀率,碼率的計(jì)算我們可以通過(guò)抓包使用 Wireshark 分析,在音視頻通話中視頻數(shù)據(jù)都是以 UDP 協(xié)議傳輸,通過(guò) Wireshark 可以很明顯的區(qū)分出來(lái)。


卡頓率與時(shí)間相關(guān),通常我們計(jì)算 200ms、300ms、600ms 這幾種情況下的卡頓率,計(jì)算也比較簡(jiǎn)單,以 200ms 為例,只要前后不同幀的間隔超過(guò)了 200ms,就認(rèn)為是卡頓,卡頓數(shù)除以總幀數(shù)就是卡頓率。




相比云測(cè),是否有更簡(jiǎn)單的測(cè)試方案呢? 我們想到了想到借助 SDK 自身的統(tǒng)計(jì)信息,RTC 方案提供商都會(huì)在給外部使用的 SDK 中集成詳細(xì)且全面的統(tǒng)計(jì)信息,我們可以通過(guò)回調(diào)形式拿到。例如,通過(guò)聲網(wǎng)的onRtcStats(IRtcEngineEventHandler.RtcStats stats)回調(diào)可以實(shí)現(xiàn)獲取當(dāng)前通話的音視頻指標(biāo)信息,更詳細(xì)信息,可訪問(wèn)聲網(wǎng)文檔中心(docs.agora.io/cn)搜索了解。當(dāng)然這種方式在別的方案不可用時(shí)不失為一種參考。


以上僅是一家之言,音視頻測(cè)試有很多種方案,說(shuō)不定你已有更加準(zhǔn)確高效的方法。歡迎在聲網(wǎng)開(kāi)發(fā)者社區(qū) rtcdeveloper.agora.io 分享出來(lái),我們一起交流,共同進(jìn)步!



如何針對(duì)海外不同地區(qū)進(jìn)行音視頻自動(dòng)化測(cè)試?丨Dev for Dev 專欄的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
湘潭市| 泗洪县| 德钦县| 梁山县| 随州市| 赤峰市| 南开区| 广德县| 哈密市| 雷波县| 绥宁县| 高雄市| 军事| 丰顺县| 玉门市| 巩义市| 昭苏县| 温州市| 英超| 博野县| 栾城县| 黔南| 长顺县| 仙桃市| 永川市| 汝南县| 大洼县| 若羌县| 汨罗市| 瓮安县| 旅游| 玉龙| 台州市| 炎陵县| 乌海市| 迁西县| 安吉县| 文山县| 全椒县| 嘉善县| 栾川县|