一種遠(yuǎn)程通訊的實(shí)現(xiàn)方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種遠(yuǎn)程通訊的實(shí)現(xiàn)方法、裝置和系統(tǒng)。所述方法包括:SIP服務(wù)器發(fā)起通訊邀請(qǐng);多個(gè)客戶終端接受所述通訊邀請(qǐng),建立遠(yuǎn)程通訊組;所述SIP服務(wù)器將所述多個(gè)客戶終端的語(yǔ)音信息進(jìn)行混音,和/或?qū)⑺龆鄠€(gè)客戶終端的視頻信息進(jìn)行合成,發(fā)送給每一所述客戶終端。本發(fā)明實(shí)施例的遠(yuǎn)程通訊的實(shí)現(xiàn)方法、裝置及系統(tǒng),通過(guò)現(xiàn)有的計(jì)算機(jī)網(wǎng)絡(luò),充分利用普通計(jì)算機(jī)的CPU和圖形處理能力,以及Windows系統(tǒng)的強(qiáng)大功能,避免使用專用設(shè)備,保證系統(tǒng)靈活性和可擴(kuò)展性的同時(shí),盡可能的降低了硬件成本和系統(tǒng)的開發(fā)、運(yùn)行、維護(hù)成本。
【專利說(shuō)明】一種遠(yuǎn)程通訊的實(shí)現(xiàn)方法、裝置及系統(tǒng)
[0001]
技術(shù)領(lǐng)域
[0002]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種遠(yuǎn)程協(xié)助的實(shí)現(xiàn)領(lǐng)域,具體的講是一種遠(yuǎn)程通訊的實(shí)現(xiàn)方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0003]傳統(tǒng)的遠(yuǎn)程通訊方法,例如視頻會(huì)議模式多采用獨(dú)立的網(wǎng)絡(luò)、專用的會(huì)議終端、會(huì)議服務(wù)器和會(huì)議控制設(shè)備,其建設(shè)維護(hù)的成本高,周期長(zhǎng),會(huì)議模式較單一,設(shè)備利用率不高,已不再是如今視頻會(huì)議模式的主流。
[0004]互聯(lián)網(wǎng)模式的遠(yuǎn)程會(huì)議利用了現(xiàn)有的網(wǎng)絡(luò)和PC,通過(guò)部署會(huì)議服務(wù)器/視頻服務(wù)器,實(shí)現(xiàn)了基于PC的會(huì)議/協(xié)助功能。對(duì)比傳統(tǒng)的視頻會(huì)議模式,充分利用了現(xiàn)有設(shè)備和網(wǎng)絡(luò),大幅度降低了建設(shè)維護(hù)成本,并大幅度提升了業(yè)務(wù)的靈活性。但是,當(dāng)前的基于互聯(lián)網(wǎng)模式的會(huì)議系統(tǒng),更多基于PC和互聯(lián)網(wǎng)進(jìn)行設(shè)計(jì),和傳統(tǒng)通信網(wǎng)絡(luò)融合程度差,產(chǎn)生了明顯的分隔;并且,互聯(lián)網(wǎng)模式的視頻會(huì)議系統(tǒng)更注重會(huì)議系統(tǒng)的功能完整性和一致性,一定程度上模仿傳統(tǒng)會(huì)議模式,通常不支持傳統(tǒng)模擬電話等電信網(wǎng)通信設(shè)備的接入,也不支持手機(jī)、攝像頭等其他設(shè)備的接入。并且,在進(jìn)行小型會(huì)議時(shí),成本還是比較高。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提出一種遠(yuǎn)程通訊的實(shí)現(xiàn)方法、裝置及系統(tǒng),以實(shí)現(xiàn)低成本的會(huì)議溝通和簡(jiǎn)易的遠(yuǎn)程協(xié)助。
[0006]為了達(dá)到上述目的,本發(fā)明實(shí)施例提供一種遠(yuǎn)程通訊的實(shí)現(xiàn)方法,包括:SIP服務(wù)器發(fā)起通訊邀請(qǐng);多個(gè)客戶終端接受所述通訊邀請(qǐng),建立遠(yuǎn)程通訊組;所述SIP服務(wù)器將所述多個(gè)客戶終端的語(yǔ)音信息進(jìn)行混音,和/或?qū)⑺龆鄠€(gè)客戶終端的視頻信息進(jìn)行合成,發(fā)送給每一所述客戶終端。
[0007]為了達(dá)到上述目的,本發(fā)明實(shí)施例還提供一種遠(yuǎn)程通訊的實(shí)現(xiàn)裝置,包括:邀請(qǐng)發(fā)起模塊,用于向多個(gè)客戶終端發(fā)起通訊邀請(qǐng);信息處理模塊,用于將所述多個(gè)客戶終端的語(yǔ)音信息進(jìn)行混音,和/或?qū)⑺龆鄠€(gè)客戶終端的視頻信息進(jìn)行合成;信息發(fā)送模塊,用于將混音后的語(yǔ)音信息以及合成后的視頻信息發(fā)送給每一所述客戶終端。
[0008]為了達(dá)到上述目的,本發(fā)明實(shí)施例還提供一種遠(yuǎn)程通訊的實(shí)現(xiàn)系統(tǒng),包括SIP服務(wù)器;所述SIP服務(wù)器包括上述的遠(yuǎn)程通訊的實(shí)現(xiàn)裝置。
[0009]本發(fā)明實(shí)施例的遠(yuǎn)程通訊的實(shí)現(xiàn)方法、裝置及系統(tǒng),通過(guò)現(xiàn)有的計(jì)算機(jī)網(wǎng)絡(luò),充分利用普通計(jì)算機(jī)的CPU和圖形處理能力,以及Windows系統(tǒng)的強(qiáng)大功能,避免使用專用設(shè)備,保證系統(tǒng)靈活性和可擴(kuò)展性的同時(shí),盡可能的降低了硬件成本和系統(tǒng)的開發(fā)、運(yùn)行、維護(hù)成本。
【附圖說(shuō)明】
[0010]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0011]圖1為本發(fā)明實(shí)施例的實(shí)現(xiàn)遠(yuǎn)程通訊的組網(wǎng)示意圖;
圖2為本發(fā)明實(shí)施例的遠(yuǎn)程通訊的實(shí)現(xiàn)方法的處理流程圖;
圖3為本發(fā)明實(shí)施例的遠(yuǎn)程通訊的實(shí)現(xiàn)方法的具體處理流程示意圖;
圖4為本發(fā)明實(shí)施例的語(yǔ)音信息混音的處理流程示意圖;
圖5為本發(fā)明實(shí)施例的視頻信息合成的處理流程示意圖;
圖6為本發(fā)明實(shí)施例的遠(yuǎn)程通訊的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0012]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0013]SIP協(xié)議是一個(gè)應(yīng)用層的控制協(xié)議,用于控制會(huì)話的創(chuàng)建、修改和終結(jié)。會(huì)話可以是兩方或多方,SIP并不關(guān)心會(huì)話的具體內(nèi)容和媒體類型,其采用的是IETF廣泛采用的客戶端/服務(wù)器模式。與HTTP類似,SIP協(xié)議采用消息進(jìn)行網(wǎng)絡(luò)之間的通信。RFC3261規(guī)定的基本的SIP消息只有6個(gè),分別是INVITE\BYE\ACK\CANCLE\OPT1N\REGISTER消息。在遵循一定原則的基礎(chǔ)上,可以對(duì)SIP消息進(jìn)行擴(kuò)展。SIP具有很強(qiáng)的包容性,它既可以用來(lái)建立各種會(huì)話,也可以被用來(lái)傳送即時(shí)消息和文件。SIP在靈活、方便的提供業(yè)務(wù)方面具有多方面的優(yōu)點(diǎn)。
[0014]基于上述SIP協(xié)議原理,本發(fā)明基于SIP協(xié)議,提出一種簡(jiǎn)易的遠(yuǎn)程通訊方法,SP:任意一臺(tái)SIP服務(wù)器端發(fā)起呼叫,連接多個(gè)終端,將語(yǔ)音進(jìn)行混音,視頻進(jìn)行拼接,將處理后的語(yǔ)音和視頻發(fā)送到客戶終端。這種建議的遠(yuǎn)程通訊方法充分利用了當(dāng)前計(jì)算機(jī)的CPU和GPU的資源,以代替會(huì)議/視頻服務(wù)器的所需的計(jì)算能力,在小型視頻會(huì)議模式(一般不超過(guò)8方)的應(yīng)用中,省略掉獨(dú)立的會(huì)議/視頻服務(wù)器之類的硬件資源,實(shí)現(xiàn)成本的壓縮。
[0015]圖1為本發(fā)明實(shí)施例的實(shí)現(xiàn)遠(yuǎn)程通訊的組網(wǎng)示意圖。如圖1所示,只需要將PC終端或者手機(jī)終端連接至SIP服務(wù)器即可。其中,PC終端通過(guò)有線或無(wú)線的方式與SIP服務(wù)器連接,以充當(dāng)遠(yuǎn)程客戶端;手機(jī)終端通過(guò)WIFI或4G網(wǎng)絡(luò)與SIP服務(wù)器連接,以充當(dāng)遠(yuǎn)程客戶端;SIP服務(wù)器可部署到任意一臺(tái)計(jì)算機(jī)中,提供SIP呼叫的接續(xù)。
[0016]可選的,SIP攝像頭也可連接至SIP服務(wù)器,實(shí)現(xiàn)攝像功能。攝像后的視頻資源也可以通過(guò)SIP服務(wù)器發(fā)送給PC終端或手機(jī)終端。
[0017]可選的,一些網(wǎng)關(guān)設(shè)備也可以連接至SIP服務(wù)器,例如中繼網(wǎng)關(guān)和模擬電話網(wǎng)關(guān),以分別可以接入電信網(wǎng)絡(luò)和模擬電話。
[0018]圖2為本發(fā)明實(shí)施例的遠(yuǎn)程通訊的實(shí)現(xiàn)方法的處理流程圖。如圖2所示,包括:步驟SlOl,SIP服務(wù)器發(fā)起通訊邀請(qǐng);步驟S102,多個(gè)客戶終端接受所述通訊邀請(qǐng),建立遠(yuǎn)程通訊組;步驟S103,所述SIP服務(wù)器將所述多個(gè)客戶終端的語(yǔ)音信息進(jìn)行混音,和/或?qū)⑺龆鄠€(gè)客戶終端的視頻信息進(jìn)行合成,發(fā)送給每一所述客戶終端。
[0019]在本實(shí)施例的步驟SlOl中,SIP服務(wù)器向所述客戶終端發(fā)起語(yǔ)音通訊邀請(qǐng)或視頻通訊邀請(qǐng)。本實(shí)施例中,客戶終端包括電腦終端和手機(jī)終端。也就是說(shuō),為了完成遠(yuǎn)程通訊,電腦終端或者手機(jī)終端上應(yīng)該是安裝了支持SIP協(xié)議的軟件,例如在電腦終端上安裝支持SIP協(xié)議的應(yīng)用程序,在手機(jī)終端上安裝實(shí)現(xiàn)SIP協(xié)議的APP。并且,SIP服務(wù)器向客戶終端發(fā)送INVI TE消息,請(qǐng)求客戶終端加入通訊邀請(qǐng),INVI TE消息可以帶有特定的頭域,例如BY-1nfo: conf type=f ree-conf,表示召開的是自由會(huì)議。
[0020]在本實(shí)施例的步驟S102中,多個(gè)客戶終端接受所述通訊邀請(qǐng),建立遠(yuǎn)程通訊組,具體實(shí)現(xiàn)為:當(dāng)客戶終端接收到INVITE消息后,如果接受,則返回OK應(yīng)答消息,此時(shí)SIP服務(wù)器收到客戶終端的接受消息后,貝lJ發(fā)出INFO-CreateConf /JoinConf消息,請(qǐng)求建立遠(yuǎn)程通訊組并將接受邀請(qǐng)的客戶終端加入到組中。
[0021]在本實(shí)施例的步驟S103中,所述SIP服務(wù)器將所述多個(gè)客戶終端的語(yǔ)音信息進(jìn)行混音,分為以下兩種情形:當(dāng)所述客戶終端不超過(guò)4個(gè)時(shí),所述SIP服務(wù)器采用嵌位算法進(jìn)行混音;當(dāng)所述客戶終端超過(guò)4個(gè)時(shí),所述SIP服務(wù)器采用自適應(yīng)加權(quán)算法進(jìn)行混音。每個(gè)客戶終端自身可執(zhí)行回聲消除,SIP服務(wù)器端可執(zhí)行混音。另外,語(yǔ)音的平滑(防抖動(dòng))對(duì)混音輸出音質(zhì)的影響很大,可通過(guò)緩沖緩解。
[0022]在本實(shí)施例的步驟S103中,所述SIP服務(wù)器所述多個(gè)客戶終端的視頻信息進(jìn)行合成,主要采用的是H264視頻編碼技術(shù),并采用Windows自帶的DirecxShow實(shí)現(xiàn)所述視頻畫面的縮放和拼接。
[0023]其具體實(shí)現(xiàn)為:首先對(duì)視頻信息進(jìn)行編碼處理,本發(fā)明采用H264編碼。H264為當(dāng)前主流的視頻編碼,其編碼所需的運(yùn)算量遠(yuǎn)大于解碼所需的運(yùn)算量,傳統(tǒng)上用專用硬件進(jìn)行實(shí)時(shí)編碼,或使用軟件進(jìn)行非實(shí)時(shí)編碼,而使用CPU進(jìn)行軟件解碼。但是,隨著CPU處理能力的不斷提升,通用CPU也具有足夠的編解碼運(yùn)算處理能力。當(dāng)前的Intel Core系列CPU每個(gè)核都可以解碼I路1080P的264視頻,較強(qiáng)的CPU可支持I路720P或1080P的實(shí)時(shí)編碼。當(dāng)前有一些第三方的庫(kù),如intel,利用顯卡的硬件資源,實(shí)現(xiàn)H264的編解碼。當(dāng)顯卡不支持時(shí),使用CPU執(zhí)行運(yùn)算;顯卡支持時(shí),則主要利用顯卡資源,CPU占用極低。
[0024]當(dāng)前可利用Intel media SDK實(shí)現(xiàn)H264編解碼,當(dāng)CPU集成顯卡支持時(shí),可支持I路1080P編碼和8路1080P解碼;不支持時(shí),根據(jù)CPU處理能力,支持I路720P/1080P編碼和4?8路720P/1080P解碼。為支持低分辨率設(shè)備,在高清編碼(720P/1080P)的同時(shí),編碼I路QVGA(320 * 240)的子碼流,按需要推送。
[0025]計(jì)算機(jī)通常使用windows系統(tǒng),windows都自帶不同版本的DirectX,DirectShow則為DirectX的一個(gè)組成部分。利用現(xiàn)有的DirectShow,可高效的實(shí)現(xiàn)音視頻的采集和播放/顯示。并且,DirectShow可利用顯卡資源,高效實(shí)現(xiàn)視頻畫面的縮放和拼接,且不依賴于特定的CPU/顯卡,極大的節(jié)省了 CPU運(yùn)算資源。
[0026]DirectShow為計(jì)算機(jī)系統(tǒng)windows自帶的開發(fā)包,本發(fā)明正是依靠現(xiàn)有的這種資源,實(shí)現(xiàn)視頻信息的采集、處理和播放。其處理過(guò)程包括視頻畫面的縮放和拼接。在本發(fā)明實(shí)施例中,根據(jù)客戶終端的不同,進(jìn)行視頻縮放和拼接的方式不同。例如,如果為計(jì)算機(jī)終端,可輸出2*3布局的視頻畫面,如果是手機(jī)終端,可輸出3*2布局的視頻畫面。將選定的視頻顯示在輸出屏幕的任意位置上,實(shí)現(xiàn)多路畫面的任意組合疊加或畫中畫功能。
[0027]在本發(fā)明實(shí)施例中,采用屏幕/窗口共享作為DirecxShow進(jìn)行視頻畫面的縮放和拼接的數(shù)據(jù)源,也就是說(shuō),客戶終端傳送的視頻信息為屏幕/窗口共享的截圖。而傳送截圖,可使用視頻方式或圖片方式。
[0028]視頻方式,即將截圖當(dāng)做視頻源,通過(guò)H264編碼壓縮,通過(guò)視頻通道投遞。這種方法利用現(xiàn)有資源和通道,普通視頻終端上可直接觀看;但是由于占用視頻通道,畫質(zhì)有損失,且圖像尺寸可能過(guò)大。
[0029]圖片方式,通常使用JPG壓縮。但JPG比較適合照片或圖像的壓縮,對(duì)文字壓縮時(shí),文字邊緣會(huì)有的鋸齒,圖文混排時(shí)尤為明顯。另一種方式為PNG無(wú)損壓縮,是當(dāng)前網(wǎng)絡(luò)主流圖片格式,為屏幕/窗口共享的畫質(zhì),故本發(fā)明方案中優(yōu)先采用PNG為截圖的壓縮方式。
[0030]進(jìn)一步地,對(duì)視頻信息和音頻信息進(jìn)行網(wǎng)絡(luò)發(fā)送,可以采用UDP,也可采用TCP協(xié)議傳輸,而為了保證可靠性和屏幕/窗口共享的畫質(zhì),且保證可靠性,本發(fā)明方案優(yōu)先選用TCP傳輸協(xié)議。
[0031]圖3為本發(fā)明實(shí)施例的遠(yuǎn)程通訊的實(shí)現(xiàn)方法的具體處理流程示意圖。如圖3所示,該具體實(shí)施例包括:
步驟SI,SIP服務(wù)器想客戶終端1、客戶終端2……客戶終端N發(fā)起遠(yuǎn)程邀請(qǐng)。
[0032]步驟S2,客戶終端1、客戶終端2……客戶終端N接受邀請(qǐng),返回OK應(yīng)答。
[0033]步驟S3,SIP服務(wù)器接受到每一個(gè)客戶終端的OK應(yīng)答,即建立遠(yuǎn)程通訊組,并將接受邀請(qǐng)的客戶終端加入到通訊組中。在該步驟中,如果某一客戶終端沒(méi)有發(fā)回OK應(yīng)答,SIP服務(wù)器則默認(rèn)該客戶終端不接受遠(yuǎn)程邀請(qǐng),當(dāng)其建立遠(yuǎn)程通訊組時(shí),不會(huì)將該客戶終端加入其中。
[0034]步驟S4,SIP服務(wù)器將采集到的本地語(yǔ)音信息、客戶終端I的語(yǔ)音信息1、客戶終端2的語(yǔ)音信息2……客戶終端N的語(yǔ)音信息N進(jìn)行混音。
[0035 ]步驟S5,SIP服務(wù)器將采集到的本地視頻信息、客戶終端I的視頻信息1、客戶終端2的視頻信息2……客戶終端N的視頻信息N進(jìn)行合成。
[0036]步驟S6,SIP服務(wù)器將混音后的語(yǔ)音信息和合成后的視頻信息發(fā)送給每一個(gè)客戶終端。
[0037]從上述實(shí)施例可以看出,步驟S1、S3_S6全是SIP服務(wù)器本身所完成,也就是說(shuō),本發(fā)明通過(guò)任意一臺(tái)部署了 SIP協(xié)議的計(jì)算機(jī),并結(jié)合計(jì)算機(jī)現(xiàn)有的CPU和圖像處理工具,SP可實(shí)現(xiàn)簡(jiǎn)易的遠(yuǎn)程通訊,例如可實(shí)現(xiàn)簡(jiǎn)易的小型視頻會(huì)議。
[0038]具體的,在上述實(shí)施例的步驟S4中,對(duì)多個(gè)語(yǔ)音信息進(jìn)行混音的處理過(guò)程包括語(yǔ)音數(shù)據(jù)的緩沖、語(yǔ)音數(shù)據(jù)的混音、語(yǔ)音數(shù)據(jù)的收斂以及按通道執(zhí)行語(yǔ)音消除等各方面。如圖4所示,為本發(fā)明實(shí)施例的語(yǔ)音信息混音的處理流程示意圖。
[0039]步驟S41,緩沖語(yǔ)音數(shù)據(jù)。此步驟中,當(dāng)采集到本地語(yǔ)音信息、客戶終端I的語(yǔ)音信息1、客戶終端2的語(yǔ)音信息2……客戶終端N的語(yǔ)音信息N后,首先執(zhí)行緩沖操作,進(jìn)行語(yǔ)音的平滑,以防止語(yǔ)音的抖動(dòng)影響到混音的輸出音質(zhì)。
[0040]步驟S42,定時(shí)執(zhí)行混音。此步驟中,如果有新的客戶終端加入到遠(yuǎn)程通訊組中,SP開通了一條新通道時(shí),自動(dòng)將該通道加入混音。
[0041]步驟S43,按通道執(zhí)行語(yǔ)音消除和收斂。此步驟中,按通道執(zhí)行語(yǔ)音消除是指返回到每一個(gè)客戶終端的混音后的語(yǔ)音信息中可不比包括自身的語(yǔ)音信息。例如,來(lái)自客戶終端I的語(yǔ)音信息,通過(guò)語(yǔ)音通道I發(fā)送至SIP服務(wù)器端,則在執(zhí)行混音后的語(yǔ)音信息發(fā)送的時(shí)候,如果是通過(guò)語(yǔ)音通道I發(fā)送至客戶終端I,則可以消除混音后的語(yǔ)音信息中的語(yǔ)音信息
1
[0042]在本實(shí)施例中,語(yǔ)音信息進(jìn)行混音的部分實(shí)現(xiàn)代碼示例如下:
Il混音輸入,新通道時(shí),自動(dòng)將該通道加入混音
int _Aud1Mix::putAud1(size_t channel, void *data, size_t size)
{
assert(channel < m_count); assert(data); assert(size);
if ( (channel >= m_count)
I (NULL == data) I (size <= 0))
{
return -1;
}
Il丟棄被屏蔽發(fā)言的語(yǔ)音數(shù)據(jù)
if (ar_spk_forbit == (m_right[channeI] & ar_spk_mask))
{
return 0;
}
if (m_start[channeI] < aud1_start)
{
m_start[channeI] += size;
}
return m_in[channeI]->put(data, size);
}
Il準(zhǔn)備語(yǔ)音數(shù)據(jù)
void _Aud1Mix::prsAud1()
{
for (size_t i=0; i〈m_count; i++)
{
m_size[i] = 0;m_level[i] = 0;
if (ar_spk_forbit == (m_right[i] & ar_spk_mask))
{
continue; }
if (m_start[i] < aud1_start)
{
continue;
}
size_t ret = m_in[i]->get(m_data[i], frame_size);if (ret < frame_size)
{
m_start[i] = 0; continue;
}
m_level[i] = amplitude(m_data[i], frame_cap);
}
for (size_t i=0; i<first_select; ++i)
{
size_t index = 0;
for (size_t j=l; j〈m_count; j++)
{
if (m_level[index] < m_level[j])
{
index = j;
}
}
if (m_level[index] <= 0)
{
break;
}
m_level[index] = 0;m_size[index] = frame_size;
}
}
具體的,在上述實(shí)施例的步驟S5中,將采集到的本地視頻信息、客戶終端I的視頻信息1、客戶終端2的視頻信息2……客戶終端N的視頻信息N進(jìn)行合成的具體實(shí)現(xiàn)步驟如圖5所不O
[0043]S51,繪制本地視頻資源。在本步驟中,通過(guò)屏幕/窗口共享的方法進(jìn)行截圖作為本地視頻資源,再通過(guò)H264編碼壓縮,實(shí)現(xiàn)對(duì)本地視頻信息的繪制。
[0044]S52,繪制傳送的客戶終端的視頻資源。與對(duì)本地視頻信息的處理類似,通過(guò)屏幕/窗口共享的方法進(jìn)行截圖作為客戶終端1-N的視頻資源,再通過(guò)H264編碼壓縮,實(shí)現(xiàn)對(duì)客戶終端的視頻信息的繪制。
[0045]S53,對(duì)視頻截圖進(jìn)行合成并進(jìn)行視頻編碼。在獲取到客戶終端的視頻資源后,要利用現(xiàn)有的DirectShow實(shí)現(xiàn)視頻畫面的縮放和拼接,將選定的任意視頻畫面顯示在輸出屏幕的任意位置上,實(shí)現(xiàn)多路畫面的任意組合疊加或畫中畫功能。
[0046]在本發(fā)明實(shí)施例中,進(jìn)行視頻的屏幕截圖和傳送的部分代碼如下: void TfmMain::syncBrowser()
{
m_bmp->Width = cwb->ffidth; m_bmp_>Height = cwb->Height; if (m_isDx)
{
BitBlt(m_bmp->Canvas->Handle, 0, 0, m_bmp->Width, m_bmp->Height,GetffindowDC(cwb->Handle), 0,0,SRCCOPY); // 截屏
}
else
{
Printffindow(cwb->Handle, m_bmp->Canvas->Handle,0); // 截窗
}
m_png->As s i gn(m_bmp);m_stream->Clear();m_png->SaveToStream(m_stream);
Il hash值未改變時(shí),假定圖片未發(fā)生改變,不重復(fù)傳送 size_t value = hash(m_stream->Memory, m_stream->Size); if (value == m_hashValue)
{
return;
}
m_hashValue = value;
m_syncServer->sendData(m_stream->Memory, m_stream_>Size);
}
在本發(fā)明實(shí)施例中,利用調(diào)用計(jì)算機(jī)自有的DirecxShow進(jìn)行視頻畫面的縮放和拼接,其接口程序示例如下:
Il顯示參數(shù) struct DispParam
{
size_t m_x; //左上角橫坐標(biāo) size_t m_y; //左上角縱坐標(biāo) size_t m_w; //圖像寬度 size_t m_h; //圖像高度
}; //視頻參數(shù) struct VideoParam
{
size—t m—width; // 圖像寬度size—t m—height; // 圖像高度
};
//輸入?yún)?shù) struct InParam
{
DispParam m—disp;
VideoParam m—video;
};
class VideoDisp
{
typedef vector <InParam 氺>VecInParam;
typedef vector <LPDIRECTDRAffSURFACE) VecSurface;public:
VideoDisp(HWND hwnd);
^VideoDispO ;public:
void outParam(DispParam ¶m);
bool setOutParam (const DispParam ¶m); size_t inCount();
void setlnCount(size_t count);
bool inParam(size—t channel,DispParam ¶m);
bool setlnParam(size—t channel, const DispParam ¶m);
public:
void clrlmage(size—t channel); // 清除圖像
void putlmage(size—t channel, void *yuv420,size_t width,
size—t height); // 輸出圖像
size_t getlmage(void *yuv420,size_t size, size_t &width,
size—t &height); // 獲取圖像
void updateDisplay ();// 更親jf顯示
private:
bool initDD();// 初始化 DirectDraw
void freeDD();// 釋放 DirectDraw
bool initOutImage ();//初始化輸出圖像
void freeOutImage ();// 釋放輸出圖像
bool initlnlmage (size—t channel); // 初始化輸入圖像void freelnlmage(size—t channel); // 釋放輸入圖像
void initlnParam(size—t count); // 初始化輸入?yún)?shù)
void freelnParam(); // 釋放輸入?yún)?shù)
bool putYuv(LPDIRECTDRAffSURFACE IpSurface, void *yuv420,
size_t width, size_t height);// 輸出YUV
bool getYuv(LPDIRECTDRAffSURFACE IpSurface, void *yuv420,
size_t width, size_t height);// 獲取YUV
bool composelmage(size_t channel); // 合成圖像 private:
HWNDm—hwnd; // 窗體句柄
DispParamm—outParam; // 輸出參數(shù)
VecInParamm—inParam; // 輸入?yún)?shù)
LPDIRECTDRAffm—IpDD; // DirectDraw 對(duì)象指針
LPDIRECTDRAffSURFACEm—IpPrimary; // DirectDraw 主表面指針
LPDIRECTDRAffSURFACEm—IpBackScr; // DirectDraw 離屏表面指針
VecSurfacem—IpSurface; // DirectDraw 通道表面指針
};
本發(fā)明實(shí)施例中,進(jìn)行視頻畫面合成的部分代碼如下:
//視頻窗口 typedef struct Vdoffnd
{
size_t m—channel;// 通道號(hào)
size_t m—left;// 左邊距
size_t m—top;// 頂邊距
size_t m—width;// 寬度
size_t m—height;// 高度 } Vdoffnd;
//視頻合成 typedef struct VdoCmp {
size_t m—count;// 通道數(shù)量 Vdoffnd m_wnd[mvc_sub]; // 視頻窗口 } VdoCmp;
int video_set_layout(const VdoCmp *param);// 設(shè)置拼接模式
通過(guò)以上實(shí)施例可知,本發(fā)明在進(jìn)行遠(yuǎn)程通訊時(shí),只需要通過(guò)現(xiàn)有的計(jì)算機(jī)網(wǎng)絡(luò),利用普通計(jì)算機(jī)的CPU和圖像處理裝置,以及Windows中的DirectShow功能,省略掉獨(dú)立的會(huì)議/視頻服務(wù)器等硬件設(shè)備,實(shí)現(xiàn)了成本的壓縮。
[0047]圖6為本發(fā)明實(shí)施例的遠(yuǎn)程通訊的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。如圖6所示,包括:邀請(qǐng)發(fā)起模塊101,用于向多個(gè)客戶終端發(fā)起通訊邀請(qǐng);信息處理模塊102,用于將所述多個(gè)客戶終端的語(yǔ)音信息進(jìn)行混音,和/或?qū)⑺龆鄠€(gè)客戶終端的視頻信息進(jìn)行合成;信息發(fā)送模塊103,用于將混音后的語(yǔ)音信息以及合成后的視頻信息發(fā)送給每一所述客戶終端。
[0048]作為進(jìn)一步的實(shí)施方式,所述邀請(qǐng)發(fā)起模塊101用于向多個(gè)客戶終端發(fā)起通訊邀請(qǐng),具體包括:向所述多個(gè)客戶終端發(fā)起語(yǔ)音通訊邀請(qǐng)或/和視頻通訊邀請(qǐng)。
[0049]作為進(jìn)一步的實(shí)施方式,所述信息處理模塊102包括語(yǔ)音信息處理單元,具體用于:當(dāng)所述客戶終端不超過(guò)4個(gè)時(shí),所述SIP服務(wù)器采用嵌位算法進(jìn)行混音;當(dāng)所述客戶終端超過(guò)4個(gè)時(shí),所述SIP服務(wù)器采用自適應(yīng)加權(quán)算法進(jìn)行混音。
[0050]作為進(jìn)一步的實(shí)施方式,所述信息處理模塊102包括視頻信息處理單元,具體用于:采用H264視頻編碼,并采用DirecxShow實(shí)現(xiàn)所述視頻信息中的視頻畫面的縮放和拼接。[005? ]作為進(jìn)一步的實(shí)施方式,所述信息處理模塊102還用于采用DirecxShow實(shí)現(xiàn)所述語(yǔ)音信息和視頻信息的采集和播放。
[0052]本發(fā)明實(shí)施例還提供一種遠(yuǎn)程通訊的實(shí)現(xiàn)系統(tǒng),其包括SIP服務(wù)器,所述SIP服務(wù)器包括圖6所述的遠(yuǎn)程通訊的實(shí)現(xiàn)裝置。也就是說(shuō),SIP服務(wù)器為部署有SIP協(xié)議模塊的任意一臺(tái)PC,通過(guò)調(diào)用計(jì)算機(jī)本身帶有的圖像處理部分和編碼部分,不依賴特有的CPU和顯卡,即可實(shí)現(xiàn)簡(jiǎn)易的遠(yuǎn)程通訊,例如小型的視頻會(huì)議等。
[0053]本發(fā)明實(shí)施例的遠(yuǎn)程通訊的實(shí)現(xiàn)方法、裝置及系統(tǒng),通過(guò)現(xiàn)有的計(jì)算機(jī)網(wǎng)絡(luò),充分利用普通計(jì)算機(jī)的CPU和圖形處理能力,以及Windows系統(tǒng)的強(qiáng)大功能,避免使用專用設(shè)備,保證系統(tǒng)靈活性和可擴(kuò)展性的同時(shí),盡可能的降低了硬件成本和系統(tǒng)的開發(fā)、運(yùn)行、維護(hù)成本。
[0054]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0055]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0056]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0057]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0058]本發(fā)明中應(yīng)用了具體實(shí)施例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【主權(quán)項(xiàng)】
1.一種遠(yuǎn)程通訊的實(shí)現(xiàn)方法,其特征在于,包括: SIP服務(wù)器發(fā)起通訊邀請(qǐng); 多個(gè)客戶終端接受所述通訊邀請(qǐng),建立遠(yuǎn)程通訊組; 所述SIP服務(wù)器將所述多個(gè)客戶終端的語(yǔ)音信息進(jìn)行混音,和/或?qū)⑺龆鄠€(gè)客戶終端的視頻信息進(jìn)行合成,發(fā)送給每一所述客戶終端。2.根據(jù)權(quán)利要求1所述的遠(yuǎn)程通訊的實(shí)現(xiàn)方法,其特征在于,所述SIP服務(wù)器發(fā)起通訊邀請(qǐng),包括: SIP服務(wù)器向所述客戶終端發(fā)起語(yǔ)音通訊邀請(qǐng);或/和 SIP服務(wù)器向所述客戶終端發(fā)起視頻通訊邀請(qǐng)。3.根據(jù)權(quán)利要求1所述的遠(yuǎn)程通訊的實(shí)現(xiàn)方法,其特征在于,所述SIP服務(wù)器將所述多個(gè)客戶終端的語(yǔ)音信息進(jìn)行混音,包括: 當(dāng)所述客戶終端不超過(guò)4個(gè)時(shí),所述SIP服務(wù)器采用嵌位算法進(jìn)行混音; 當(dāng)所述客戶終端超過(guò)4個(gè)時(shí),所述SIP服務(wù)器采用自適應(yīng)加權(quán)算法進(jìn)行混音。4.根據(jù)權(quán)利要求1所述的遠(yuǎn)程通訊的實(shí)現(xiàn)方法,其特征在于,所述SIP服務(wù)器所述多個(gè)客戶終端的視頻信息進(jìn)行合成,包括: 采用H264視頻編碼,并采用DirecxShow實(shí)現(xiàn)所述視頻信息中的視頻畫面的縮放和拼接。5.根據(jù)權(quán)利要求1所述的遠(yuǎn)程通訊的實(shí)現(xiàn)方法,其特征在于,采用DirecxShow實(shí)現(xiàn)所述語(yǔ)音信息和視頻信息的采集和播放。6.一種遠(yuǎn)程通訊的實(shí)現(xiàn)裝置,其特征在于,包括: 邀請(qǐng)發(fā)起模塊,用于向多個(gè)客戶終端發(fā)起通訊邀請(qǐng); 信息處理模塊,用于將所述多個(gè)客戶終端的語(yǔ)音信息進(jìn)行混音,和/或?qū)⑺龆鄠€(gè)客戶終端的視頻信息進(jìn)行合成; 信息發(fā)送模塊,用于將混音后的語(yǔ)音信息以及合成后的視頻信息發(fā)送給每一所述客戶終端。7.根據(jù)權(quán)利要求6所述的遠(yuǎn)程通訊的實(shí)現(xiàn)裝置,其特征在于,所述邀請(qǐng)發(fā)起模塊用于向多個(gè)客戶終端發(fā)起通訊邀請(qǐng),具體包括: 向所述多個(gè)客戶終端發(fā)起語(yǔ)音通訊邀請(qǐng)或/和視頻通訊邀請(qǐng)。8.根據(jù)權(quán)利要求6所述的遠(yuǎn)程通訊的實(shí)現(xiàn)裝置,其特征在于,所述信息處理模塊包括語(yǔ)音信息處理單元,具體用于: 當(dāng)所述客戶終端不超過(guò)4個(gè)時(shí),所述SIP服務(wù)器采用嵌位算法進(jìn)行混音; 當(dāng)所述客戶終端超過(guò)4個(gè)時(shí),所述SIP服務(wù)器采用自適應(yīng)加權(quán)算法進(jìn)行混音。9.根據(jù)權(quán)利要求6所述的遠(yuǎn)程通訊的實(shí)現(xiàn)裝置,其特征在于,所述信息處理模塊包括視頻信息處理單元,具體用于: 采用H264視頻編碼,并采用DirecxShow實(shí)現(xiàn)所述視頻信息中的視頻畫面的縮放和拼接。10.根據(jù)權(quán)利要求6所述的遠(yuǎn)程通訊的實(shí)現(xiàn)裝置,其特征在于,所述信息處理模塊還用于采用DirecxShow實(shí)現(xiàn)所述語(yǔ)音信息和視頻信息的采集和播放。
【文檔編號(hào)】H04N7/15GK105898187SQ201610287732
【公開日】2016年8月24日
【申請(qǐng)日】2016年5月4日
【發(fā)明人】魏天云, 張偉, 吳秋平
【申請(qǐng)人】廣州頤希頡信息科技有限公司