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