国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種遠(yuǎn)程通訊的實(shí)現(xiàn)方法、裝置及系統(tǒng)的制作方法

      文檔序號(hào):10539177閱讀:509來(lái)源:國(guó)知局
      一種遠(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 &param);
      bool setOutParam (const DispParam &param); size_t inCount();
      void setlnCount(size_t count);
      bool inParam(size—t channel,DispParam &param);
      bool setlnParam(size—t channel, const DispParam &param);
      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)人】廣州頤希頡信息科技有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1