本發(fā)明涉及云存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種支持云平臺(tái)采用雙緩沖的實(shí)時(shí)視頻流存儲(chǔ)方法。
背景技術(shù):
隨著整個(gè)安防行業(yè)技術(shù)水平的不斷成熟以及社會(huì)治安事件復(fù)雜度的不斷提高,原有的以硬盤存儲(chǔ)視頻的方式已經(jīng)達(dá)不到破案的要求,視頻在存儲(chǔ)周期、訪問效率以及安全性方面也有了更高的要求。
在這個(gè)大的應(yīng)用背景下,基于云存儲(chǔ)的實(shí)現(xiàn)架構(gòu)應(yīng)運(yùn)而生,如阿里云、百度云、華為云等。一般云存儲(chǔ)分為:文件存儲(chǔ)、塊存儲(chǔ)和對(duì)象存儲(chǔ),文件存儲(chǔ)和塊存儲(chǔ)是傳統(tǒng)的存儲(chǔ)數(shù)據(jù)方式;對(duì)象存儲(chǔ)服務(wù)是面向企業(yè)和個(gè)人開發(fā)者提供的高可用,高穩(wěn)定,強(qiáng)安全的云端存儲(chǔ)服務(wù),對(duì)象存儲(chǔ)是目前最常用的云存儲(chǔ)方案,克服了塊存儲(chǔ)和文件存儲(chǔ)的缺點(diǎn)。同原有的存儲(chǔ)架構(gòu)相比,使用云存儲(chǔ)在可靠性、安全、成本以及數(shù)據(jù)處理能力方面都具有明顯的優(yōu)勢(shì)。就可靠性而言,對(duì)象存儲(chǔ)服務(wù)的可運(yùn)行性不低于99.9%,規(guī)模自動(dòng)擴(kuò)展,不影響對(duì)外服務(wù),同時(shí)采用了多重冗余備份機(jī)制來增強(qiáng)其安全性,而采用自建服務(wù)器存儲(chǔ),其可靠性受限于存儲(chǔ)服務(wù)的硬件環(huán)境,相比于對(duì)象存儲(chǔ),易出現(xiàn)不可逆轉(zhuǎn)的數(shù)據(jù)丟失問題;就安全性而言,對(duì)象存儲(chǔ)提供企業(yè)級(jí)多層次安全防護(hù),而用戶自建存儲(chǔ)需要單獨(dú)實(shí)現(xiàn);就成本而言,對(duì)象存儲(chǔ)根據(jù)存儲(chǔ)大小按需收費(fèi),成本低,而用戶自建存儲(chǔ)則是一次性投入、資源的利用率很低,存儲(chǔ)受硬盤容量限制;就處理能力而言,采用對(duì)象存儲(chǔ)架構(gòu),提供內(nèi)容加速分發(fā)功能,其存儲(chǔ)效率遠(yuǎn)高于用戶自建存儲(chǔ)服務(wù)模式。
技術(shù)實(shí)現(xiàn)要素:
有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明提供一種支持云平臺(tái)采用雙緩沖的實(shí)時(shí)視頻流存儲(chǔ)方法,由云存儲(chǔ)服務(wù)自動(dòng)向下級(jí)平臺(tái)或前端設(shè)備進(jìn)行點(diǎn)播請(qǐng)求,獲取到視頻流,采用自定義的存儲(chǔ)模式進(jìn)行視頻流存儲(chǔ),能夠在一定程度上提高了視頻存儲(chǔ)的效率,減少不可逆轉(zhuǎn)的視頻丟失問題,同時(shí)也可以在一定程度上提高視頻存儲(chǔ)的安全性。
本發(fā)明所采用的技術(shù)方案是:一種支持云平臺(tái)采用雙緩沖的實(shí)時(shí)視頻流存儲(chǔ)方法,包括如下步驟:
步驟1、獲取云存儲(chǔ)配置文件信息,所述信息包括服務(wù)部署ID、云平臺(tái)配置信息、數(shù)據(jù)庫配置信息;
步驟2、初始化數(shù)據(jù)庫連接,連接所述數(shù)據(jù)庫,獲取所述部署ID對(duì)應(yīng)的存儲(chǔ)相機(jī)列表信息;
步驟3、獲取調(diào)度服務(wù)器信息,同時(shí)啟動(dòng)存儲(chǔ)管理主線程,為每個(gè)相機(jī)分配對(duì)應(yīng)的雙緩沖區(qū),建立相機(jī)與雙緩沖區(qū)之間的映射關(guān)系,進(jìn)行內(nèi)存的一次性申請(qǐng);
步驟4、遍歷相機(jī)列表信息,創(chuàng)建視頻流存儲(chǔ)線程和視頻流接收線程,每路視頻對(duì)應(yīng)一個(gè)存儲(chǔ)線程和一個(gè)視頻流接收線程,同時(shí)建立相機(jī)與存儲(chǔ)線程、視頻流接收線程之間的映射關(guān)系,并向調(diào)度服務(wù)發(fā)起實(shí)時(shí)視頻播放請(qǐng)求;
步驟5、所述調(diào)度服務(wù)向下級(jí)平臺(tái)或設(shè)備發(fā)起視頻點(diǎn)播請(qǐng)求,為每路視頻開啟一個(gè)存儲(chǔ)線程和一個(gè)視頻流接收線程;
步驟6、所述視頻流接收線程在接收到視頻流后,將視頻數(shù)據(jù)保存到對(duì)應(yīng)的緩沖區(qū)中,所述存儲(chǔ)線程根據(jù)緩沖區(qū)存滿標(biāo)志將所述視頻數(shù)據(jù)存儲(chǔ)到所述云平臺(tái)上,并將時(shí)間節(jié)點(diǎn)信息保存至數(shù)據(jù)庫中;
步驟7、在存儲(chǔ)完成后,重置所述相機(jī)的緩沖區(qū),同時(shí)將視頻流存儲(chǔ)信息保存到所述數(shù)據(jù)庫中;重復(fù)步驟3-7,直到接收到退出指令。
在本發(fā)明較佳實(shí)施方式中,所述相機(jī)雙緩沖區(qū)為主緩沖區(qū)和備用緩沖區(qū),所述主緩沖區(qū)和所述備用緩沖區(qū)交替使用。
在本發(fā)明另一較佳實(shí)施方式中,所述每個(gè)緩沖區(qū)的結(jié)構(gòu)為{相機(jī)編號(hào)、存儲(chǔ)狀態(tài)、當(dāng)前已經(jīng)存儲(chǔ)的數(shù)據(jù)大小、I幀列表信息(I幀偏移量、時(shí)間戳)}。
在本發(fā)明較佳實(shí)施方式中,所述步驟6中所述存儲(chǔ)接口根據(jù)所述云平臺(tái)配置信息中的參數(shù)調(diào)用云平臺(tái)接口進(jìn)行初始化,所述存儲(chǔ)線程通過所述云平臺(tái)的存儲(chǔ)接口將所述視頻流保存到所述云平臺(tái)上。
在本發(fā)明另一較佳實(shí)施方式中,所述步驟6中所述視頻流接收線程接收視頻流的具體方式為:
判斷所述視頻流的長(zhǎng)度是否大于RTP包頭長(zhǎng)度,如果小于則直接丟棄;
否則獲取到視頻流數(shù)據(jù),獲取視頻幀類型;
如果是I幀,判斷臨時(shí)接收緩沖區(qū)中是否有數(shù)據(jù),如果沒有,則直接將數(shù)據(jù)保存至所述臨時(shí)緩沖區(qū);如果有數(shù)據(jù),則將所述臨時(shí)緩沖區(qū)中的數(shù)據(jù)保存至所述緩沖區(qū)中,將接收到的I幀保存至所述臨時(shí)緩沖區(qū);
如果是P幀,判斷是否找到了I幀,如果沒有找到,則丟棄掉,如果已經(jīng)找到,則將視頻流保存至臨時(shí)緩沖區(qū)中;
每次在處理完成后更新接收序號(hào)和接收時(shí)間戳信息。
在本發(fā)明較佳實(shí)施方式中,所述I幀序列數(shù)據(jù)入雙緩沖區(qū)實(shí)現(xiàn)步驟如下:
步驟11、獲取所述I幀序列數(shù)據(jù)、數(shù)據(jù)長(zhǎng)度、I幀絕對(duì)時(shí)間信息;
步驟12、獲取所述主緩沖區(qū)的狀態(tài),判斷所述備用緩沖區(qū)中是否有數(shù)據(jù),如果有數(shù)據(jù),則執(zhí)行步驟13;否則執(zhí)行步驟14;
步驟13、獲取所述備用緩沖區(qū)的剩余空間,判斷所述備用緩沖區(qū)的剩余空間是否存夠存儲(chǔ),如果是,則將數(shù)據(jù)拷貝至所述備用緩沖區(qū),執(zhí)行步驟15;否則將所述備用緩沖區(qū)的狀態(tài)設(shè)置成已滿,將剩下的空間進(jìn)行占位填充,同時(shí)將數(shù)據(jù)拷貝至所述主緩沖區(qū),執(zhí)行步驟15;
步驟14、判斷所述主緩沖區(qū)的剩余空間是否足夠存儲(chǔ),如果足夠存儲(chǔ),則將數(shù)據(jù)拷貝至所述主緩沖區(qū),執(zhí)行步驟15;否則將所述主緩沖區(qū)的狀態(tài)設(shè)置為已滿,將剩下的空間進(jìn)行占位填充,并將數(shù)據(jù)拷貝至所述備用緩沖區(qū),執(zhí)行步驟15;
步驟15、處理完畢。
在本發(fā)明另一較佳實(shí)施方式中,所述視頻流存儲(chǔ)線程實(shí)現(xiàn)步驟如下:
步驟21、根據(jù)所述配置文件中的云平臺(tái)配置信息初始化云平臺(tái)接口、相機(jī)編號(hào)以及雙緩沖區(qū)信息;
步驟22、啟動(dòng)所述視頻流存儲(chǔ)線程;
步驟23、判斷是否接收到服務(wù)的退出命令,如果接收到退出命令,則退出循環(huán),等待程序退出,否則執(zhí)行步驟24;
步驟24、判斷所述主緩沖區(qū)是否已滿,如果已滿,則調(diào)用所述云平臺(tái)存儲(chǔ)接口將數(shù)據(jù)保存至云平臺(tái),如果存儲(chǔ)成功,則將視頻片段信息保存至數(shù)據(jù)庫,重置緩沖區(qū),執(zhí)行步驟25;
步驟25、判斷所述備用緩沖區(qū)是否已經(jīng)寫滿,如果所述備用緩沖區(qū)已經(jīng)寫滿,則調(diào)用云平臺(tái)存儲(chǔ)接口將數(shù)據(jù)保存至云平臺(tái),如果存儲(chǔ)成功,則將視頻片段信息保存至數(shù)據(jù)庫,重置緩沖區(qū),執(zhí)行步驟26;
步驟26、進(jìn)行下一輪的判斷,執(zhí)行步驟23。
在本發(fā)明較佳實(shí)施方式中,所述視頻流接收線程實(shí)現(xiàn)步驟如下:
步驟31、初始化所述視頻流接收線程,包括所述相機(jī)編號(hào)、雙緩沖區(qū);
步驟32、生成視頻流接收端口,并設(shè)置臨時(shí)接收緩沖區(qū);
步驟33、啟動(dòng)所述視頻流接收線程;
步驟34、在所述視頻流接收線程中判斷是否接收到退出命令,如果接收到,則執(zhí)行步驟35,否則執(zhí)行步驟36;
步驟35、停止接收視頻流,并判斷雙緩沖區(qū)中是否有需要存儲(chǔ)的視頻數(shù)據(jù),如果有,將緩沖區(qū)的存滿標(biāo)志置成已滿,并進(jìn)行數(shù)據(jù)占位填充(保證整個(gè)緩沖區(qū)都是填滿的),如果沒有,則退出循環(huán),等待線程退出;
步驟36、準(zhǔn)備接收視頻流,判斷是否接收到所述視頻流接收線程的退出信號(hào),如果接收到,則執(zhí)行步驟35;否則執(zhí)行步驟37;
步驟37、獲取視頻數(shù)據(jù)、幀類型,如果是I幀,判斷基準(zhǔn)時(shí)間是否存在,如果不存在,則將基準(zhǔn)時(shí)間設(shè)置為當(dāng)前時(shí)間,根據(jù)RTP數(shù)據(jù)的時(shí)間戳信息以及基準(zhǔn)時(shí)間更新I幀絕對(duì)時(shí)間,執(zhí)行步驟38;如果不是I幀,則執(zhí)行步驟39;
步驟38、將之前保存的整個(gè)I幀序列保存至雙緩沖區(qū),將新接收到I幀保存至臨時(shí)接收緩沖區(qū),并更新序號(hào)、時(shí)間戳信息,執(zhí)行步驟36;
步驟39、判斷是否已經(jīng)接收到I幀,如果已經(jīng)收到了I幀,則將接收到的視頻數(shù)據(jù)保存至臨時(shí)接收緩沖區(qū),并更新序號(hào)、時(shí)間戳信息,執(zhí)行步驟36;否則數(shù)據(jù)丟棄,更新序號(hào)、時(shí)間戳信息,執(zhí)行步驟36
本發(fā)明能充分的提高視頻的存儲(chǔ)和訪問效率,視頻存儲(chǔ)時(shí)每個(gè)片段里面都包含有一個(gè)或多個(gè)I幀序列信息,在下載后通過解析后直接進(jìn)行播放,不存在找不到I幀而無法播放的問題;同時(shí),當(dāng)緩沖區(qū)的大小不足以存儲(chǔ)一個(gè)I幀序列時(shí),將緩沖區(qū)的存滿標(biāo)志設(shè)置為已滿,將數(shù)據(jù)區(qū)剩余空間進(jìn)行占位填充,這樣在存儲(chǔ)時(shí)可以減少存儲(chǔ)碎片的產(chǎn)生,提高訪問效率。
從安全性角度而言,由于本發(fā)明視頻存儲(chǔ)時(shí)是按照指定的格式進(jìn)行存儲(chǔ)和數(shù)據(jù)填充,在一定程度上可以提高視頻存儲(chǔ)的安全性,沒有視頻存儲(chǔ)的結(jié)構(gòu)信息則無法快速的對(duì)視頻進(jìn)行解析,從而提高了視頻存儲(chǔ)和訪問的安全性。。
附圖說明
圖1是本發(fā)明一較佳實(shí)施例中的實(shí)時(shí)視頻流存儲(chǔ)方法方法流程示意圖;
圖2是本發(fā)明另一較佳實(shí)施例中的云平臺(tái)配置信息結(jié)構(gòu)示意圖;
圖3是本發(fā)明一較佳實(shí)施例中的雙緩沖區(qū)存儲(chǔ)結(jié)構(gòu)示意圖;
圖4是本發(fā)明另一較佳實(shí)施例中的I幀序列數(shù)據(jù)入雙緩沖區(qū)模塊實(shí)現(xiàn)流程示意圖;
圖5是本發(fā)明一較佳實(shí)施例中的視頻流存儲(chǔ)線程實(shí)現(xiàn)流程示意圖;
圖6是本發(fā)明另一較佳實(shí)施例中的視頻流接收線程實(shí)現(xiàn)流程示意圖。
具體實(shí)施方式
下面對(duì)本發(fā)明的較佳實(shí)施例進(jìn)行詳細(xì)闡述,以使本發(fā)明的優(yōu)點(diǎn)和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對(duì)本發(fā)明的保護(hù)范圍做出更為清楚明確的界定。
本實(shí)施例公開一種支持云平臺(tái)采用雙緩沖的實(shí)時(shí)視頻流存儲(chǔ)方法,具體流程如圖1所示,包括如下步驟:
步驟1、獲取云存儲(chǔ)配置文件信息,配置文件信息包括服務(wù)部署ID、云平臺(tái)配置信息、數(shù)據(jù)庫配置信息。
其中,云平臺(tái)配置信息結(jié)構(gòu)如圖2所示,包括實(shí)例編號(hào)、云平臺(tái)登錄信息、訪問權(quán)限和分區(qū)配置信息。
步驟2、初始化數(shù)據(jù)庫連接,連接數(shù)據(jù)庫,獲取部署ID對(duì)應(yīng)的存儲(chǔ)相機(jī)列表信息。
實(shí)時(shí)視頻流存儲(chǔ)支持分布式部署。
步驟3、獲取調(diào)度服務(wù)器信息,同時(shí)啟動(dòng)存儲(chǔ)管理主線程,為每個(gè)相機(jī)分配對(duì)應(yīng)的雙緩沖區(qū),建立相機(jī)與雙緩沖區(qū)之間的映射關(guān)系,進(jìn)行內(nèi)存的一次性申請(qǐng)。
其中,視頻流的獲取由調(diào)度服務(wù)向下級(jí)平臺(tái)/設(shè)備發(fā)起請(qǐng)求,由下級(jí)平臺(tái)/設(shè)備將碼流發(fā)給實(shí)時(shí)視頻流存儲(chǔ)服務(wù)。
雙緩沖為主緩沖區(qū)和備用緩沖區(qū)兩個(gè)緩沖區(qū),主緩沖區(qū)和備用緩沖區(qū)交替使用,雙緩沖區(qū)存儲(chǔ)結(jié)構(gòu)如圖3所示,每個(gè)緩沖區(qū)結(jié)構(gòu)為{相機(jī)編號(hào)、存儲(chǔ)狀態(tài)、當(dāng)前已經(jīng)存儲(chǔ)的數(shù)據(jù)大小、I幀列表信息(I幀偏移量、時(shí)間戳)}。
雙緩沖區(qū)數(shù)據(jù)保存過程如下:
獲取當(dāng)前緩沖區(qū)剩余空間,兩個(gè)緩沖區(qū)默認(rèn)大小設(shè)置可以根據(jù)實(shí)際情況進(jìn)行設(shè)置,當(dāng)接收到一個(gè)完整的I幀序列時(shí)數(shù)據(jù)時(shí),將該數(shù)據(jù)存入主緩沖區(qū),當(dāng)不是一個(gè)完整的I幀序列數(shù)據(jù)時(shí),則將該數(shù)據(jù)保存在臨時(shí)緩沖區(qū)。如果緩沖區(qū)剩余空間小于接收到的I幀數(shù)據(jù),則將該緩沖區(qū)標(biāo)志設(shè)置為已滿,并將緩沖區(qū)剩余空間進(jìn)行占位填充,將已經(jīng)接收到的數(shù)據(jù)保存至另一個(gè)緩沖區(qū)中,并將I幀的時(shí)間戳信息保存起來,更新數(shù)據(jù)總大小信息。
步驟4、遍歷相機(jī)列表信息,創(chuàng)建視頻流存儲(chǔ)線程和視頻流接收線程,每路視頻對(duì)應(yīng)一個(gè)存儲(chǔ)線程和一個(gè)視頻流接收線程,同時(shí)建立相機(jī)與存儲(chǔ)線程、視頻流接收線程之間的映射關(guān)系,并向調(diào)度服務(wù)發(fā)起實(shí)時(shí)視頻播放請(qǐng)求。
步驟5、調(diào)度服務(wù)向下級(jí)平臺(tái)或設(shè)備發(fā)起視頻點(diǎn)播請(qǐng)求,為每路視頻開啟一個(gè)存儲(chǔ)線程和一個(gè)視頻流接收線程。
步驟6、視頻流接收線程在接收到視頻流后,將數(shù)據(jù)保存到對(duì)應(yīng)的緩沖區(qū)中,存儲(chǔ)線程根據(jù)緩沖區(qū)存滿標(biāo)志將視頻流存儲(chǔ)到云平臺(tái)上,并將時(shí)間節(jié)點(diǎn)信息保存至數(shù)據(jù)庫中。
視頻流接收線程接收視頻流的具體方式為:
判斷視頻流的長(zhǎng)度是否大于RTP包頭長(zhǎng)度,如果小于則直接丟棄;
否則獲取到視頻流數(shù)據(jù),獲取視頻幀類型;
如果是I幀,判斷臨時(shí)接收緩沖區(qū)中是否有數(shù)據(jù),如果沒有,則直接將數(shù)據(jù)保存至臨時(shí)緩沖區(qū);如果有數(shù)據(jù),則將臨時(shí)緩沖區(qū)中的數(shù)據(jù)保存至緩沖區(qū)中,將接收到的I幀保存至臨時(shí)緩沖區(qū);
如果是P幀,判斷是否找到了I幀,如果沒有找到,則丟棄掉,如果已經(jīng)找到,則將視頻流保存至臨時(shí)緩沖區(qū)中;
每次在處理完成后更新接收序號(hào)和接收時(shí)間戳信息。
I幀序列數(shù)據(jù)入雙緩沖區(qū)實(shí)現(xiàn)流程如圖4所示,具體步驟如下:
步驟11、根據(jù)獲取到I幀序列數(shù)據(jù)、數(shù)據(jù)長(zhǎng)度、I幀絕對(duì)時(shí)間信息;
步驟12、獲取主緩沖區(qū)的狀態(tài),判斷備用緩沖區(qū)中是否有數(shù)據(jù),如果有數(shù)據(jù),則執(zhí)行步驟13;否則執(zhí)行步驟14;
步驟13、獲取備用緩沖區(qū)的剩余空間,判斷備用緩沖區(qū)的剩余空間是否存夠存儲(chǔ),如果是,則將數(shù)據(jù)拷貝至備用緩沖區(qū),執(zhí)行步驟15;否則將備用緩沖區(qū)的狀態(tài)設(shè)置成已滿,將剩下的空間進(jìn)行占位填充,同時(shí)將數(shù)據(jù)拷貝至主緩沖區(qū),執(zhí)行步驟15
步驟14、判斷主緩沖區(qū)的剩余空間是否足夠存儲(chǔ),如果足夠存儲(chǔ),則將數(shù)據(jù)拷貝至主緩沖區(qū),執(zhí)行步驟15;否則將主緩沖區(qū)的狀態(tài)設(shè)置為已滿,將剩下的空間進(jìn)行占位填充,并將數(shù)據(jù)拷貝至備用緩沖區(qū),執(zhí)行步驟15;
步驟15、處理完畢。
視頻流存儲(chǔ)線程實(shí)現(xiàn)流程如圖4所示,具體步驟如下:
步驟21、根據(jù)配置文件中的云平臺(tái)配置信息初始化云平臺(tái)接口、相機(jī)編號(hào)以及雙緩沖區(qū)信息;
步驟22、啟動(dòng)視頻流存儲(chǔ)線程;
步驟23、判斷是否接收到服務(wù)的退出命令,如果接收到退出命令,則退出循環(huán),等待程序退出,否則執(zhí)行步驟24;
步驟24、判斷主緩沖區(qū)是否已滿,如果已滿,則調(diào)用云平臺(tái)存儲(chǔ)接口將數(shù)據(jù)保存至云平臺(tái),如果存儲(chǔ)成功,則將視頻片段信息保存至數(shù)據(jù)庫,重置緩沖區(qū),執(zhí)行步驟25;
步驟25、判斷備用緩沖區(qū)是否已經(jīng)寫滿,如果備用緩沖區(qū)已經(jīng)寫滿,則調(diào)用云平臺(tái)存儲(chǔ)接口將數(shù)據(jù)保存至云平臺(tái),如果存儲(chǔ)成功,則將視頻片段信息保存至數(shù)據(jù)庫,重置緩沖區(qū),執(zhí)行步驟26;
步驟26、進(jìn)行下一輪的判斷,執(zhí)行步驟23。
存儲(chǔ)接口通過云平臺(tái)配置信息進(jìn)行初始化。
視頻流接收線程實(shí)現(xiàn)流程如圖5所示,具體步驟如下:
步驟31、初始化視頻流接收線程,包括相機(jī)編號(hào)、雙緩沖區(qū);
步驟32、生成視頻流接收端口,并設(shè)置臨時(shí)接收緩沖區(qū);
步驟33、啟動(dòng)視頻流接收線程;
步驟34、在視頻流接收線程中判斷是否接收到退出命令,如果接收到,則執(zhí)行步驟35,否則執(zhí)行步驟36;
步驟35、停止接收視頻流,并判斷雙緩沖區(qū)中是否有需要存儲(chǔ)的視頻數(shù)據(jù),如果有,將緩沖區(qū)的存滿標(biāo)志置成已滿,并進(jìn)行數(shù)據(jù)占位填充(保證整個(gè)緩沖區(qū)都是填滿的),如果沒有,則退出循環(huán),等待線程退出;
步驟36、準(zhǔn)備接收視頻流,判斷是否接收到線程的退出信號(hào),如果接收到,則執(zhí)行步驟35;否則執(zhí)行步驟37;
步驟37、獲取視頻數(shù)據(jù)、幀類型,如果是I幀,判斷基準(zhǔn)時(shí)間是否存在,(RTP((Realtime Transport Protocol,實(shí)時(shí)傳輸協(xié)議))數(shù)據(jù)獲取到的時(shí)間戳都是相對(duì)時(shí)間),如果不存在,則將基準(zhǔn)時(shí)間設(shè)置為當(dāng)前時(shí)間,根據(jù)RTP數(shù)據(jù)的時(shí)間戳信息以及基準(zhǔn)時(shí)間更新I幀絕對(duì)時(shí)間,執(zhí)行步驟38;如果不是I幀,則執(zhí)行步驟39;
步驟38、將之前保存的整個(gè)I幀序列保存至雙緩沖區(qū),將新接收到I幀保存至臨時(shí)接收緩沖區(qū),并更新序號(hào)、時(shí)間戳信息,執(zhí)行步驟36;
步驟39、判斷是否已經(jīng)接收到I幀,如果已經(jīng)收到了I幀,則將接收到的視頻數(shù)據(jù)保存至臨時(shí)接收緩沖區(qū),并更新序號(hào)、時(shí)間戳信息,執(zhí)行步驟36;否則數(shù)據(jù)丟棄,更新序號(hào)、時(shí)間戳信息,執(zhí)行步驟36。
步驟7在存儲(chǔ)完成后,重置相機(jī)的緩沖區(qū),同時(shí)將視頻流存儲(chǔ)信息保存到數(shù)據(jù)庫中;重復(fù)步驟3-7,直到接收到退出指令。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。