專利名稱:一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體領(lǐng)域,尤其涉及一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法及系統(tǒng)。
背景技術(shù):
在IP網(wǎng)絡(luò)中,對(duì)于多畫面的監(jiān)控過(guò)程,由于待監(jiān)控畫面對(duì)應(yīng)的采集端參數(shù)不同,監(jiān)控過(guò)程中會(huì)同時(shí)處理高碼率、低碼率及混合碼率的音視頻數(shù)據(jù)。傳統(tǒng)的實(shí)現(xiàn)方式往往為在服務(wù)器端的主進(jìn)程中創(chuàng)建多個(gè)線程,每個(gè)線程負(fù)責(zé)實(shí)現(xiàn)音視頻流的傳輸、解碼和輸出,這樣表面上節(jié)省了資源,但由于在windows系統(tǒng)中,每個(gè)線程與主進(jìn)程共用地址空間受限于2GB,由于空間有限,各線程對(duì)音視頻流進(jìn)行處理時(shí)只能處理碼率在20-30KB/S左右的音視頻數(shù)據(jù),造成服務(wù)器端的主進(jìn)程往往處于無(wú)響應(yīng)的狀態(tài),各監(jiān)控畫面顯示也不流暢。
使用監(jiān)控系統(tǒng)處理多任務(wù)時(shí),各線程往往需要協(xié)同工作,則各進(jìn)程被執(zhí)行加鎖/解鎖的控制過(guò)程中,某些線程往往不穩(wěn)定,影響到了服務(wù)器端的主進(jìn)程的運(yùn)行。在每個(gè)線程處理均為相同的音視頻數(shù)據(jù)且對(duì)應(yīng)的CPU使用率均比較高時(shí),多線程的處理能力不免就會(huì)受到限制,尤其是在處理高碼率的實(shí)時(shí)視音頻數(shù)據(jù)時(shí),各線程很可能會(huì)處于長(zhǎng)時(shí)間等待的狀態(tài),造成各監(jiān)控畫面不能被安全地輸出。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供了一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法及系統(tǒng),采用多進(jìn)程方式處理多線程方式無(wú)法處理的高碼率的音視頻流,使各監(jiān)控畫面能夠流暢、安全地輸出。為達(dá)到上述目的,采用如下技術(shù)方案一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法,包括服務(wù)器端的主進(jìn)程針對(duì)每塊視頻區(qū)域創(chuàng)建子進(jìn)程,記錄子進(jìn)程的ID和窗口句柄;所述子進(jìn)程對(duì)高碼率的音視頻流進(jìn)行實(shí)時(shí)傳輸和解碼,并將所得的碼字在客戶端進(jìn)行輸出;子進(jìn)程定時(shí)向主程序發(fā)送心跳包;主進(jìn)程定時(shí)檢查是否均收到各子進(jìn)程發(fā)送的心跳包,并重新創(chuàng)建未收到心跳包的子進(jìn)程,從而使所述子進(jìn)程對(duì)應(yīng)的高碼率音視頻流穩(wěn)定地進(jìn)行輸出。進(jìn)一步,所述高碼率的音視頻流的碼率為2M/S或者更高。進(jìn)一步,所述各子進(jìn)程相互獨(dú)立,分別在各自對(duì)應(yīng)的地址空間內(nèi)運(yùn)行。進(jìn)一步,所述心跳包包括一既定格式的命令字,用于通知主進(jìn)程對(duì)應(yīng)的子進(jìn)程處于存活狀態(tài)。進(jìn)一步,所述子進(jìn)程對(duì)各自對(duì)應(yīng)的音視頻分別進(jìn)行解碼,并將解碼所得的時(shí)間信息進(jìn)行同步調(diào)整后整合輸出,從而使客戶端輸出的音視頻保持同步。進(jìn)一步,所述子進(jìn)程將所得的碼字在客戶端進(jìn)行輸出時(shí),按指定的視頻區(qū)域分別在監(jiān)控屏幕上進(jìn)行顯示,并根據(jù)用戶的觸發(fā)全屏放大。本發(fā)明還公開(kāi)了一種基于多進(jìn)程的音視頻數(shù)據(jù)處理系統(tǒng),包括創(chuàng)建模塊,用于控制服務(wù)器端的主進(jìn)程針對(duì)每塊視頻區(qū)域創(chuàng)建子進(jìn)程,記錄子進(jìn)程的ID和窗口句柄;所述子進(jìn)程對(duì)高碼率的音視頻流進(jìn)行實(shí)時(shí)傳輸和解碼,并將所得的碼字在客戶端進(jìn)行輸出;發(fā)送模塊,用于控制子進(jìn)程定時(shí)向主程序發(fā)送心跳包;重建模塊,用戶控制主進(jìn)程定時(shí)檢查是否均收到各子進(jìn)程發(fā)送的心跳包,并重新創(chuàng)建未收到心跳包的子進(jìn)程,從而使所述子進(jìn)程對(duì)應(yīng)的高碼率音視頻流穩(wěn)定地進(jìn)行輸出。進(jìn)一步,所述高碼率的音視頻流的碼率為2M/S或者更高。
進(jìn)一步,所述創(chuàng)建模塊中,子進(jìn)程對(duì)各自對(duì)應(yīng)的音視頻分別進(jìn)行解碼,并將解碼所得的時(shí)間信息進(jìn)行同步調(diào)整后整合輸出,從而使客戶端輸出的音視頻保持同步。進(jìn)一步,所述創(chuàng)建模塊中,子進(jìn)程將所得的碼字在客戶端進(jìn)行輸出時(shí),按指定的視頻區(qū)域分別在監(jiān)控屏幕上進(jìn)行顯示,并根據(jù)用戶的觸發(fā)全屏放大。本發(fā)明一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法及系統(tǒng),采用多進(jìn)程的方式對(duì)音視頻數(shù)據(jù)進(jìn)行處理,并重新創(chuàng)建已終止的處理音視頻數(shù)據(jù)的子進(jìn)程;由于各子進(jìn)程之間的處理過(guò)程相互獨(dú)立,保證了服務(wù)器端的主程序運(yùn)行的穩(wěn)定性,及時(shí)監(jiān)測(cè)音頻丟失、視頻丟失、
IP流中斷等異常情況,使各子進(jìn)程對(duì)應(yīng)的監(jiān)控畫面被安全地輸出;且各子進(jìn)程均有獨(dú)立的2GB地址空間和獨(dú)立的資源,在各自的地址空間內(nèi)獨(dú)立運(yùn)行,對(duì)IP網(wǎng)絡(luò)中2M/S及以上的高碼率音視頻流能夠流暢地輸出。
圖I為本發(fā)明實(shí)施例一提供的一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法的流程圖;圖2為本發(fā)明實(shí)施例一提供的一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法中各進(jìn)程之間的邏輯關(guān)系圖;圖3為本發(fā)明實(shí)施例二提供的一種基于多進(jìn)程的音視頻數(shù)據(jù)處理系統(tǒng)的模塊結(jié)構(gòu)圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法和系統(tǒng)進(jìn)行詳細(xì)描述。本發(fā)明公開(kāi)了一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法,如圖I所示,包括步驟101 :服務(wù)器端的主進(jìn)程針對(duì)每塊視頻區(qū)域創(chuàng)建子進(jìn)程,記錄子進(jìn)程的ID和窗口句柄;本實(shí)施例中,以I P網(wǎng)絡(luò)中的監(jiān)控平臺(tái)編排的區(qū)域編號(hào)標(biāo)識(shí)創(chuàng)建的子進(jìn)程,即以主進(jìn)程為父窗口創(chuàng)建的各子進(jìn)程對(duì)應(yīng)的窗口,根據(jù)整個(gè)屏幕的大小和子進(jìn)程的個(gè)數(shù)來(lái)分配各子進(jìn)程對(duì)應(yīng)的窗口大小。如圖2所示,每個(gè)子進(jìn)程與監(jiān)控屏幕的視頻區(qū)域的窗口句柄對(duì)應(yīng),進(jìn)而將子進(jìn)程對(duì)應(yīng)的音視頻在對(duì)應(yīng)的視頻區(qū)域中輸出。在windows系統(tǒng)中,進(jìn)程的地址空間分為兩部分,即2G的用戶空間和2G的系統(tǒng)空間,系統(tǒng)空間是各個(gè)進(jìn)程所共享的,存放的是操作系統(tǒng)及;些內(nèi)核對(duì)象等,而用戶空間是分配給各個(gè)進(jìn)程使用的,進(jìn)程的地址空間將映射到這2G的用戶空間。因此,各子進(jìn)程相互獨(dú)立,分別在各自對(duì)應(yīng)的地址空間內(nèi)運(yùn)行,對(duì)服務(wù)器下發(fā)的高碼率的音視頻流進(jìn)行實(shí)時(shí)傳輸和解碼,并將所得的碼字在客戶端進(jìn)行輸出。所述高碼率的音視頻流的碼率可為為2M/S或者更高,具體能處理的碼率由進(jìn)行音視頻流處理的硬件決定,本實(shí)施例中,能夠?qū). 264編碼的2M標(biāo)清碼率的TS流進(jìn)行流暢播放。步驟102 :子進(jìn)程定時(shí)向主程序發(fā)送心跳包;本實(shí)施例中,如圖2所示,基于windows消息定時(shí)向主程序發(fā)送心跳包。心跳包包括;既定格式的命令字,用于通知主進(jìn)程對(duì)應(yīng)的子進(jìn)程處于存活狀態(tài)。心跳包采用定時(shí)發(fā)送的通訊包,服務(wù)器端的主進(jìn)程如果在指定時(shí)間段內(nèi)未收到對(duì)方響應(yīng),則判斷子進(jìn)程已經(jīng)離線,從而子進(jìn)程對(duì)應(yīng)的異常情況,是檢測(cè)音頻丟失、或視頻丟失、或IP流中斷等。服務(wù)端收到后回復(fù)一個(gè)固定信息,如果主進(jìn)程在指定時(shí)間段內(nèi)沒(méi)有收到子進(jìn)程對(duì)應(yīng)發(fā)送的心跳包,則視子進(jìn)程消失。
子進(jìn)程每隔一段時(shí)間發(fā)送心跳包,在TCP網(wǎng)絡(luò)中,則用send命令發(fā)送;在仙?網(wǎng)絡(luò)中,用sendto命令發(fā)送至服務(wù)器端對(duì)應(yīng)的socket。服務(wù)器端的主進(jìn)程收到后,則表示該子進(jìn)程還處于“活著”的狀態(tài)。步驟103 :主進(jìn)程定時(shí)檢查是否均收到各子進(jìn)程發(fā)送的心跳包,并重新創(chuàng)建未收到心跳包的子進(jìn)程,從而使所述子進(jìn)程對(duì)應(yīng)的高碼率音視頻流穩(wěn)定地進(jìn)行輸出。主程序根據(jù)各子進(jìn)程發(fā)送的心跳包判斷各子進(jìn)程的存在狀態(tài),如果某些子進(jìn)程未發(fā)送心跳包,則首先終止這些未發(fā)送心跳包子進(jìn)程,這樣,即使是由于發(fā)生死鎖等原因而造成心跳包未發(fā)送的子進(jìn)程也可以被重新創(chuàng)建,并進(jìn)一步調(diào)用這些子進(jìn)程對(duì)應(yīng)的ID和窗口句柄重新創(chuàng)建這些子進(jìn)程,從而正常地對(duì)高碼率的音視頻進(jìn)行處理,保證了終止的子進(jìn)程對(duì)應(yīng)的音視頻的能夠穩(wěn)定的傳輸、解碼和輸出。監(jiān)控平臺(tái)下,音頻和視頻數(shù)據(jù)有時(shí)不能同步播放。本實(shí)施例中,子進(jìn)程對(duì)各自對(duì)應(yīng)的音視頻分別進(jìn)行解碼,得到對(duì)應(yīng)的視頻信息和音頻信息,分別從視頻信息和音頻信息中提取時(shí)間信息,將兩者的時(shí)間信息進(jìn)行調(diào)整,即將視頻信息中的時(shí)間信息或音頻信息中的時(shí)間信息進(jìn)行調(diào)整,使兩者同步播放,并按同步后的時(shí)間信息將視頻信息和音頻信息整合輸出,從而使客戶端輸出的音視頻保持同步。子進(jìn)程將所得的碼字在客戶端進(jìn)行輸出時(shí),按指定的視頻區(qū)域分別在監(jiān)控屏幕上進(jìn)行顯示,當(dāng)用戶觸發(fā)對(duì)應(yīng)的視頻區(qū)域時(shí),將該子進(jìn)程對(duì)應(yīng)的視頻區(qū)域的全屏顯示。本發(fā)明還公開(kāi)了一種基于多進(jìn)程的音視頻數(shù)據(jù)處理系統(tǒng),如圖3所示,包括創(chuàng)建模塊301,用于控制服務(wù)器端的主進(jìn)程針對(duì)每塊視頻區(qū)域創(chuàng)建子進(jìn)程,記錄子進(jìn)程的ID和窗口句柄;所述子進(jìn)程對(duì)高碼率的音視頻流進(jìn)行實(shí)時(shí)傳輸和解碼,并將所得的碼字在客戶端進(jìn)行輸出;發(fā)送模塊302,用于控制子進(jìn)程定時(shí)向主程序發(fā)送心跳包;重建模塊303,用戶控制主進(jìn)程定時(shí)檢查是否均收到各子進(jìn)程發(fā)送的心跳包,并重新創(chuàng)建未收到心跳包的子進(jìn)程,從而使所述子進(jìn)程對(duì)應(yīng)的高碼率音視頻流穩(wěn)定地進(jìn)行輸出。進(jìn)一步,所述高碼率的音視頻流的碼率為2M/S或者更高。進(jìn)一步,所述創(chuàng)建模塊中,子進(jìn)程對(duì)各自對(duì)應(yīng)的音視頻分別進(jìn)行解碼,并將解碼所得的時(shí)間信息進(jìn)行同步調(diào)整后整合輸出,從而使客戶端輸出的音視頻保持同步。進(jìn)一步,所述創(chuàng)建模塊中,子進(jìn)程將所得的碼字在客戶端進(jìn)行輸出時(shí),按指定的視頻區(qū)域分別在監(jiān)控屏幕上進(jìn)行顯示,并根據(jù)用戶的觸發(fā)全屏放大。本發(fā)明一種基于多進(jìn)程 的音視頻數(shù)據(jù)處理方法及系統(tǒng),采用多進(jìn)程的方式對(duì)音視頻數(shù)據(jù)進(jìn)行處理,并重新創(chuàng)建已終止的處理音視頻數(shù)據(jù)的子進(jìn)程;由于各子進(jìn)程之間的處理過(guò)程相互獨(dú)立,保證了服務(wù)器端的主程序運(yùn)行的穩(wěn)定性,及時(shí)監(jiān)測(cè)音頻丟失、視頻丟失、IP流中斷等異常情況,使各子進(jìn)程對(duì)應(yīng)的監(jiān)控畫面被安全地輸出;且各子進(jìn)程均有獨(dú)立的2GB地址空間和獨(dú)立的資源,在各自的地址空間內(nèi)獨(dú)立運(yùn)行,對(duì)IP網(wǎng)絡(luò)中2M/S及以上的高碼率音視頻流能夠流暢地輸出。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法,其特征在于,包括 服務(wù)器端的主進(jìn)程針對(duì)每塊視頻區(qū)域創(chuàng)建子進(jìn)程,記錄子進(jìn)程的ID和窗口句柄;所述子進(jìn)程對(duì)高碼率的音視頻流進(jìn)行實(shí)時(shí)傳輸和解碼,并將所得的碼字在客戶端進(jìn)行輸出; 子進(jìn)程定時(shí)向主程序發(fā)送心跳包; 主進(jìn)程定時(shí)檢查是否均收到各子進(jìn)程發(fā)送的心跳包,并重新創(chuàng)建未收到心跳包的子進(jìn)程,從而使所述子進(jìn)程對(duì)應(yīng)的高碼率音視頻流穩(wěn)定地進(jìn)行輸出。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于所述高碼率的音視頻流的碼率為2M/S或者更聞。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于所述各子進(jìn)程相互獨(dú)立,分別在各自對(duì)應(yīng)的地址空間內(nèi)運(yùn)行。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于所述心跳包包括一既定格式的命令字,用于通知主進(jìn)程對(duì)應(yīng)的子進(jìn)程處于存活狀態(tài)。
5.根據(jù)權(quán)利要求I或3所述的方法,其特征在于所述子進(jìn)程對(duì)各自對(duì)應(yīng)的音視頻分別進(jìn)行解碼,并將解碼所得的時(shí)間信息進(jìn)行同步調(diào)整后整合輸出,從而使客戶端輸出的音視頻保持同步。
6.根據(jù)權(quán)利要求I或3所述的方法,其特征在于所述子進(jìn)程將所得的碼字在客戶端進(jìn)行輸出時(shí),按指定的視頻區(qū)域分別在監(jiān)控屏幕上進(jìn)行顯示,并根據(jù)用戶的觸發(fā)全屏放大。
7.一種基于多進(jìn)程的音視頻數(shù)據(jù)處理系統(tǒng),其特征在于,包括 創(chuàng)建模塊,用于控制服務(wù)器端的主進(jìn)程針對(duì)每塊視頻區(qū)域創(chuàng)建子進(jìn)程,記錄子進(jìn)程的ID和窗口句柄;所述子進(jìn)程對(duì)高碼率的音視頻流進(jìn)行實(shí)時(shí)傳輸和解碼,并將所得的碼字在客戶端進(jìn)行輸出; 發(fā)送模塊,用于控制子進(jìn)程定時(shí)向主程序發(fā)送心跳包; 重建模塊,用戶控制主進(jìn)程定時(shí)檢查是否均收到各子進(jìn)程發(fā)送的心跳包,并重新創(chuàng)建未收到心跳包的子進(jìn)程,從而使所述子進(jìn)程對(duì)應(yīng)的高碼率音視頻流穩(wěn)定地進(jìn)行輸出。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于所述高碼率的音視頻流的碼率為2M/S或者更聞。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于所述創(chuàng)建模塊中,子進(jìn)程對(duì)各自對(duì)應(yīng)的音視頻分別進(jìn)行解碼,并將解碼所得的時(shí)間信息進(jìn)行同步調(diào)整后整合輸出,從而使客戶端輸出的音視頻保持同步。
10.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于所述創(chuàng)建模塊中,子進(jìn)程將所得的碼字在客戶端進(jìn)行輸出時(shí),按指定的視頻區(qū)域分別在監(jiān)控屏幕上進(jìn)行顯示,并根據(jù)用戶的觸發(fā)全屏放大。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種基于多進(jìn)程的音視頻數(shù)據(jù)處理方法及系統(tǒng),屬于多媒體領(lǐng)域。方法包括服務(wù)器端的主進(jìn)程針對(duì)每塊視頻區(qū)域創(chuàng)建子進(jìn)程,記錄子進(jìn)程的I D和窗口句柄;主進(jìn)程定時(shí)檢查是否均收到各子進(jìn)程發(fā)送的心跳包,并重新創(chuàng)建未收到心跳包的子進(jìn)程,從而使所述子進(jìn)程對(duì)應(yīng)的高碼率音視頻流穩(wěn)定地進(jìn)行輸出。本發(fā)明采用多進(jìn)程的方式對(duì)音視頻數(shù)據(jù)進(jìn)行處理,由于各子進(jìn)程之間的處理過(guò)程相互獨(dú)立,保證了服務(wù)器端的主程序運(yùn)行的穩(wěn)定性,使各子進(jìn)程對(duì)應(yīng)的監(jiān)控畫面被安全地輸出;且各子進(jìn)程均有獨(dú)立的2GB地址空間和獨(dú)立的資源,在各自的地址空間內(nèi)獨(dú)立運(yùn)行,對(duì)IP網(wǎng)絡(luò)中2M/S及以上的高碼率音視頻流能夠流暢地輸出。
文檔編號(hào)H04L29/06GK102801961SQ20121029774
公開(kāi)日2012年11月28日 申請(qǐng)日期2012年8月21日 優(yōu)先權(quán)日2012年8月21日
發(fā)明者時(shí)杰, 楊列森 申請(qǐng)人:北京捷成世紀(jì)科技股份有限公司