本發(fā)明涉及遠(yuǎn)程操作技術(shù)領(lǐng)域,尤其涉及的是一種基于WebRTC的遠(yuǎn)程操作方法及系統(tǒng)。
背景技術(shù):
隨著終端技術(shù)的不斷發(fā)展,手機(jī)、平板電腦等移動終端的使用越來越普及。遠(yuǎn)程控制是在網(wǎng)絡(luò)上由一臺電腦(主控端Remote/客戶端)遠(yuǎn)距離去控制另一臺電腦(被控端 Host/服務(wù)器端)的技術(shù),主要通過遠(yuǎn)程控制軟件實(shí)現(xiàn)。目前已經(jīng)有許多屏幕共享和遠(yuǎn)程操作的方法,但是這些方法要么依賴于設(shè)備發(fā)現(xiàn),要么與平臺相關(guān),只適用于某種平臺或操作系統(tǒng),操作復(fù)雜,效率不高,給用戶帶來了不便。
因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題在于,提供一種基于WebRTC的遠(yuǎn)程操作方法及系統(tǒng),旨在解決現(xiàn)有的遠(yuǎn)程操作復(fù)雜,效率不高的問題。
本發(fā)明解決技術(shù)問題所采用的技術(shù)方案如下:
一種基于WebRTC的遠(yuǎn)程操作方法,其中,包括以下步驟:
A、將主控端與被控端建立WebRTC連接;
B、被控端獲取被控端的屏幕內(nèi)容數(shù)據(jù)并通過所述WebRTC連接發(fā)送至主控端;
C、主控端解析并顯示所述屏幕內(nèi)容數(shù)據(jù);
D、主控端接收遠(yuǎn)程操作命令輸入并通過所述WebRTC連接將所述遠(yuǎn)程操作命令發(fā)送至被控端;
E、被控端接收所述遠(yuǎn)程操作命令,解析并對應(yīng)執(zhí)行。
所述的基于WebRTC的遠(yuǎn)程操作方法,其中,所述步驟A具體包括:
A11、被控端向主控端發(fā)起遠(yuǎn)程操作連接請求,主控端接受所述遠(yuǎn)程操作連接請求,被控端收到所述遠(yuǎn)程操作連接請求接受的反饋;
A12、被控端與主控端通過信令服務(wù)器交換彼此的協(xié)商信息;
A13、被控端與主控端交換彼此的交互式連接建立地址,以建立主控端與被控端的WebRTC連接。
所述的基于WebRTC的遠(yuǎn)程操作方法,其中,所述步驟A具體包括:
A21、主控端向被控端發(fā)起遠(yuǎn)程操作連接請求,被控端接受所述遠(yuǎn)程操作連接請求,主控端收到所述遠(yuǎn)程操作連接請求接受的反饋;
A22、主控端與被控端通過信令服務(wù)器交換彼此的協(xié)商信息;
A23、主控端與被控端交換彼此的交互式連接建立地址,以建立主控端與被控端的WebRTC連接。
所述的基于WebRTC的遠(yuǎn)程操作方法,其中,所述步驟B具體包括:
B1、被控端獲取當(dāng)前的屏幕內(nèi)容數(shù)據(jù),并存儲在緩沖區(qū);對屏幕內(nèi)容數(shù)據(jù)進(jìn)行壓縮轉(zhuǎn)換,并編碼成視頻流數(shù)據(jù),將視頻流數(shù)據(jù)通過WebRTC連接傳輸?shù)街骺囟恕?/p>
所述的基于WebRTC的遠(yuǎn)程操作方法,其中,所述步驟D具體包括:
D1、主控端接收用戶手動輸入的遠(yuǎn)程操作命令或通過瀏覽器語音識別用戶語音輸入的遠(yuǎn)程操作命令,識別為對應(yīng)的被控端操作命令;
D2、將被控端操作命令封裝成文本格式的數(shù)據(jù)并添加被控端操作命令標(biāo)識,通過WebRTC連接傳輸?shù)奖豢囟恕?/p>
所述的基于WebRTC的遠(yuǎn)程操作方法,其中,所述步驟E具體包括:
E1、被控端接收主控端傳來的文本格式的數(shù)據(jù),識別該數(shù)據(jù)中是否有被控端操作命令標(biāo)識,若有,則解析被控端操作命令,并執(zhí)行被控端操作命令。
一種基于WebRTC的遠(yuǎn)程操作系統(tǒng),其中,包括:
連接建立模塊,用于將主控端與被控端建立WebRTC連接;
屏幕內(nèi)容發(fā)送模塊,用于通過被控端獲取被控端的屏幕內(nèi)容數(shù)據(jù)并通過所述WebRTC連接發(fā)送至主控端;
解析及顯示模塊,用于通過主控端解析并顯示所述屏幕內(nèi)容數(shù)據(jù);
操作指令發(fā)送模塊,用于通過主控端接收遠(yuǎn)程操作命令輸入并通過所述WebRTC連接將所述遠(yuǎn)程操作命令發(fā)送至被控端;
操作指令執(zhí)行模塊,用于通過被控端接收所述遠(yuǎn)程操作命令,解析并對應(yīng)執(zhí)行。
所述的基于WebRTC的遠(yuǎn)程操作系統(tǒng),其中,所述屏幕內(nèi)容發(fā)送模塊包括:
屏幕內(nèi)容獲取單元,用于獲取被控端當(dāng)前的屏幕內(nèi)容數(shù)據(jù);
存儲單元,用于將屏幕內(nèi)容數(shù)據(jù)存儲在緩沖區(qū);
編碼單元,用于對屏幕內(nèi)容數(shù)據(jù)進(jìn)行壓縮轉(zhuǎn)換,并編碼成視頻流數(shù)據(jù);
發(fā)送單元,用于將視頻流數(shù)據(jù)通過WebRTC連接傳輸?shù)街骺囟恕?/p>
所述的基于WebRTC的遠(yuǎn)程操作系統(tǒng),其中,所述操作指令發(fā)送模塊包括:
操作命令接收及識別單元,用于通過主控端接收用戶手動輸入的遠(yuǎn)程操作命令或通過瀏覽器語音識別用戶語音輸入的遠(yuǎn)程操作命令,識別為對應(yīng)的被控端操作命令;
操作指令發(fā)送單元,用于將被控端操作命令封裝成文本格式的數(shù)據(jù)并添加被控端操作命令標(biāo)識,通過WebRTC連接傳輸?shù)奖豢囟恕?/p>
所述的基于WebRTC的遠(yuǎn)程操作系統(tǒng),其中,所述操作指令執(zhí)行模塊包括:
操作指令接收單元,用于通過被控端接收主控端傳來的文本格式的數(shù)據(jù);
標(biāo)識識別單元,用于識別該數(shù)據(jù)中是否有被控端操作命令標(biāo)識;
命令執(zhí)行單元,用于當(dāng)數(shù)據(jù)中有被控端操作命令標(biāo)識時(shí),解析被控端操作命令,并執(zhí)行被控端操作命令。
本發(fā)明所提供的一種基于WebRTC的遠(yuǎn)程操作方法及系統(tǒng),有效地解決了現(xiàn)有的終端在遠(yuǎn)程操作時(shí),操作復(fù)雜,效率不高的問題,通過將主控端與被控端建立WebRTC連接;被控端獲取被控端的屏幕內(nèi)容數(shù)據(jù)并通過所述WebRTC連接發(fā)送至主控端;主控端解析并顯示所述屏幕內(nèi)容數(shù)據(jù);主控端接收遠(yuǎn)程操作命令輸入并通過所述WebRTC連接將所述遠(yuǎn)程操作命令發(fā)送至被控端;被控端接收所述遠(yuǎn)程操作命令,解析并對應(yīng)執(zhí)行;給用戶提供一種與平臺無關(guān)的、簡單有效的屏幕共享和遠(yuǎn)程操作方式,建立了主控端與被控端點(diǎn)對點(diǎn)之間穩(wěn)定、高效、高吞吐量、低延時(shí)的數(shù)據(jù)傳輸通道,屏幕傳輸更實(shí)時(shí),給用戶帶來了大大的方便。
附圖說明
圖1為本發(fā)明提供的基于WebRTC的遠(yuǎn)程操作方法較佳實(shí)施例的流程圖。
圖2為本發(fā)明提供的基于WebRTC的遠(yuǎn)程操作系統(tǒng)較佳實(shí)施例的結(jié)構(gòu)框圖。
具體實(shí)施方式
本發(fā)明提供一種基于WebRTC的遠(yuǎn)程操作方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實(shí)施例對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
請參閱圖1,圖1為本發(fā)明提供的基于WebRTC的遠(yuǎn)程操作方法較佳實(shí)施例的流程圖,如圖所示,所述方法包括以下步驟:
步驟S100、將主控端與被控端建立WebRTC連接;
步驟S200、被控端獲取被控端的屏幕內(nèi)容數(shù)據(jù)并通過所述WebRTC連接發(fā)送至主控端;
步驟S300、主控端解析并顯示所述屏幕內(nèi)容數(shù)據(jù);
步驟S400、主控端接收遠(yuǎn)程操作命令輸入并通過所述WebRTC連接將所述遠(yuǎn)程操作命令發(fā)送至被控端;
步驟S500、被控端接收所述遠(yuǎn)程操作命令,解析并對應(yīng)執(zhí)行。
下面結(jié)合具體的實(shí)施例對上述步驟進(jìn)行詳細(xì)的描述。
在步驟S100中,將主控端與被控端建立WebRTC連接。關(guān)于WebRTC技術(shù):WebRTC,名稱源自網(wǎng)頁實(shí)時(shí)通信(Web Real-Time Communication)的縮寫,是一個(gè)支持網(wǎng)頁瀏覽器進(jìn)行實(shí)時(shí)語音對話或視頻對話的技術(shù)。MediaStream (即getUserMedia),用于獲取媒體數(shù)據(jù),例如來自攝像頭和麥克風(fēng)的視頻流和音頻流。RTCPeerConnection,用于peer跟peer之間呼叫和建立連接以便傳輸音視頻數(shù)據(jù)流。RTCDataChannel,用于建立一個(gè)高吞吐量、低延時(shí)的信道,用于傳輸任意數(shù)據(jù)。
具體來說,被控端和主控端均為智能終端,被控端可以主動向主控端發(fā)起遠(yuǎn)程操作連接請求,主控端響應(yīng)該請求。主控端也可以主動向被控端發(fā)起遠(yuǎn)程操作連接請求,被控端響應(yīng)該請求。
進(jìn)一步地,所述步驟S100具體包括:被控端向主控端發(fā)起遠(yuǎn)程操作連接請求,主控端接受所述遠(yuǎn)程操作連接請求,被控端收到所述遠(yuǎn)程操作連接請求接受的反饋;然后,被控端與主控端通過信令服務(wù)器交換彼此的協(xié)商信息;然后,被控端與主控端交換彼此的交互式連接建立地址,以建立主控端與被控端的WebRTC連接。
進(jìn)一步地,所述步驟S100具體包括:主控端向被控端發(fā)起遠(yuǎn)程操作連接請求,被控端接受所述遠(yuǎn)程操作連接請求,主控端收到所述遠(yuǎn)程操作連接請求接受的反饋;然后,主控端與被控端通過信令服務(wù)器交換彼此的協(xié)商信息;然后,主控端與被控端交換彼此的交互式連接建立地址,以建立主控端與被控端的WebRTC連接。
在實(shí)際應(yīng)用時(shí),利用WebRTC技術(shù)建立被控端與主控端之間的點(diǎn)對點(diǎn)連接。此處以被控端主動向主控端發(fā)起遠(yuǎn)程操作連接請求為例進(jìn)行詳細(xì)說明如下:被控端向主控端發(fā)起遠(yuǎn)程操作連接請求,主控端接收到連接請求,響應(yīng)該請求,如果選擇接受,則為這兩個(gè)終端創(chuàng)建WebRTC連接。否則,主控端拒絕連接,則被控端收到拒絕反饋。被控端與主控端經(jīng)由信令服務(wù)器交換彼此的協(xié)商信息(OFFER和ANSWER)。被控端創(chuàng)建OFFER信令發(fā)送給主控端,主控端接收OFFER信令,創(chuàng)建ANSWER信令,并發(fā)送被控端。
要實(shí)現(xiàn) WebRTC會話,就需要在會話建立過程中協(xié)商瀏覽器各自的媒體信息 (包括媒體發(fā)送/接收地址、媒體傳送使用的編解碼方式、協(xié)議等),目前WebRTC中使用會話描述協(xié)議 (Session Description Protocol, SDP)作為媒體信息描述的協(xié)議。在會話建立過程中,利用 SDP的 OFFER/ANSWER機(jī)制進(jìn)行媒體信息的協(xié)商。
然后,被控端與主控端交換彼此的 ICE地址,建立WebRTC連接。關(guān)于ICE,全名叫交互式連接建立(Interactive Connectivity Establishment)或互動式連接建立,一種綜合性的NAT穿越技術(shù),它是一種框架,可以整合各種NAT穿越技術(shù)如STUN、TURN(Traversal Using Relay NAT 中繼NAT實(shí)現(xiàn)的穿透)。ICE會先使用STUN,嘗試建立一個(gè)基于UDP的連接,如果失敗了,就會去建立TCP連接(先嘗試HTTP,然后嘗試HTTPS),如果依舊失敗ICE就會使用一個(gè)中繼的TURN服務(wù)器。
被控端與主控端如果在同一網(wǎng)段的局域網(wǎng)內(nèi),則無需經(jīng)由STUN和TURN服務(wù)器就可以建立直連,但是如果它們分屬于不同的網(wǎng)段,并且還有防火墻設(shè)置,則需要一種防火墻穿透技術(shù)來實(shí)現(xiàn)直連,可利用STUN和TURN的ICE架構(gòu)的服務(wù)器來實(shí)現(xiàn)。STUN服務(wù)器是用來做防火墻穿透(確定雙方的可公開訪問的IP地址和端口),而TURN服務(wù)器主要是用來在連接建立失敗后,可以作為中繼使用。
在步驟S200中,被控端獲取被控端的屏幕內(nèi)容數(shù)據(jù)并通過所述WebRTC連接發(fā)送至主控端。具體來說,被控端獲取被控端當(dāng)前的屏幕內(nèi)容數(shù)據(jù),并存儲在緩沖區(qū);對屏幕內(nèi)容數(shù)據(jù)進(jìn)行壓縮轉(zhuǎn)換,并編碼成視頻流數(shù)據(jù),將視頻流數(shù)據(jù)通過WebRTC連接傳輸?shù)街骺囟?。?shí)際應(yīng)用時(shí),是將視頻流數(shù)據(jù)通過WebRTC建立好的通道(RTC Data Channel)傳輸?shù)街骺囟?。屏幕?nèi)容數(shù)據(jù)即屏幕圖片數(shù)據(jù)。
在步驟S300中,主控端解析并顯示所述屏幕內(nèi)容數(shù)據(jù)。具體來說,主控端接收到被控端的屏幕內(nèi)容數(shù)據(jù),將其解析成對應(yīng)的視頻流播放在主控端的屏幕上,然后用戶可根據(jù)需要遠(yuǎn)程操作被控端。主控端接收到被控端的屏幕內(nèi)容數(shù)據(jù),并解析為對應(yīng)的視頻流在主控端的屏幕上播放,從而方便后續(xù)主控端對被控端進(jìn)行遠(yuǎn)程操作。
在步驟S400中,主控端接收遠(yuǎn)程操作命令輸入并通過所述WebRTC連接將所述遠(yuǎn)程操作命令發(fā)送至被控端。具體來說,用戶在主控端上遠(yuǎn)程控制被控端,進(jìn)行相應(yīng)的遠(yuǎn)程操作。主控端接收用戶輸入的遠(yuǎn)程操作指令,再發(fā)送給被控端。在實(shí)際應(yīng)用時(shí),主控端可以接收用戶發(fā)出的語音命令或手動輸入的命令。
進(jìn)一步地,所述步驟S400具體包括:S410、主控端接收用戶手動輸入的遠(yuǎn)程操作命令或通過瀏覽器語音識別用戶語音輸入的遠(yuǎn)程操作命令,識別為對應(yīng)的被控端操作命令;S420、將被控端操作命令封裝成文本格式的數(shù)據(jù)并添加被控端操作命令標(biāo)識,通過WebRTC連接傳輸?shù)奖豢囟恕?/p>
也就是說,主控端可以選擇開啟語音命令捕獲模式,用戶發(fā)出語音命令,通過主控端的瀏覽器的web speech API的SpeechRecognition對象獲取語音數(shù)據(jù)并將其識別為對應(yīng)的文字信息,程序解析這些文字信息,識別為對應(yīng)的被控端操作命令。然后將被控端操作命令封裝成文本(譬如JSON格式,JavaScript Object Notation,一種輕量級的數(shù)據(jù)交換格式)格式的數(shù)據(jù)(該數(shù)據(jù)中有標(biāo)識本次傳輸數(shù)據(jù)為被控端操作命令的信息),將被控端操作命令數(shù)據(jù)通過WebRTC創(chuàng)建好的連接通道(RTCDataChannel)傳輸?shù)奖豢囟?。其中,Web Speech API 包括三個(gè)主要功能區(qū)域:通過 SpeechRecognition 對象實(shí)現(xiàn)語音識別、通過 SpeechSynthesis 對象實(shí)現(xiàn)文本轉(zhuǎn)語音合成和通過 SpeechGrammar 對象實(shí)現(xiàn)自定義語法創(chuàng)建。
在步驟S500中,被控端接收所述遠(yuǎn)程操作命令,解析并對應(yīng)執(zhí)行。具體來說,被控端接收主控端傳來的文本格式的數(shù)據(jù),譬如JSON格式,識別該數(shù)據(jù)中是否有被控端操作命令標(biāo)識,若有,則解析被控端操作命令,并執(zhí)行被控端操作命令。在實(shí)際應(yīng)用時(shí),被控端的WebRTC連接通道接收到主控端傳來的數(shù)據(jù),識別該數(shù)據(jù)是否為操作命令,如果是,則解析操作命令,調(diào)用命令執(zhí)行單元,執(zhí)行相應(yīng)的操作。
本發(fā)明提供的基于WebRTC的遠(yuǎn)程操作方法,利用WebRTC技術(shù),以點(diǎn)對點(diǎn)的方式連接主控端和被控端的設(shè)備,屏幕內(nèi)容以及遠(yuǎn)程操作命令均可以直接通過基于WebRTC技術(shù)創(chuàng)建的peerConnection直連來傳輸。此方法基于已實(shí)現(xiàn)WebRTC核心技術(shù)的瀏覽器,目前只要是智能設(shè)備一般都帶有瀏覽器,故不存在跨越平臺的問題。遠(yuǎn)程操作可以直接由用戶通過語音發(fā)出命令,即主控端用戶發(fā)出語音命令,經(jīng)過瀏覽器的語音識別技術(shù)(SpeechRecognition)轉(zhuǎn)化為對應(yīng)的文字命令,解析文字命令的語義,得到對應(yīng)的操作命令,通過建立好的WebRTC通道傳輸該操作命令,被控端收到操作命令后,執(zhí)行對應(yīng)的操作。
本發(fā)明是一種基于WebRTC的遠(yuǎn)程操作方法,給用戶提供一種與平臺無關(guān)的、簡單有效的屏幕共享和遠(yuǎn)程操作方式。主控端或被控端發(fā)起遠(yuǎn)程操作連接請求,對方接收到連接請求的時(shí)候,響應(yīng)請求,根據(jù)請求標(biāo)識識別其為主控端還是被控端,通過WebRTC技術(shù)為用戶之間建立點(diǎn)對點(diǎn)的連接,連接建立好以后,即可以通過該通道傳輸被控端的屏幕數(shù)據(jù)到主控端,主控端可以通過麥克風(fēng)輸入遠(yuǎn)程操作的語音命令,利用語音識別技術(shù)將語音數(shù)據(jù)轉(zhuǎn)化為文字?jǐn)?shù)據(jù),解析文字?jǐn)?shù)據(jù)獲得對應(yīng)的機(jī)器操作命令,利用建立好的WebRTC通道傳輸操作命令給被控端,被控端接收到消息識別為操作命令,執(zhí)行對應(yīng)的遠(yuǎn)程操作命令。
基于上述的遠(yuǎn)程操作方法,本發(fā)明還提供了一種基于WebRTC的遠(yuǎn)程操作系統(tǒng),如圖2所示,包括:
連接建立模塊10,用于將主控端與被控端建立WebRTC連接;具體如步驟S100所述;
屏幕內(nèi)容發(fā)送模塊20,用于通過被控端獲取被控端的屏幕內(nèi)容數(shù)據(jù)并通過所述WebRTC連接發(fā)送至主控端;具體如步驟S200所述;
解析及顯示模塊30,用于通過主控端解析并顯示所述屏幕內(nèi)容數(shù)據(jù);具體如步驟S300所述;
操作指令發(fā)送模塊40,用于通過主控端接收遠(yuǎn)程操作命令輸入并通過所述WebRTC連接將所述遠(yuǎn)程操作命令發(fā)送至被控端;具體如步驟S400所述;
操作指令執(zhí)行模塊50,用于通過被控端接收所述遠(yuǎn)程操作命令,解析并對應(yīng)執(zhí)行;具體如步驟S500所述。
進(jìn)一步地,所述屏幕內(nèi)容發(fā)送模塊20包括:
屏幕內(nèi)容獲取單元,用于獲取被控端當(dāng)前的屏幕內(nèi)容數(shù)據(jù);
存儲單元,用于將屏幕內(nèi)容數(shù)據(jù)存儲在緩沖區(qū);
編碼單元,用于對屏幕內(nèi)容數(shù)據(jù)進(jìn)行壓縮轉(zhuǎn)換,并編碼成視頻流數(shù)據(jù);
發(fā)送單元,用于將視頻流數(shù)據(jù)通過WebRTC連接傳輸?shù)街骺囟恕?/p>
進(jìn)一步地,所述操作指令發(fā)送模塊40包括:
操作命令接收及識別單元,用于通過主控端接收用戶手動輸入的遠(yuǎn)程操作命令或通過瀏覽器語音識別用戶語音輸入的遠(yuǎn)程操作命令,識別為對應(yīng)的被控端操作命令;
操作指令發(fā)送單元,用于將被控端操作命令封裝成文本格式的數(shù)據(jù)并添加被控端操作命令標(biāo)識,通過WebRTC連接傳輸?shù)奖豢囟恕?/p>
進(jìn)一步地,所述操作指令執(zhí)行模塊50包括:
操作指令接收單元,用于通過被控端接收主控端傳來的文本格式的數(shù)據(jù);
標(biāo)識識別單元,用于識別該數(shù)據(jù)中是否有被控端操作命令標(biāo)識;
命令執(zhí)行單元,用于當(dāng)數(shù)據(jù)中有被控端操作命令標(biāo)識時(shí),解析被控端操作命令,并執(zhí)行被控端操作命令。
所述被控端和主控端為智能終端,即智能設(shè)備。
綜上所述,本發(fā)明提供的一種基于WebRTC的遠(yuǎn)程操作方法及系統(tǒng),通過將主控端與被控端建立WebRTC連接;被控端獲取被控端的屏幕內(nèi)容數(shù)據(jù)并通過所述WebRTC連接發(fā)送至主控端;主控端解析并顯示所述屏幕內(nèi)容數(shù)據(jù);主控端接收遠(yuǎn)程操作命令輸入并通過所述WebRTC連接將所述遠(yuǎn)程操作命令發(fā)送至被控端;被控端接收所述遠(yuǎn)程操作命令,解析并對應(yīng)執(zhí)行;給用戶提供一種與平臺無關(guān)的、簡單有效的屏幕共享和遠(yuǎn)程操作方式,建立了主控端與被控端點(diǎn)對點(diǎn)之間穩(wěn)定、高效、高吞吐量、低延時(shí)的數(shù)據(jù)傳輸通道,屏幕傳輸更實(shí)時(shí),給用戶帶來了大大的方便。
應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。