專利名稱:一種實(shí)時(shí)流文件存儲(chǔ)裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種通信技術(shù)領(lǐng)域?qū)崟r(shí)流文件存儲(chǔ)的方法及其裝置,尤其涉及視頻監(jiān)控業(yè)務(wù)領(lǐng)域的錄像存儲(chǔ)方法和裝置。
背景技術(shù):
視頻監(jiān)控編碼器(又稱監(jiān)控前端),采集現(xiàn)場的圖像、聲音,經(jīng)壓縮編碼后在一定的條件下進(jìn)行本地存儲(chǔ)或向指定的流媒體服務(wù)器發(fā)送流媒體數(shù)據(jù)的內(nèi)嵌相應(yīng)軟件的設(shè)備,也包含攝像頭和云臺(tái)。監(jiān)控前端錄像主要有三種錄像定時(shí)錄像、手動(dòng)錄像、告警錄像。定時(shí)錄像是由用戶根據(jù)需要設(shè)定任意時(shí)間段進(jìn)行錄像,到了設(shè)定的開始時(shí)間,監(jiān)控前端會(huì)自動(dòng)錄像;到了設(shè)定的結(jié)束時(shí)間,監(jiān)控前端就會(huì)自動(dòng)停止錄像。手動(dòng)錄像是通過監(jiān)控前端來設(shè)定錄像任務(wù),讓監(jiān)控前端立即開始錄像,錄像時(shí)間為手動(dòng)錄像設(shè)定的時(shí)間。告警錄像是監(jiān)控前端監(jiān)控到有異常情況時(shí),立即進(jìn)行錄像。
現(xiàn)有技術(shù)是對每個(gè)錄像任務(wù)直接根據(jù)MPEG4標(biāo)準(zhǔn)(Moving PictureExperts Group運(yùn)動(dòng)圖像專家組)保存為一個(gè)MPEG4文件,但這種方法有一定的缺陷,對于告警錄像或手動(dòng)錄像任務(wù),每一個(gè)告警錄像或手動(dòng)錄像任務(wù)會(huì)生成一個(gè)MPEG4文件,有時(shí)告警或手動(dòng)錄像時(shí)間比較短,生成的MPEG4文件比較小,導(dǎo)致硬盤上有很多小的文件碎片,影響硬盤性能?,F(xiàn)有技術(shù)對于已經(jīng)錄制完成的MPEG4文件,可以進(jìn)行播放和各種快進(jìn),快退,定位播放等操作,但對于正在錄像中文件,由于MPEG4固有格式限定了在MPEG4文件沒有完全生成前,其索引信息是不完整的,無法進(jìn)行實(shí)時(shí)播放。
發(fā)明內(nèi)容
本發(fā)明定義了一種實(shí)時(shí)流文件存儲(chǔ)格式及其存儲(chǔ)方法與裝置,能夠解決MPEG4文件錄像存儲(chǔ)過程中,長時(shí)間錄像導(dǎo)致文件碎片過多的問題。從而,進(jìn)一步地還能解決正在錄像中的文件不可進(jìn)行查找或播放等操作的問題。
本發(fā)明的主要思想是將實(shí)時(shí)流文件分為邏輯層和物理層文件,每個(gè)錄像任務(wù)在邏輯層上對應(yīng)多個(gè)邏輯MPEG4文件,每個(gè)邏輯MPEG4文件存儲(chǔ)一定時(shí)長(可自定義,比如一個(gè)邏輯文件存儲(chǔ)一分鐘時(shí)長)的錄像數(shù)據(jù),這樣每個(gè)邏輯MPEG4文件是一個(gè)完整的MPEG4文件,可以播放和進(jìn)行快進(jìn),快退,定位播放,多個(gè)邏輯MPEG4文件保存在一個(gè)物理文件上(比如一段錄像60分鐘,就包含60個(gè)邏輯文件),同時(shí)向數(shù)據(jù)庫中記錄該邏輯文件信息和在對應(yīng)物理文件中的位置。
本發(fā)明公開的一種實(shí)時(shí)流文件存儲(chǔ)裝置,包括 監(jiān)控前端,用于實(shí)時(shí)采集音視頻信號(hào); 編碼模塊,用于對監(jiān)控前端采集的音視頻信號(hào)進(jìn)行壓縮編碼; RTP(Real-time Transport Protocol實(shí)時(shí)傳送協(xié)議)打包模塊,用于從編碼裝置獲取碼流并將其轉(zhuǎn)換成多個(gè)RTP包; 錄像任務(wù)管理模塊,用于檢測并接收用戶下發(fā)的錄像任務(wù)和播放任務(wù),并將所述錄像任務(wù)下發(fā)到錄像存儲(chǔ)模塊,將所述播放任務(wù)下發(fā)到錄像播放模塊; 錄像存儲(chǔ)模塊,用于接收所述錄像任務(wù)管理模塊下發(fā)的所述錄像任務(wù),并根據(jù)所述錄像任務(wù)創(chuàng)建邏輯層和物理層文件存儲(chǔ)RTP包,每個(gè)錄像任務(wù)在邏輯層上對應(yīng)多個(gè)邏輯MPEG4文件,每個(gè)邏輯MPEG4文件存儲(chǔ)預(yù)設(shè)時(shí)間長度的錄像數(shù)據(jù),且多個(gè)邏輯MPEG4文件保存在一個(gè)物理文件上,與物理文件形成映射關(guān)系。
錄像播放模塊,用于接收所述錄像任務(wù)管理模塊下發(fā)的所述播放任務(wù),從存儲(chǔ)模塊中調(diào)取錄像資源進(jìn)行播放。
上述實(shí)時(shí)流文件存儲(chǔ)裝置中,所述錄像管理模塊接受用戶下發(fā)的錄像任務(wù)包括定時(shí)錄像任務(wù)、告警錄像任務(wù)、手動(dòng)錄像任務(wù); 對于所述定時(shí)錄像任務(wù),所述錄像任務(wù)管理模塊還用于判斷當(dāng)前時(shí)間是否到定時(shí)錄像開始時(shí)間,是,則將定時(shí)錄像任務(wù)下發(fā)到錄像存儲(chǔ)模塊開始存儲(chǔ)錄像碼流;并用于判斷當(dāng)前時(shí)間是否到定時(shí)錄像結(jié)束時(shí)間,是,則結(jié)束錄像; 對于所述告警錄像任務(wù),所述錄像任務(wù)管理模塊還用于獲取用戶設(shè)定的預(yù)錄時(shí)長與最小告警時(shí)長,并根據(jù)所述預(yù)錄時(shí)長創(chuàng)建預(yù)錄像緩沖區(qū),所述預(yù)錄像緩沖區(qū)用于記錄觸發(fā)告警前的錄像;所述錄像任務(wù)管理模塊還用于判斷是否已經(jīng)啟動(dòng)了定時(shí)錄像任務(wù);若已經(jīng)啟動(dòng),所述錄像任務(wù)管理模塊還用于判斷所述預(yù)錄時(shí)間加上所述最小告警時(shí)長對應(yīng)的時(shí)間段是否被定時(shí)錄像所在時(shí)間段包含;若接到告警任務(wù)時(shí)未啟動(dòng)定時(shí)錄像任務(wù)或所述預(yù)錄時(shí)間加上所述最小告警時(shí)長對應(yīng)的時(shí)間段未被定時(shí)錄像包含,則所述錄像任務(wù)管理模塊還用于將接到告警任務(wù)之前緩存的所述預(yù)錄時(shí)長內(nèi)的預(yù)錄像碼流存入錄像存儲(chǔ)模塊。
對于所述手動(dòng)錄像任務(wù),所述錄像任務(wù)管理模塊還用于判斷是否已經(jīng)啟動(dòng)定時(shí)錄像以及手動(dòng)錄像時(shí)長所在的時(shí)間段是否被定時(shí)錄像所包含。
更進(jìn)一步地,所述實(shí)時(shí)流文件存儲(chǔ)裝置中所述錄像任務(wù)管理模塊還用于維護(hù)兩個(gè)表格錄像任務(wù)表格tblTask和錄像記錄表格tblRecord; 所述錄像任務(wù)表格tblTask用于記錄用戶下發(fā)的每個(gè)錄像任務(wù)的信息,包括錄像任務(wù)編號(hào),錄像起始時(shí)間,結(jié)束時(shí)間以及錄像類型; 所述錄像記錄表格tblRecord用于記錄每個(gè)錄像任務(wù)的信息,包括錄像任務(wù)編號(hào)、錄像物理文件名、錄像邏輯文件名、邏輯文件在物理文件中的起始存儲(chǔ)位置以及邏輯文件在物理文件中的結(jié)束存儲(chǔ)位置。
根據(jù)本發(fā)明提供的存儲(chǔ)裝置,本發(fā)明還公開了一種實(shí)施流文件存儲(chǔ)方法,包括下述步驟 啟動(dòng)監(jiān)控前端采集音視頻信號(hào),并將所述音視頻信號(hào)發(fā)送到音視頻編碼器; 音視頻編碼器對采集的數(shù)據(jù)進(jìn)行壓縮編碼后發(fā)送到RTP打包裝置; RTP打包裝置將獲得的碼流轉(zhuǎn)換為多個(gè)RTP包; 錄像任務(wù)管理模塊檢測用戶指令,檢測到有錄像任務(wù)則將所述錄像任務(wù)下發(fā)給錄像存儲(chǔ)模塊,所述錄像任務(wù)包括定時(shí)錄像任務(wù)、告警錄像任務(wù)、手動(dòng)錄像任務(wù); 錄像存儲(chǔ)模塊接收所述錄像任務(wù)后開始存儲(chǔ)所述RTP包,針對該錄像任務(wù)創(chuàng)建物理層文件和邏輯層文件,每個(gè)錄像任務(wù)在邏輯層上對應(yīng)多個(gè)邏輯文件,每個(gè)邏輯文件存儲(chǔ)預(yù)設(shè)時(shí)間長度的錄像數(shù)據(jù),所述多個(gè)邏輯文件保存在一個(gè)物理文件上,建立所述物理文件和所述多個(gè)邏輯文件的映射關(guān)系,然后將所述RTP包寫入邏輯文件,實(shí)際是向邏輯文件映射在物理文件的偏移起始位置寫入。
在上述實(shí)施流文件存儲(chǔ)方法中,當(dāng)所述錄像任務(wù)管理模塊檢測到用戶下發(fā)定時(shí)錄像任務(wù)時(shí),所述實(shí)時(shí)流文件存儲(chǔ)方法還包括所述錄像任務(wù)管理模塊判斷若當(dāng)前時(shí)間已到定時(shí)錄像開始時(shí)間,則將定時(shí)錄像任務(wù)下發(fā)至錄像存儲(chǔ)裝置,判斷若當(dāng)前時(shí)間到了定時(shí)錄像結(jié)束時(shí)間,則結(jié)束本次錄像存儲(chǔ); 當(dāng)所述錄像任務(wù)管理模塊檢測到用戶下發(fā)告警錄像任務(wù)時(shí),所述實(shí)時(shí)流文件存儲(chǔ)方法還包括 所述錄像任務(wù)管理模塊獲取用戶設(shè)定的預(yù)錄時(shí)長與最小告警時(shí)長; 并判斷若已經(jīng)啟動(dòng)了定時(shí)錄像任務(wù)且所述預(yù)錄時(shí)間加上所述最小告警時(shí)長對應(yīng)的時(shí)間段都被定時(shí)錄像包含,則不用存儲(chǔ)所述告警錄像任務(wù);否則將接到告警任務(wù)之前緩存的所述預(yù)錄時(shí)長內(nèi)的預(yù)錄像碼流存入錄像存儲(chǔ)模塊,再存儲(chǔ)最小告警時(shí)長內(nèi)的錄像碼流; 當(dāng)所述錄像任務(wù)管理模塊檢測到用戶下發(fā)手動(dòng)錄像任務(wù)時(shí),所述實(shí)時(shí)流文件存儲(chǔ)方法還包括所述錄像任務(wù)管理模塊判斷若已經(jīng)啟動(dòng)定時(shí)錄像且手動(dòng)錄像時(shí)長所在的時(shí)間段被定時(shí)錄像所包含,則不用重復(fù)存儲(chǔ),否則根據(jù)手動(dòng)錄像時(shí)長開始錄像存儲(chǔ)。
更進(jìn)一步地,上述實(shí)時(shí)流文件存儲(chǔ)方法中,還包括 針對每個(gè)錄像任務(wù),所述錄像任務(wù)管理模塊在錄像任務(wù)結(jié)束時(shí)向錄像任務(wù)表格tblTask中記錄如下數(shù)據(jù)本次錄像任務(wù)編號(hào)、本次錄像起始時(shí)間、結(jié)束時(shí)間以及錄像類型; 針對每個(gè)錄像任務(wù),所述錄像任務(wù)管理模塊在錄像任務(wù)結(jié)束時(shí)向錄像記錄表格tblRecord中記錄本次錄像任務(wù)編號(hào)、錄像物理文件名、錄像邏輯文件名、邏輯文件在物理文件中的起始存儲(chǔ)位置以及邏輯文件在物理文件中的結(jié)束存儲(chǔ)位置。
采用本發(fā)明所述方法和裝置,與現(xiàn)有技術(shù)相比,解決了MPEG4文件存儲(chǔ)過程中,長時(shí)間錄像導(dǎo)致文件碎片過多問題,節(jié)省了占用的磁盤空間,提高了存儲(chǔ)效率。
圖1本發(fā)明裝置結(jié)構(gòu)示意圖; 圖2本發(fā)明存儲(chǔ)模塊中物理文件和邏輯文件映射關(guān)系圖; 圖3本發(fā)明實(shí)施流文件存儲(chǔ)方法的流程圖 圖4本發(fā)明定時(shí)錄像存儲(chǔ)處理的流程圖; 圖5本發(fā)明告警錄像存儲(chǔ)處理的流程圖; 圖6本發(fā)明手動(dòng)錄像存儲(chǔ)處理的流程圖。
具體實(shí)施例方式 本發(fā)明公開的實(shí)時(shí)流文件存儲(chǔ)方法能夠解決現(xiàn)有技術(shù)錄像文件碎片過多的問題。進(jìn)一步地也解決正在進(jìn)行錄像的文件不能讀取、播放的缺陷。本發(fā)明主要思想是為每個(gè)錄像任務(wù)分別創(chuàng)建邏輯層文件和物理層文件來存儲(chǔ)處理過的碼流,使得每個(gè)錄像任務(wù)在邏輯層上對應(yīng)多個(gè)邏輯MPEG4文件,每個(gè)邏輯MPEG4文件存儲(chǔ)預(yù)設(shè)時(shí)間長度的錄像數(shù)據(jù),且多個(gè)邏輯MPEG4文件保存在一個(gè)物理文件上,并記錄每個(gè)邏輯文件在物理文件上的起始存儲(chǔ)位置。這樣,邏輯文件與物理文件間就形成映射關(guān)系。本部分將對本發(fā)明公開的實(shí)時(shí)流文件存儲(chǔ)方法與存儲(chǔ)的裝置進(jìn)行纖細(xì)介紹。
如圖1所示,本發(fā)明的實(shí)時(shí)流文件存儲(chǔ)的裝置包括 101監(jiān)控前端,用于實(shí)時(shí)采集音視頻信號(hào); 102編碼模塊,用于對監(jiān)控前端采集的音視頻信號(hào)進(jìn)行壓縮編碼; 103RTP打包模塊,用于從編碼裝置獲取碼流并將其轉(zhuǎn)換成多個(gè)RTP包; 104錄像任務(wù)管理模塊,用于檢測并接收用戶下發(fā)的錄像任務(wù),并將所述錄像任務(wù)下發(fā)到錄像存儲(chǔ)模塊; 105錄像存儲(chǔ)模塊,用于接收所述錄像任務(wù)管理模塊下發(fā)的所述錄像任務(wù),并根據(jù)所述錄像任務(wù)創(chuàng)建邏輯層和物理層文件來存儲(chǔ)RTP包,并建立邏輯文件與物理文件間的映射關(guān)系; 106錄像播放模塊,用于接收所述錄像任務(wù)管理模塊下發(fā)的所述播放任務(wù),從存儲(chǔ)模塊中調(diào)取錄像資源進(jìn)行播放。
更進(jìn)一步地,錄像任務(wù)管理模塊接受用戶下發(fā)的錄像任務(wù)包括定時(shí)錄像任務(wù)、告警錄像任務(wù)、手動(dòng)錄像任務(wù); 對于所述定時(shí)錄像任務(wù),所述錄像任務(wù)管理模塊還用于判斷當(dāng)前時(shí)間是否到定時(shí)錄像開始時(shí)間,是,則將定時(shí)錄像任務(wù)下發(fā)到錄像存儲(chǔ)模塊開始存儲(chǔ)錄像碼流;并用于判斷當(dāng)前時(shí)間是否到定時(shí)錄像結(jié)束時(shí)間,是,則結(jié)束錄像; 對于所述告警錄像任務(wù),所述錄像任務(wù)管理模塊還用于獲取用戶設(shè)定的預(yù)錄時(shí)長與最小告警時(shí)長,并根據(jù)所述預(yù)錄時(shí)長創(chuàng)建預(yù)錄像緩沖區(qū),所述預(yù)錄像緩沖區(qū)用于記錄觸發(fā)告警前的錄像;所述錄像任務(wù)管理模塊還用于判斷是否已經(jīng)啟動(dòng)了定時(shí)錄像任務(wù);若已經(jīng)啟動(dòng),所述錄像任務(wù)管理模塊還用于判斷所述預(yù)錄時(shí)間加上所述最小告警時(shí)長對應(yīng)的時(shí)間段是否被定時(shí)錄像所在時(shí)間段包含,是,則不用存儲(chǔ)所述告警錄像任務(wù);若接到告警任務(wù)時(shí)未啟動(dòng)定時(shí)錄像任務(wù)或所述預(yù)錄時(shí)間加上所述最小告警時(shí)長對應(yīng)的時(shí)間段未被定時(shí)錄像包含,則所述錄像任務(wù)管理模塊還用于將告警錄像任務(wù)下發(fā)至錄像存儲(chǔ)模塊啟動(dòng)錄像存儲(chǔ),在存儲(chǔ)錄像之前先將接到告警任務(wù)之前緩存的所述預(yù)錄時(shí)長內(nèi)的預(yù)錄像碼流存入錄像存儲(chǔ)模塊。
對于所述手動(dòng)錄像任務(wù),所述錄像任務(wù)管理模塊還用于判斷是否已經(jīng)啟動(dòng)定時(shí)錄像以及手動(dòng)錄像時(shí)長所在的時(shí)間段是否被定時(shí)錄像所包含。
本發(fā)明公開的錄像存儲(chǔ)方法,是通過設(shè)置邏輯層文件和物理層文件來存儲(chǔ)碼流,并建立邏輯層文件和物理層文件之間的映射關(guān)系來實(shí)現(xiàn)的。如圖2所示,每個(gè)錄像任務(wù)在邏輯層上對應(yīng)多個(gè)邏輯MPEG4文件,lgcFile1.mp4、lgcFile2.mp4......lgcFilen.mp4(n為自然數(shù)),每個(gè)邏輯MPEG4文件存儲(chǔ)預(yù)設(shè)時(shí)間長度(每個(gè)lgcFile1.mp4文件存儲(chǔ)錄像的時(shí)長可以根據(jù)需要預(yù)先設(shè)定好,比如設(shè)定每個(gè)lgcFile1.mp4文件存儲(chǔ)時(shí)長1分鐘的錄像)的錄像數(shù)據(jù),多個(gè)邏輯MPEG4文件保存在一個(gè)物理文件phyFile1.mp4上。將RTP包寫入邏輯文件,實(shí)際是向邏輯文件映射在物理文件的偏移起始位置寫入,在邏輯文件與物理文件間形成映射關(guān)系。
需要說明的是,在所述錄像任務(wù)管理模塊中,還預(yù)先設(shè)定了兩個(gè)表格錄像任務(wù)表格tblTask和錄像記錄表格tblRecord;錄像任務(wù)管理模塊還用于維護(hù)這兩個(gè)表格。其中錄像任務(wù)表格tblTask設(shè)定了一些信息項(xiàng),用于記錄每個(gè)錄像任務(wù)的統(tǒng)計(jì)信息,包括錄像任務(wù)編號(hào),錄像起始時(shí)間,結(jié)束時(shí)間以及錄像類型等。錄像記錄表格tblRecord也設(shè)定了一些信息項(xiàng),用于記錄每個(gè)錄像任務(wù)的存儲(chǔ)信息,包括錄像任務(wù)編號(hào)、錄像物理文件名、錄像邏輯文件名、邏輯文件在物理文件中的起始存儲(chǔ)位置以及邏輯文件在物理文件中的結(jié)束存儲(chǔ)位置等信息。上述錄像任務(wù)表格和錄像記錄表格,可以是excel格式,也可以是其他形式,表格中也可以根據(jù)需要預(yù)先設(shè)定的其他信息項(xiàng)。信息項(xiàng)寫入表格后,在存儲(chǔ)錄像任務(wù)的過程中,就會(huì)在信息項(xiàng)對應(yīng)位置自動(dòng)記錄相關(guān)信息。
舉例說明,如下文表格表1和表2即為兩個(gè)預(yù)先設(shè)定的錄像任務(wù)表格tblTask和錄像記錄表格tblRecord的實(shí)施例。如表1所示是錄像任務(wù)表格記錄的情況,記錄錄像任務(wù)編號(hào),錄像任務(wù)起止時(shí)間,錄像類型,錄像時(shí)長等;如表2所示是錄像任務(wù)表格記錄的情況,記錄錄像任務(wù)編號(hào),錄像物理文件名、錄像邏輯文件名、邏輯文件在物理文件中的起始存儲(chǔ)位置以及邏輯文件在物理文件中的結(jié)束存儲(chǔ)位置等信息。
表1 表2 下面結(jié)合具體實(shí)施例和附圖對本發(fā)明技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。
實(shí)施例一 下面結(jié)合說明書附圖對本發(fā)明公開的實(shí)時(shí)流文件存儲(chǔ)方法作詳細(xì)的介紹,以便更好的理解本發(fā)明。
如圖3所示,為本發(fā)明實(shí)施流文件存儲(chǔ)方法的流程圖。本發(fā)明提供的實(shí)施流文件存儲(chǔ)方法過程如下 301啟動(dòng)監(jiān)控前端采集音視頻信號(hào),發(fā)送至編碼模塊; 302編碼模塊通過音視頻編碼器對采集的數(shù)據(jù)進(jìn)行壓縮編碼后發(fā)給RTP打包裝置; 303通過RTP打包裝置從編碼器獲取原始碼流并將其轉(zhuǎn)換為多個(gè)RTP包; 304錄像任務(wù)管理模塊檢測用戶指令,檢測到有錄像任務(wù)則將所述錄像任務(wù)下發(fā)給錄像存儲(chǔ)模塊; 305錄像存儲(chǔ)模塊接收所述錄像任務(wù)后開始存儲(chǔ)所述RTP包,針對該錄像任務(wù)創(chuàng)建物理層文件和邏輯層文件,每個(gè)錄像任務(wù)在邏輯層上對應(yīng)多個(gè)邏輯文件,每個(gè)邏輯文件存儲(chǔ)預(yù)設(shè)時(shí)間長度的錄像數(shù)據(jù),所述多個(gè)邏輯文件保存在一個(gè)物理文件上,建立所述物理文件和所述多個(gè)邏輯文件的映射關(guān)系,然后將所述RTP包寫入邏輯文件,實(shí)際是向邏輯文件映射在物理文件的偏移起始位置寫入; 306錄像任務(wù)管理模塊將本次錄像任務(wù)的信息記錄在錄像任務(wù)表格tblTask和錄像記錄表格tblRecord中。
實(shí)施例二 對于用戶下發(fā)的不同錄像任務(wù),錄像任務(wù)管理模塊對其進(jìn)行檢測與管理。當(dāng)接受到定時(shí)錄像任務(wù)時(shí),錄像任務(wù)管理模塊要先判斷當(dāng)前時(shí)間是否到定時(shí)錄像開始時(shí)間,到了定時(shí)錄像任務(wù)開始的時(shí)間,則將定時(shí)錄像任務(wù)下發(fā)到錄像存儲(chǔ)模塊開始存儲(chǔ)錄像碼流;錄像任務(wù)管理模塊還要判斷當(dāng)前時(shí)間是否到定時(shí)錄像結(jié)束時(shí)間,到了結(jié)束時(shí)間,則結(jié)束錄像存儲(chǔ)模塊的存儲(chǔ)。
如圖4所示,為錄像任務(wù)管理模塊處理定時(shí)錄像任務(wù)的流程圖,步驟如下 401錄像任務(wù)管理模塊接收定時(shí)錄像任務(wù); 402錄像任務(wù)管理模塊判斷是否到定時(shí)錄像開始時(shí)間,是,則跳轉(zhuǎn)到403;否,則返回步驟402繼續(xù)判斷; 403錄像存儲(chǔ)模塊創(chuàng)建物理層文件和邏輯層文件,建立邏輯文件和物理文件的映射關(guān)系,然后將RTP包寫入邏輯文件,實(shí)際是向邏輯文件映射在物理文件的偏移起始位置寫入; 404錄像任務(wù)管理模塊判斷是否到錄像定時(shí)錄像結(jié)束時(shí)間,是,則跳轉(zhuǎn)到405;否,則返回步驟404繼續(xù)判斷; 405結(jié)束錄像存儲(chǔ),錄像任務(wù)管理模塊將本次錄像任務(wù)的信息對應(yīng)記錄在錄像任務(wù)表格tblTask和錄像記錄表格tblRecord。
實(shí)施例三 當(dāng)接收到告警錄像任務(wù)時(shí),錄像任務(wù)管理模塊首先獲取設(shè)定的預(yù)錄時(shí)長(假設(shè)10秒)與最小告警時(shí)長,然后判斷是否已經(jīng)啟動(dòng)了定時(shí)錄像任務(wù);若已經(jīng)啟動(dòng)定時(shí)錄像任務(wù),錄像任務(wù)管理模塊還要判斷所述預(yù)錄時(shí)間加上所述最小告警時(shí)長對應(yīng)的時(shí)間段是否被定時(shí)錄像所在時(shí)間段包含,要是包含在內(nèi),則不用存儲(chǔ)所述告警錄像任務(wù)了。若是錄像任務(wù)管理模塊判斷接到告警任務(wù)時(shí)未啟動(dòng)定時(shí)錄像任務(wù)或者所述預(yù)錄時(shí)間加上所述最小告警時(shí)長對應(yīng)的時(shí)間段未被定時(shí)錄像包含,則根據(jù)所述預(yù)錄時(shí)長創(chuàng)建預(yù)錄像緩沖區(qū),用于記錄觸發(fā)告警前(10秒)的錄像,將所述預(yù)錄時(shí)長碼流先存入錄像存儲(chǔ)模塊,錄像存儲(chǔ)模塊再對告警時(shí)間后的碼流予以存儲(chǔ)。
告警錄像存儲(chǔ)過程如圖5所示 501錄像任務(wù)管理模塊接收告警錄像任務(wù); 502錄像任務(wù)管理模塊獲取用戶設(shè)定的預(yù)錄時(shí)長與最小告警時(shí)長,并根據(jù)預(yù)錄時(shí)長創(chuàng)建預(yù)錄緩沖區(qū); 503錄像任務(wù)管理模塊判斷是否啟動(dòng)定時(shí)錄像任務(wù);是,則跳轉(zhuǎn)到步驟504;否則跳轉(zhuǎn)到505; 504錄像任務(wù)管理模塊判斷預(yù)錄時(shí)長加上最小告警時(shí)長對應(yīng)的時(shí)間段是否被定時(shí)錄像包含,是,則不用存儲(chǔ)所述告警錄像任務(wù);否,則跳轉(zhuǎn)到步驟505; 505錄像存儲(chǔ)模塊創(chuàng)建物理層文件和邏輯層文件,先將接到告警任務(wù)之前緩存在預(yù)錄緩沖區(qū)的預(yù)錄時(shí)長內(nèi)的預(yù)錄像碼流存入; 506錄像存儲(chǔ)模塊再存儲(chǔ)最小告警時(shí)長內(nèi)的錄像碼流; 507存儲(chǔ)完畢,錄像任務(wù)管理模塊將本次錄像任務(wù)的信息對應(yīng)記錄在錄像任務(wù)表格tblTask和錄像記錄表格tblRecord。
實(shí)施例四 手動(dòng)錄像存儲(chǔ)過程如圖6所示 601錄像任務(wù)管理模塊接收手動(dòng)錄像任務(wù); 602錄像任務(wù)管理模塊判斷是否已經(jīng)啟動(dòng)定時(shí)錄像,是,跳轉(zhuǎn)到步驟603;否,跳轉(zhuǎn)到步驟604; 603錄像任務(wù)管理模塊判斷手動(dòng)錄像時(shí)長所在的時(shí)間段被定時(shí)錄像所包含,是,不用重復(fù)存儲(chǔ)錄像;否,跳轉(zhuǎn)到604; 604錄像存儲(chǔ)模塊創(chuàng)建物理層文件和邏輯層文件,建立邏輯文件和物理文件的映射關(guān)系,然后將所述RTP包寫入邏輯文件,實(shí)際是向邏輯文件映射在物理文件的偏移起始位置寫入; 605錄像任務(wù)管理模塊接到用戶停止手動(dòng)錄像的指令則結(jié)束存儲(chǔ),則將本次錄像任務(wù)的信息對應(yīng)記錄在錄像任務(wù)表格tblTask和錄像記錄表格tblRecord。
利用本發(fā)明公開的方法與裝置,當(dāng)告警錄像或手動(dòng)錄像時(shí)間比較短時(shí),生成錄像文件可能被定時(shí)錄像文件包含。反過來也是一樣,定時(shí)錄像所在時(shí)間段也有可能被手動(dòng)錄像或告警錄像包含。總之,根據(jù)本發(fā)明的精神,本發(fā)明的實(shí)施方法可以有多種變化。這樣一來,減少了小的文件碎片的生成。進(jìn)一步地,在播放時(shí),根據(jù)用戶的播放需求,先在數(shù)據(jù)庫中找到相關(guān)的邏輯文件和對應(yīng)物理文件中的位置,進(jìn)行播放相關(guān)邏輯文件,從而解決正在錄像的文件無法播放問題,,達(dá)到了用戶對錄像文件實(shí)時(shí)播放的要求。告警錄像和手動(dòng)錄像如果包含在定時(shí)錄像的時(shí)段里,就不用單獨(dú)存儲(chǔ),從定時(shí)錄像里查找、播放即可。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明所附的權(quán)利要求的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種實(shí)時(shí)流文件存儲(chǔ)裝置,其特征在于包括
錄像存儲(chǔ)模塊,用于針對接收到的錄像存儲(chǔ)任務(wù)創(chuàng)建邏輯層和物理層文件存儲(chǔ)碼流,每個(gè)所述錄像存儲(chǔ)任務(wù)對應(yīng)多個(gè)邏輯文件,每個(gè)邏輯文件存儲(chǔ)預(yù)設(shè)時(shí)間長度的碼流,多個(gè)邏輯文件保存在一個(gè)物理文件上,所述邏輯文件與所述物理文件形成映射關(guān)系。
2.根據(jù)權(quán)利要求1所述實(shí)時(shí)流文件存儲(chǔ)裝置,其特征在于,所述實(shí)時(shí)流文件存儲(chǔ)裝置還包括錄像任務(wù)管理模塊,
所述錄像任務(wù)管理模塊用于在判斷滿足所述錄像存儲(chǔ)任務(wù)執(zhí)行條件時(shí),控制所述錄像存儲(chǔ)模塊執(zhí)行所述錄像存儲(chǔ)任務(wù)。
3.根據(jù)權(quán)利要求2所述實(shí)時(shí)流文件存儲(chǔ)裝置,其特征在于,所述錄像存儲(chǔ)任務(wù)為定時(shí)錄像任務(wù),所述錄像任務(wù)管理模塊,具體用于判斷當(dāng)前時(shí)間是否到定時(shí)錄像開始時(shí)間,是,則將定時(shí)錄像任務(wù)下發(fā)到錄像存儲(chǔ)模塊開始存儲(chǔ)實(shí)時(shí)傳送協(xié)議RTP打包模塊發(fā)送來的碼流;并用于判斷當(dāng)前時(shí)間是否到定時(shí)錄像結(jié)束時(shí)間,是,則結(jié)束錄像任務(wù)。
4.根據(jù)權(quán)利要求2所述實(shí)時(shí)流文件存儲(chǔ)裝置,其特征在于,所述錄像存儲(chǔ)任務(wù)為告警錄像任務(wù),
所述錄像任務(wù)管理模塊,具體用于獲取設(shè)定的預(yù)錄時(shí)長與最小告警時(shí)長,并根據(jù)所述預(yù)錄時(shí)長創(chuàng)建預(yù)錄像緩沖區(qū),所述預(yù)錄像緩沖區(qū)用于記錄觸發(fā)告警前的錄像;
所述錄像任務(wù)管理模塊還用于判斷是否已經(jīng)啟動(dòng)了定時(shí)錄像任務(wù);若已經(jīng)啟動(dòng),所述錄像任務(wù)管理模塊還用于判斷所述預(yù)錄時(shí)長加上所述最小告警時(shí)長對應(yīng)的時(shí)間段是否被定時(shí)錄像所在時(shí)間段包含,是,則不用存儲(chǔ)所述告警錄像任務(wù);若接到告警任務(wù)時(shí)未啟動(dòng)定時(shí)錄像任務(wù)或所述預(yù)錄時(shí)間加上所述最小告警時(shí)長對應(yīng)的時(shí)間段未被定時(shí)錄像包含,則所述錄像任務(wù)管理模塊還用于將告警錄像任務(wù)下發(fā)至錄像存儲(chǔ)模塊啟動(dòng)錄像存儲(chǔ),先將接到告警任務(wù)之前緩存的所述預(yù)錄時(shí)長內(nèi)的預(yù)錄像碼流存入錄像存儲(chǔ)模塊,然后錄像存儲(chǔ)模塊繼續(xù)存儲(chǔ)告警錄像。
5.根據(jù)權(quán)利要求2所述實(shí)時(shí)流文件存儲(chǔ)裝置,其特征在于,所述錄像存儲(chǔ)任務(wù)為手動(dòng)錄像任務(wù),所述錄像任務(wù)管理模塊,具體用于判斷是否已經(jīng)啟動(dòng)定時(shí)錄像以及手動(dòng)錄像時(shí)長所在的時(shí)間段是否被定時(shí)錄像所包含,若已經(jīng)啟動(dòng)了定時(shí)錄像任務(wù),且所述手動(dòng)錄像時(shí)長對應(yīng)的時(shí)間段被定時(shí)錄像時(shí)間段包含,則不用存儲(chǔ)所述告警錄像任務(wù);否則錄像任務(wù)管理模塊將手動(dòng)錄像任務(wù)下發(fā)至錄像存儲(chǔ)模塊,啟動(dòng)錄像存儲(chǔ)。
6.根據(jù)權(quán)利要求2所述實(shí)時(shí)流文件存儲(chǔ)裝置,其特征在于,所述錄像任務(wù)管理模塊還用于維護(hù)兩個(gè)表格錄像任務(wù)表格tblTask和錄像記錄表格tblRecord;
所述錄像任務(wù)表格tblTask用于記錄每個(gè)錄像任務(wù)的統(tǒng)計(jì)信息;所述錄像記錄表格tblRecord用于記錄每個(gè)錄像任務(wù)的存儲(chǔ)信息。
7.根據(jù)權(quán)利要求1-6中任一項(xiàng)所述的實(shí)時(shí)流文件存儲(chǔ)裝置,其特征在于,還包括監(jiān)控前端、編碼模塊、RTP打包模塊,其中
所述監(jiān)控前端用于實(shí)時(shí)采集音視頻信號(hào);
所述編碼模塊,用于對監(jiān)控前端采集的音視頻信號(hào)進(jìn)行壓縮編碼;
所述RTP打包模塊,用于從編碼模塊獲取原始碼流,并將其轉(zhuǎn)換成RTP包,所述錄像存儲(chǔ)模塊所存儲(chǔ)的碼流為經(jīng)過RTP打包模塊處理后的RTP包。
8.一種實(shí)時(shí)流文件存儲(chǔ)方法,適用于權(quán)利要求1所述的實(shí)時(shí)流文件存儲(chǔ)裝置,其特征在于,錄像存儲(chǔ)模塊根據(jù)接收到的錄像存儲(chǔ)任務(wù)存儲(chǔ)碼流,包括
針對所述錄像存儲(chǔ)任務(wù)創(chuàng)建物理層文件和邏輯層文件,所述每個(gè)錄像存儲(chǔ)任務(wù)對應(yīng)多個(gè)邏輯文件,每個(gè)邏輯文件存儲(chǔ)預(yù)設(shè)時(shí)間長度的碼流,所述多個(gè)邏輯文件保存在一個(gè)物理文件上,建立所述物理文件與邏輯文件的映射關(guān)系;
將碼流寫入邏輯文件,實(shí)際是向邏輯文件映射在物理文件的偏移起始位置寫入。
9.根據(jù)權(quán)利要求8所述的實(shí)時(shí)流文件存儲(chǔ)方法,所述錄像任務(wù)包括定時(shí)錄像任務(wù)、告警錄像任務(wù)、手動(dòng)錄像任務(wù),其特征在于,所述錄像存儲(chǔ)模塊接收碼流之前,還包括,錄像任務(wù)管理模塊接收用戶下發(fā)的錄像存儲(chǔ)任務(wù),并將所述錄像存儲(chǔ)任務(wù)下發(fā)給錄像存儲(chǔ)模塊。
10.根據(jù)權(quán)利要求8所述的實(shí)時(shí)流文件存儲(chǔ)方法,其特征在于,所述錄像任務(wù)管理模塊接收用戶下發(fā)的錄像存儲(chǔ)任務(wù),并將所述錄像存儲(chǔ)任務(wù)下發(fā)給錄像存儲(chǔ)模塊,還包括,
對于用戶下發(fā)的定時(shí)錄像任務(wù),所述錄像任務(wù)管理模塊判斷當(dāng)前時(shí)間是否到定時(shí)錄像開始時(shí)間,是,則將定時(shí)錄像任務(wù)下發(fā)至錄像存儲(chǔ)模塊開始存儲(chǔ),并判斷若當(dāng)前時(shí)間到了定時(shí)錄像結(jié)束時(shí)間,則結(jié)束本次錄像存儲(chǔ)任務(wù)。
11.根據(jù)權(quán)利要求8所述的實(shí)時(shí)流文件存儲(chǔ)方法,其特征在于,所述錄像任務(wù)管理模塊接收用戶下發(fā)的錄像存儲(chǔ)任務(wù),并將所述錄像存儲(chǔ)任務(wù)下發(fā)給錄像存儲(chǔ)模塊,還包括,
對于用戶下發(fā)的告警錄像任務(wù),所述錄像任務(wù)管理模塊獲取用戶設(shè)定的預(yù)錄時(shí)長與最小告警時(shí)長;
判斷若已經(jīng)啟動(dòng)了定時(shí)錄像任務(wù)且所述預(yù)錄時(shí)間加上所述最小告警時(shí)長對應(yīng)的時(shí)間段都被定時(shí)錄像包含,則不用存儲(chǔ)所述告警錄像任務(wù);否則將接到告警任務(wù)之前緩存的所述預(yù)錄時(shí)長內(nèi)的預(yù)錄像碼流存入錄像存儲(chǔ)模塊,再存儲(chǔ)最小告警時(shí)長內(nèi)的錄像碼流。
12.根據(jù)權(quán)利要求8所述的實(shí)時(shí)流文件存儲(chǔ)方法,其特征在于,所述錄像任務(wù)管理模塊接收用戶下發(fā)的錄像存儲(chǔ)任務(wù),并將所述錄像存儲(chǔ)任務(wù)下發(fā)給錄像存儲(chǔ)模塊,還包括,
對于用戶下發(fā)的手動(dòng)錄像任務(wù),所述錄像任務(wù)管理模塊判斷若已經(jīng)啟動(dòng)定時(shí)錄像且手動(dòng)錄像時(shí)長所在的時(shí)間段被定時(shí)錄像所包含,則不用重復(fù)存儲(chǔ),否則根據(jù)手動(dòng)錄像時(shí)長開始錄像存儲(chǔ)。
13.根據(jù)權(quán)利要求8所述的實(shí)時(shí)流文件存儲(chǔ)方法,其特征在于,還包括
所述錄像任務(wù)管理模塊在錄像任務(wù)結(jié)束時(shí)向錄像任務(wù)表格tblTask中記錄本次錄像任務(wù)的統(tǒng)計(jì)信息;
所述錄像任務(wù)管理模塊在錄像任務(wù)結(jié)束時(shí)向錄像記錄表格tblRecord中記錄本次錄像任務(wù)的存儲(chǔ)信息。
14.根據(jù)權(quán)利要求8-13中任一項(xiàng)所述的實(shí)時(shí)流文件存儲(chǔ)方法,其特征在于,所述錄像存儲(chǔ)模塊接收碼流之前,包括
啟動(dòng)監(jiān)控前端采集音視頻信號(hào),并將所述音視頻信號(hào)發(fā)送到音視頻編碼器;
音視頻編碼器對采集的數(shù)據(jù)進(jìn)行壓縮編碼后發(fā)送到RTP打包裝置;
RTP打包裝置將獲得的原始碼流轉(zhuǎn)換為多個(gè)RTP包。
全文摘要
本發(fā)明公開了一種實(shí)時(shí)流文件存儲(chǔ)裝置及其方法。本發(fā)明公開的實(shí)時(shí)流文件存儲(chǔ)裝置包括監(jiān)控前端、編碼模塊、實(shí)時(shí)傳送協(xié)議打包模塊、錄像任務(wù)管理模塊、錄像存儲(chǔ)模塊以及錄像播放模塊。按照本發(fā)明公開的方法,為每個(gè)錄像存儲(chǔ)任務(wù)分別創(chuàng)建邏輯層文件和物理層文件來存儲(chǔ)碼流,使得每個(gè)錄像任務(wù)在邏輯層上對應(yīng)多個(gè)邏輯MPEG4文件,每個(gè)邏輯MPEG4文件存儲(chǔ)預(yù)設(shè)時(shí)間長度的錄像數(shù)據(jù),且多個(gè)邏輯MPEG4文件保存在一個(gè)物理文件上,并記錄每個(gè)邏輯文件在物理文件上的起始存儲(chǔ)位置,邏輯文件與物理文件間就形成映射關(guān)系。能夠解決MPEG4文件錄像存儲(chǔ)過程中文件碎片過多的問題。進(jìn)一步地還能解決正在錄像的文件不可進(jìn)行查找或播放的問題。
文檔編號(hào)H04L29/08GK101729529SQ20091011014
公開日2010年6月9日 申請日期2009年11月10日 優(yōu)先權(quán)日2009年11月10日
發(fā)明者張鵬 申請人:中興通訊股份有限公司