本發(fā)明涉及一種通訊數(shù)據(jù)處理方法,具體的說,是涉及一種chrome的webrtc-internals工具顯示終端應(yīng)用程序的方法。
背景技術(shù):
webrtc作為三方的開源庫(kù),擁有非常強(qiáng)大而完善的統(tǒng)計(jì)數(shù)據(jù)收集機(jī)制,開發(fā)者在基于webrtc開發(fā)即時(shí)通訊的應(yīng)用時(shí),通過webrtc現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)基于就能滿足對(duì)發(fā)生問題的跟蹤與定位。
chrome的webrtc-internals工具,主要是用來實(shí)時(shí)顯示基于webrtc網(wǎng)頁(yè)版的即時(shí)通訊運(yùn)行時(shí)的統(tǒng)計(jì)數(shù)據(jù),以方便跟蹤和定位webrtc的問題,其主要的流程如下圖1所示,(1)在chrome瀏覽器中,打開一個(gè)標(biāo)簽(標(biāo)簽1)運(yùn)行網(wǎng)頁(yè)版的即時(shí)通訊。這是webrtc統(tǒng)計(jì)數(shù)據(jù)的生產(chǎn)與收集的模塊。(2)在chrome瀏覽器中,再打開一個(gè)標(biāo)簽(標(biāo)簽2)在網(wǎng)址欄中輸入chrome://webrtc-internals/運(yùn)行webrtc-internals工具。在標(biāo)簽2的網(wǎng)頁(yè)中,將實(shí)時(shí)的顯示標(biāo)簽1中的webrtc在進(jìn)行即時(shí)通訊時(shí)的統(tǒng)計(jì)數(shù)據(jù),這是webrtc統(tǒng)計(jì)數(shù)據(jù)顯示的模塊,webrtc-internals顯示的數(shù)據(jù),主要是與webrtc庫(kù)中的模塊進(jìn)行進(jìn)程間通信(ipc)獲得。
webrtc作為開源的三方庫(kù),不僅可被網(wǎng)頁(yè)版的javascript程序調(diào)用,也可以被終端應(yīng)用程序集成調(diào)用。而chrome提供的webrtc-internals工具只能顯示基于網(wǎng)頁(yè)版的webrtc統(tǒng)計(jì)數(shù)據(jù),無法顯示終端應(yīng)用程序集成的webrtc統(tǒng)計(jì)數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述現(xiàn)有技術(shù)中的不足,本發(fā)明提供一種能夠?qū)⒔K端應(yīng)用程序集成的webrtc統(tǒng)計(jì)數(shù)據(jù)在webrtc-internals中實(shí)時(shí)顯示的chrome的webrtc-internals工具顯示終端應(yīng)用程序的方法。
本發(fā)明所采取的技術(shù)方案是:
一種chrome的webrtc-internals工具顯示終端應(yīng)用程序的方法,包括即時(shí)通訊應(yīng)用程序模塊和chrome瀏覽器模塊;即時(shí)通訊應(yīng)用程序模塊包括;webrtc庫(kù)和統(tǒng)計(jì)數(shù)據(jù)模塊,統(tǒng)計(jì)數(shù)據(jù)模塊是設(shè)置有獲取統(tǒng)計(jì)數(shù)據(jù)接口模塊;chrome瀏覽器模塊包括webrtc-internals模塊和網(wǎng)頁(yè)渲染顯示模塊,webrtc庫(kù)中包括有與webrtc-internals模塊進(jìn)行通訊的數(shù)據(jù)交互模塊。
所述數(shù)據(jù)交互模塊包括:命名管道a和命名管道b;命名管道a與統(tǒng)計(jì)數(shù)據(jù)接口模塊相通訊;命名管道b與webrtc-internals模塊相通訊。
所述即時(shí)通訊應(yīng)用程序模塊調(diào)用webrtc庫(kù)進(jìn)行數(shù)據(jù)處理;webrtc中的統(tǒng)計(jì)數(shù)據(jù)模塊會(huì)統(tǒng)計(jì)webrtc的統(tǒng)計(jì)數(shù)據(jù);
線程處理模塊完成各自工作后,都會(huì)更新相應(yīng)的統(tǒng)計(jì)數(shù)據(jù)到統(tǒng)計(jì)信息暫存模塊的對(duì)象中;
主線程模塊則周期性更新統(tǒng)計(jì)信息代理模塊對(duì)象,統(tǒng)計(jì)信息代理模塊對(duì)象從統(tǒng)計(jì)信息暫存模塊對(duì)象中拉取數(shù)據(jù),保存在自己的統(tǒng)計(jì)信息成員變量中;
統(tǒng)計(jì)信息代理模塊對(duì)象獲取統(tǒng)計(jì)數(shù)據(jù)接口線程調(diào)用流程到達(dá)統(tǒng)計(jì)信息代理模塊對(duì)象,獲取統(tǒng)計(jì)數(shù)據(jù)而返;返回到命名管道a中,由管道a與管道b進(jìn)行通訊,把統(tǒng)計(jì)數(shù)據(jù)傳送至管道b;
webrtc-internals工具定時(shí)的調(diào)用命名管道b的接口請(qǐng)求webrtc的統(tǒng)計(jì)數(shù)據(jù);命名管道b收到請(qǐng)求后,會(huì)與即時(shí)通訊應(yīng)用程序中的命名管道a進(jìn)行通訊,命名管道a會(huì)調(diào)用webrtc庫(kù)中獲取統(tǒng)計(jì)數(shù)據(jù)的接口以獲取webrtc的統(tǒng)計(jì)數(shù)據(jù),并返回到命名管道b中,最后傳給chrome瀏覽器渲染顯示。
所述即時(shí)通訊應(yīng)用程序模塊調(diào)用webrtc庫(kù)進(jìn)行數(shù)據(jù)處理的數(shù)據(jù)為進(jìn)行音頻或視頻數(shù)據(jù)。
所述線程處理模塊包括:網(wǎng)絡(luò)模塊、解碼模塊和渲染顯示模塊。
所述周期性更新統(tǒng)計(jì)信息代理模塊對(duì)象的主線程模塊為視頻處理主線程模塊。
所述周期性更新統(tǒng)計(jì)信息代理模塊對(duì)象的主線程模塊為音頻處理主線程模塊。
本發(fā)明相對(duì)現(xiàn)有技術(shù)的有益效果:
本發(fā)明chrome的webrtc-internals工具顯示終端應(yīng)用程序的方法,webrtc-internals工具不僅能顯示基于網(wǎng)頁(yè)版的webrtc統(tǒng)計(jì)數(shù)據(jù),而且能顯示終端應(yīng)用程序集成的webrtc統(tǒng)計(jì)數(shù)據(jù)。
附圖說明
圖1是現(xiàn)有技術(shù)chrome的webrtc-internals工具實(shí)時(shí)顯示基于webrtc網(wǎng)頁(yè)版的即時(shí)通訊運(yùn)行時(shí)的統(tǒng)計(jì)數(shù)據(jù)的流程圖;
圖2是本發(fā)明chrome的webrtc-internals工具實(shí)時(shí)顯示基于webrtc網(wǎng)頁(yè)版的即時(shí)通訊運(yùn)行時(shí)的統(tǒng)計(jì)數(shù)據(jù)的流程圖;
圖3是本發(fā)明的視頻數(shù)據(jù)的更新與獲取流程圖;
圖4是本發(fā)明chrome的webrtc-internals工具顯示終端應(yīng)用程序的方法的ebrtc架構(gòu)圖;
圖5是本發(fā)明chrome的webrtc-internals工具顯示終端應(yīng)用程序的方法的webrtc實(shí)現(xiàn)的網(wǎng)頁(yè)間即時(shí)通訊的框架圖。
具體實(shí)施方式
以下參照附圖及實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)的說明:
附圖1-5可知,一種chrome的webrtc-internals工具顯示終端應(yīng)用程序的方法,包括即時(shí)通訊應(yīng)用程序模塊和chrome瀏覽器模塊;即時(shí)通訊應(yīng)用程序模塊包括;webrtc庫(kù)和統(tǒng)計(jì)數(shù)據(jù)模塊,統(tǒng)計(jì)數(shù)據(jù)模塊是設(shè)置有獲取統(tǒng)計(jì)數(shù)據(jù)接口模塊;chrome瀏覽器模塊包括webrtc-internals模塊和網(wǎng)頁(yè)渲染顯示模塊,webrtc庫(kù)中包括有與webrtc-internals模塊進(jìn)行通訊的數(shù)據(jù)交互模塊。
所述數(shù)據(jù)交互模塊包括:命名管道a和命名管道b;命名管道a與統(tǒng)計(jì)數(shù)據(jù)接口模塊相通訊;命名管道b與webrtc-internals模塊相通訊。
把命名管道的通訊模塊分別集成到webrtc自帶的peerconnection_client測(cè)試程序和chrome的webrtc-internals工具,運(yùn)行webrtc測(cè)試程序時(shí),通過chrome打開webrtc-internals的測(cè)試工具,顯示指定字符串的內(nèi)容。
所述即時(shí)通訊應(yīng)用程序模塊調(diào)用webrtc庫(kù)進(jìn)行數(shù)據(jù)處理;webrtc中的統(tǒng)計(jì)數(shù)據(jù)模塊會(huì)統(tǒng)計(jì)webrtc的統(tǒng)計(jì)數(shù)據(jù);
下面以即時(shí)應(yīng)用通訊應(yīng)用程序在與遠(yuǎn)端進(jìn)行視頻通話時(shí)為例,說明webrtc收集視頻相關(guān)信息的收集流程。
三個(gè)線程處理模塊完成各自工作后,都會(huì)更新相應(yīng)的統(tǒng)計(jì)數(shù)據(jù)到統(tǒng)計(jì)信息暫存模塊的對(duì)象中;
主線程模塊則周期性更新統(tǒng)計(jì)信息代理模塊對(duì)象,統(tǒng)計(jì)信息代理模塊對(duì)象從統(tǒng)計(jì)信息暫存模塊對(duì)象中拉取數(shù)據(jù),保存在自己的統(tǒng)計(jì)信息成員變量中;
統(tǒng)計(jì)信息代理模塊對(duì)象獲取統(tǒng)計(jì)數(shù)據(jù)接口線程調(diào)用流程到達(dá)統(tǒng)計(jì)信息代理模塊對(duì)象,獲取統(tǒng)計(jì)數(shù)據(jù)而返;返回到命名管道a中,由管道a與管道b進(jìn)行通訊,把統(tǒng)計(jì)數(shù)據(jù)傳送至管道b;
工作線程、更新線程和拉取線程共同協(xié)同工作完成統(tǒng)計(jì)數(shù)據(jù)的產(chǎn)生、更新和拉取。
chrome瀏覽器上輸入chrome://webrtc-internals/;
webrtc-internals工具定時(shí)的調(diào)用命名管道b的接口請(qǐng)求webrtc的統(tǒng)計(jì)數(shù)據(jù);命名管道b收到請(qǐng)求后,會(huì)與即時(shí)通訊應(yīng)用程序中的命名管道a進(jìn)行通訊,命名管道a會(huì)調(diào)用webrtc庫(kù)中獲取統(tǒng)計(jì)數(shù)據(jù)的接口以獲取webrtc的統(tǒng)計(jì)數(shù)據(jù),并返回到命名管道b中,最后傳給chrome瀏覽器渲染顯示。
所述即時(shí)通訊應(yīng)用程序模塊調(diào)用webrtc庫(kù)進(jìn)行數(shù)據(jù)處理的數(shù)據(jù)為進(jìn)行音頻或視頻數(shù)據(jù)。
所述線程處理模塊包括:網(wǎng)絡(luò)模塊、解碼模塊和渲染顯示模塊。
所述周期性更新統(tǒng)計(jì)信息代理模塊對(duì)象的主線程模塊為視頻處理主線程模塊。
所述周期性更新統(tǒng)計(jì)信息代理模塊對(duì)象的主線程模塊為音頻處理主線程模塊
本發(fā)明的技術(shù)方案,通過在webrtc庫(kù)中新增與webrtc-internals工具的數(shù)據(jù)交互模塊,使得終端應(yīng)用程序集成的webrtc統(tǒng)計(jì)數(shù)據(jù)也能在webrtc-internals中實(shí)時(shí)顯示。
webrtc,名稱源自網(wǎng)頁(yè)實(shí)時(shí)通信(webreal-timecommunication)的縮寫,是一個(gè)支持網(wǎng)頁(yè)瀏覽器進(jìn)行實(shí)時(shí)語(yǔ)音對(duì)話或視頻對(duì)話的api。
(1)webrtc的目的
webrtc項(xiàng)目的最終目的主要是讓web開發(fā)者能夠基于瀏覽器(chrome、firefox等)輕易快捷開發(fā)出豐富的實(shí)時(shí)多媒體應(yīng)用,而無需下載安裝任何插件,web開發(fā)者也無需關(guān)注多媒體的數(shù)字信號(hào)處理過程,只需編寫簡(jiǎn)單的javascript程序即可實(shí)現(xiàn)。
(2)webrtc架構(gòu)圖
如圖4架構(gòu)圖說明:
a.網(wǎng)絡(luò)接口:是網(wǎng)頁(yè)開發(fā)者的接口層
b.webrtcc++接口:是面向?yàn)g覽器廠商的接口層
c.音頻捕獲/播放、視頻捕獲、網(wǎng)絡(luò)輸入/輸出:是各瀏覽器廠商可以自己定義的接口
(3)webrtc架構(gòu)組件包括:
a.網(wǎng)頁(yè)應(yīng)用
網(wǎng)頁(yè)開發(fā)者開發(fā)的程序,網(wǎng)頁(yè)開發(fā)者可以基于集成webrtc的瀏覽器提供的網(wǎng)頁(yè)接口開發(fā)基于視頻、音頻的實(shí)時(shí)通信應(yīng)用。
b.網(wǎng)絡(luò)接口
面向第三方開發(fā)者的webrtc標(biāo)準(zhǔn)api(javascript),使開發(fā)者能夠容易地開發(fā)出類似于網(wǎng)絡(luò)視頻聊天的web應(yīng)用。
c.webrtcc++接口
本地c++接口層,使瀏覽器廠商容易實(shí)現(xiàn)webrtc標(biāo)準(zhǔn)的網(wǎng)絡(luò)接口,抽象地對(duì)數(shù)字信號(hào)過程進(jìn)行處理。
(d)transport/session(傳輸/會(huì)話層)
會(huì)話層組件采用了libjingle庫(kù)的部分組件實(shí)現(xiàn),無須使用xmpp/jingle協(xié)議。
●rtpstack協(xié)議棧
realtimeprotocol
●p2pstun/turn/ice
p2p即端到端,可以通過stun(simpletraversalofudpthroughnats,即簡(jiǎn)單的用udp穿透nat),turn(traversalusingrelaysaroundnat,即使用中繼穿透nat)和ice(interactiveconnectivityestablishment,即交互式連通建立方式)組件來建立不同類型網(wǎng)絡(luò)間的呼叫連接。
●會(huì)話管理(sessionmanagement)
一個(gè)抽象的會(huì)話層,提供會(huì)話建立和管理功能。該層協(xié)議留給應(yīng)用開發(fā)者自定義實(shí)現(xiàn)。
(5)音頻引擎(voiceengine)
音頻引擎是包含一系列音頻多媒體處理的框架,包括從視頻采集卡到網(wǎng)絡(luò)傳輸端等整個(gè)解決方案。
ps:voiceengine是webrtc極具價(jià)值的技術(shù)之一,是google收購(gòu)gips公司后開源的。在voip上,技術(shù)業(yè)界領(lǐng)先,后面的文章會(huì)詳細(xì)了解。
a.isac
internetspeechaudiocodec
針對(duì)voip和音頻流的寬帶和超寬帶音頻編解碼器,是webrtc音頻引擎的默認(rèn)的編解碼器
采樣頻率:16khz,24khz,32khz;(默認(rèn)為16khz)
自適應(yīng)速率為10kbit/s~52kbit/;
自適應(yīng)包大?。?0~60ms;
算法延時(shí):frame+3ms
b.ilbc
internetlowbitratecodec
voip音頻流的窄帶語(yǔ)音編解碼器
采樣頻率:8khz;
20ms幀比特率為15.2kbps
30ms幀比特率為13.33kbps
標(biāo)準(zhǔn)由ietfrfc3951和rfc3952定義
c.(音頻網(wǎng)絡(luò)均衡)neteqforvoice
針對(duì)音頻軟件實(shí)現(xiàn)的語(yǔ)音信號(hào)處理元件
neteq算法:自適應(yīng)抖動(dòng)控制算法以及語(yǔ)音包丟失隱藏算法。使其能夠快速且高解析度地適應(yīng)不斷變化的網(wǎng)絡(luò)環(huán)境,確保音質(zhì)優(yōu)美且緩沖延遲最小。
ps:neteq也是webrtc中一個(gè)極具價(jià)值的技術(shù),對(duì)于提高voip質(zhì)量有明顯效果,加以aec\nr\agc等模塊集成使用,效果更好。
d.acousticechocanceler(aec)
回聲消除器是一個(gè)基于軟件的信號(hào)處理元件,能實(shí)時(shí)的去除mic采集到的回聲。
e.noisereduction(nr)
噪聲抑制也是一個(gè)基于軟件的信號(hào)處理元件,用于消除與相關(guān)voip的某些類型的背景噪聲(嘶嘶聲,風(fēng)扇噪音等等...)。
(6)視頻引擎(videoengine)
webrtc視頻處理引擎
videoengine是包含一系列視頻處理的整體框架,從攝像頭采集視頻到視頻信息網(wǎng)絡(luò)傳輸再到視頻顯示整個(gè)完整過程的解決方案。
a.vp8
視頻圖像編解碼器,是webrtc視頻引擎的默認(rèn)的編解碼器。
vp8適合實(shí)時(shí)通信應(yīng)用場(chǎng)景,因?yàn)樗饕轻槍?duì)低延時(shí)而設(shè)計(jì)的編解碼器。
ps:vpx編解碼器是google收購(gòu)on2公司后開源的,vpx現(xiàn)在是webm項(xiàng)目的一部分,而webm項(xiàng)目是google致力于推動(dòng)的html5標(biāo)準(zhǔn)之一
b.視頻抖動(dòng)(videojitterbuffer)
視頻抖動(dòng)緩沖器,可以降低由于視頻抖動(dòng)和視頻信息包丟失帶來的不良影響。
c.圖像增強(qiáng)(imageenhancements)
圖像質(zhì)量增強(qiáng)模塊
對(duì)網(wǎng)絡(luò)攝像頭采集到的圖像進(jìn)行處理,包括明暗度檢測(cè)、顏色增強(qiáng)、降噪處理等功能,用來提升視頻質(zhì)量。
(7)webrtc的運(yùn)行時(shí)信息
a.發(fā)送端采集統(tǒng)計(jì):對(duì)應(yīng)于媒體數(shù)據(jù)的產(chǎn)生,包括幀率,幀大小,媒體數(shù)據(jù)源的時(shí)鐘頻率,編解碼器名稱,等等。
b.發(fā)送端rtp統(tǒng)計(jì):對(duì)應(yīng)于媒體數(shù)據(jù)的發(fā)送,包括發(fā)送數(shù)據(jù)包數(shù),發(fā)送字節(jié)數(shù),往返時(shí)間rtt,等等。
c.接收端rtp統(tǒng)計(jì):對(duì)應(yīng)于媒體數(shù)據(jù)的接收,包括接收數(shù)據(jù)包數(shù),接收字節(jié)數(shù),丟棄數(shù)據(jù)包數(shù),丟失數(shù)據(jù)包數(shù),網(wǎng)絡(luò)抖動(dòng)jitter,等等。
d.接收端渲染統(tǒng)計(jì):對(duì)應(yīng)于媒體數(shù)據(jù)的渲染,包括丟棄幀數(shù),丟失幀數(shù),渲染幀數(shù),渲染延遲,等等。
另外還有一些雜項(xiàng)統(tǒng)計(jì),如datachannel度量,網(wǎng)絡(luò)接口度量,證書統(tǒng)計(jì)等等。在眾多信息中,有一些反映webrtc運(yùn)行狀態(tài)的核心度量,包括往返時(shí)間rtt,丟包率和接收端延遲等,分別表述如下:
往返時(shí)間rtt:表示數(shù)據(jù)在網(wǎng)絡(luò)上傳輸所用的時(shí)間,一般通過rtcp的sr/rr數(shù)據(jù)包中的相關(guān)域進(jìn)行計(jì)算。該度量直接反映網(wǎng)絡(luò)狀況的好壞。
丟包率影響接收端音視頻質(zhì)量,在嚴(yán)重的情況下可能導(dǎo)致聲音跳變或者視頻馬賽克,從側(cè)面反映網(wǎng)絡(luò)狀況的好壞。
音視頻數(shù)據(jù)到達(dá)接收端之后,要經(jīng)歷收包、解碼、渲染等過程,該過程會(huì)帶來延遲。接收端延遲是數(shù)據(jù)從采集到渲染單向延遲的重要組成部分。
通過以上分析可知,webrtc返回信息包含數(shù)據(jù)管線的各個(gè)階段的統(tǒng)計(jì)信息,從數(shù)據(jù)采集、編碼到發(fā)送,再到數(shù)據(jù)接收、解碼和渲染。這為監(jiān)控webrtc應(yīng)用的運(yùn)行狀態(tài)提供第一手?jǐn)?shù)據(jù)。
(8)通過webrtc實(shí)現(xiàn)的網(wǎng)頁(yè)間即時(shí)通訊的框架圖。
開始視頻通話前發(fā)起端和接收端需要一些交互,如通知對(duì)方開始視頻,接收視頻,視頻參數(shù)協(xié)商(sdp信息),nat地址交換,這個(gè)過程我們稱之為信令交互,webrtc沒有定義標(biāo)準(zhǔn)信令格式,既可以使用sip(sessioninitiationprotocol)也可以使用xmpp(extensiblemessagingpresenceprotocol),還可以使用自定義的信令格式,最簡(jiǎn)單的方式就是使用websocket或xmlhttprequest,自定義格式完成信令交互過程。
以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明的結(jié)構(gòu)作任何形式上的限制。凡是依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡(jiǎn)單修改、等同變化與修飾,均屬于本發(fā)明的技術(shù)方案范圍內(nèi)。