專利名稱:一種無縫文件采集方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及視音頻文件采集技術,具體涉及一種針對視音頻文件的無縫采集方法 及系統(tǒng)。
背景技術:
視音頻文件采集系統(tǒng)被廣泛應用于廣電節(jié)目錄制、視頻網(wǎng)站內(nèi)容制作、安保視頻 監(jiān)控等領域。該系統(tǒng)主要作用是將視音頻信號編碼成文件后保存起來。由于視音頻文件的 存儲量一般比較大,這種大文件在寫入數(shù)據(jù)的過程中需要較長的時間,而如果計算機系統(tǒng) 在此過程中出現(xiàn)瞬間不穩(wěn)定因素的干擾,就會發(fā)生數(shù)據(jù)寫入過程的短暫停頓并造成數(shù)據(jù)丟 失。因此,在視音頻文件的保存過程中,為了避免單個文件過大,往往會將視音頻數(shù)據(jù)按照 時間先后順序分成多段數(shù)據(jù),分別寫入到多個文件中。但在文件切換的過程中,往往會有部 分視音頻數(shù)據(jù)在編碼器切換的空隙被丟棄,造成數(shù)據(jù)丟失。雖然這種數(shù)據(jù)丟失的持續(xù)時間 很短暫,但是有可能包含非常有價值的信息,一旦這種有價值的數(shù)據(jù)信息丟失,會給用戶造 成很大的損失。中國專利申請03150253. 9公開了一種“視音頻編輯系統(tǒng)中避免采集或錄制數(shù)據(jù) 丟失的方法”,該方法在數(shù)據(jù)采集和節(jié)目錄制過程中,先將采集或要錄制的數(shù)據(jù)分別存儲到 計算機內(nèi)存中由視音頻編輯軟件預先開設的采集數(shù)據(jù)緩存區(qū)和錄制數(shù)據(jù)緩存區(qū)內(nèi),然后再 將對應緩存區(qū)內(nèi)的數(shù)據(jù)寫入計算機硬盤規(guī)定的數(shù)據(jù)區(qū)或輸出到錄制設備中,避免了因計算 機系統(tǒng)瞬間不穩(wěn)定造成的數(shù)據(jù)丟失。但是,由于將視音頻數(shù)據(jù)分段后,視頻流和音頻流很 可能出現(xiàn)不同步的現(xiàn)象。目前主流的編碼器在同時編碼音頻和視頻流時,需要將編碼后的 兩個流交織后寫入到文件中,如果生成的文件中相鄰的兩個數(shù)據(jù)流出現(xiàn)不同步的情況,當 播放器播放這種文件時,為了等待另一個流同步,需要緩沖非常多的數(shù)據(jù),造成內(nèi)存占用過 多,磁盤讀寫頻繁,隨機定位慢,甚至音視頻不協(xié)調(diào)等一系列問題。為了避免這種情況出現(xiàn), 主流的編碼器一般都要求輸入的兩個數(shù)據(jù)流應保持基本同步,如果超出同步的控制范圍, 時間戳超前的流中的部分數(shù)據(jù)會被編碼器主動丟棄,以縮小差距,嚴重的甚至導致編碼器 拒絕后續(xù)數(shù)據(jù)的編碼請求,導致數(shù)據(jù)丟失??梢姡绻麑⒉煌降囊曨l流和音頻流輸入編碼 器,在編碼器內(nèi)部同樣會出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象,無法做到真正的文件無縫采集。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對現(xiàn)有技術中視音頻文件采集時容易造成數(shù)據(jù)丟失的缺陷, 提供一種無縫文件采集方法及系統(tǒng),從而保證視音頻文件采集的完整性。本發(fā)明的技術方案如下一種無縫文件采集方法,包括如下步驟(1)在編碼器前端設置一個數(shù)據(jù)緩存池,將視音頻數(shù)據(jù)按時間順序存入緩存池;(2)打開數(shù)據(jù)緩存池的出口,使未編碼的視音頻數(shù)據(jù)經(jīng)過緩存池同步輸出,進入編 碼器進行文件編碼;(3)當需要切換輸出文件時,系統(tǒng)發(fā)出文件切換消息;
(4)再次同步緩存池中的視音頻數(shù)據(jù),使輸出給編碼器的視頻流總長度等于音頻 流總長度,然后關閉數(shù)據(jù)緩存池的出口 ;(5)編碼器將其內(nèi)部已完成編碼的數(shù)據(jù)生成一個文件,輸出到硬盤的目標位置;(6)返回步驟( 進行重復操作,直至完成所有視音頻數(shù)據(jù)的采集。進一步,如上所述的無縫文件采集方法,步驟(1)中設置數(shù)據(jù)緩存池的方式是在 計算機系統(tǒng)的內(nèi)存中劃分一塊緩存區(qū)域,將該緩存區(qū)域與編碼器相關聯(lián),形成數(shù)據(jù)經(jīng)該緩 存區(qū)域進入編碼器的輸入路徑;或者,在計算機系統(tǒng)的硬盤上建立一個臨時文件,將緩存映 射到硬盤的臨時文件中,將該臨時文件與編碼器相關聯(lián),形成數(shù)據(jù)經(jīng)該臨時文件進入編碼 器的輸入路徑。進一步,如上所述的無縫文件采集方法,步驟O)中所述的打開數(shù)據(jù)緩存池的出 口為啟動從緩存池中取數(shù)據(jù)并輸送到編碼器的數(shù)據(jù)讀取線程;步驟中所述的關閉數(shù) 據(jù)緩存池的出口為停止上述數(shù)據(jù)讀取線程。進一步,如上所述的無縫文件采集方法,在步驟( 和步驟(4)中對視音頻數(shù)據(jù)進 行同步的方式是選擇一個參考時鐘,在生成視頻數(shù)據(jù)流和音頻數(shù)據(jù)流時對每一幀數(shù)據(jù)分 別加上一個時間戳,通過對照視頻數(shù)據(jù)流和音頻數(shù)據(jù)流的時間戳,對兩個數(shù)據(jù)流的輸送速 度進行調(diào)整,以實現(xiàn)視音頻數(shù)據(jù)的同步輸送。一種無縫文件采集系統(tǒng),包括編碼器,用于對視音頻數(shù)據(jù)進行文件編碼,并輸出形成目標文件;數(shù)據(jù)緩存池,與編碼器的輸入端連接,用于暫時存儲未編碼的視音頻數(shù)據(jù),并將數(shù) 據(jù)輸送給編碼器;數(shù)據(jù)同步模塊,與數(shù)據(jù)緩存池連接,用于對數(shù)據(jù)緩存池中的視音頻數(shù)據(jù)流進行先 后兩次同步控制;緩存池開關模塊,設置在數(shù)據(jù)緩存池的出口與編碼器的輸入端之間,用于控制未 編碼的視音頻數(shù)據(jù)經(jīng)過緩存池向編碼器的輸送。進一步,如上所述的無縫文件采集系統(tǒng),其中,所述的數(shù)據(jù)緩存池為計算機系統(tǒng)內(nèi) 存中的一塊緩存區(qū)域,通過設置數(shù)據(jù)經(jīng)該緩存區(qū)域進入編碼器的輸入路徑,形成緩存區(qū)域 與編碼器的關聯(lián)關系;或者,所述的數(shù)據(jù)緩存池為計算機系統(tǒng)硬盤中的一個臨時文件所構 成的虛擬內(nèi)存。進一步,如上所述的無縫文件采集系統(tǒng),其中,所述的數(shù)據(jù)同步模塊根據(jù)一個參考 時鐘,對生成的視頻數(shù)據(jù)流和音頻數(shù)據(jù)流的每一幀數(shù)據(jù)分別加上一個時間戳,通過對照視 頻數(shù)據(jù)流和音頻數(shù)據(jù)流的時間戳,對兩個數(shù)據(jù)流的輸送速度進行調(diào)整,以實現(xiàn)視音頻數(shù)據(jù) 的同步輸送。進一步,如上所述的無縫文件采集系統(tǒng),其中,所述的緩存池開關模塊為一個數(shù)據(jù) 讀取線程,通過啟動和停止該數(shù)據(jù)讀取線程,實現(xiàn)編碼器從緩存池中讀取視音頻數(shù)據(jù)的控 制。本發(fā)明的有益效果如下本發(fā)明通過在編碼器的前端增設一個數(shù)據(jù)緩存池,使視 音頻數(shù)據(jù)經(jīng)過緩存池后再進入編碼器,并通過打開和關閉緩存池的出口來控制輸入編碼器 的視音頻數(shù)據(jù)量;同時在每一階段編碼的過程中,前后兩次對緩存池中的視音頻數(shù)據(jù)流進 行同步控制,使送給編碼器的視頻流總長度等于音頻流總長度,實現(xiàn)了真正意義上的視音頻文件的無縫采集,防止數(shù)據(jù)的丟失,保證了視音頻文件采集的完整性。
圖1為本發(fā)明具體實施方式
中的方法流程圖;圖2為本發(fā)明具體實施方式
中的系統(tǒng)結構示意圖。
具體實施例方式下面結合附圖和實施例對本發(fā)明進行詳細的描述。如圖1所示,本發(fā)明所提供的無縫文件采集方法,包括如下步驟步驟S01,在編碼器前端設置一個數(shù)據(jù)緩存池,將視音頻數(shù)據(jù)按時間順序存入緩存 池;步驟S02,打開數(shù)據(jù)緩存池的出口,啟動數(shù)據(jù)讀取線程,使未編碼的視音頻數(shù)據(jù)經(jīng) 過緩存池同步輸出,進入編碼器進行文件編碼;步驟S03,當需要切換輸出文件時,系統(tǒng)發(fā)出文件切換消息;步驟S04,再次同步緩存池中的視音頻數(shù)據(jù),使送給編碼器的視頻流總長度等于音 頻流總長度,然后關閉數(shù)據(jù)緩存池的出口,停止數(shù)據(jù)讀取線程,讓未編碼的數(shù)據(jù)在緩存池中 排隊;步驟S05,編碼器將其內(nèi)部已完成編碼的數(shù)據(jù)生成一個文件,輸出到硬盤的目標位 置;步驟S06,返回步驟S02進行重復操作,直至完成所有視音頻數(shù)據(jù)的采集。在上述方案中,為了達到無縫采集的目的,本發(fā)明在編碼器前端增加了 一個數(shù)據(jù) 緩存池,所述的數(shù)據(jù)緩存池必須是一塊可直接操作的內(nèi)存區(qū)域,但是這里所述的內(nèi)存是操 作系統(tǒng)所提供的虛擬內(nèi)存,虛擬內(nèi)存可以是實際物理內(nèi)存中的一塊緩存區(qū)域,也可以映射 到硬盤上的一個文件中,通過設置數(shù)據(jù)經(jīng)該虛擬內(nèi)存進入編碼器的輸入路徑,形成緩存區(qū) 域(或臨時文件)與編碼器的關聯(lián)關系。由于本系統(tǒng)中所緩存的是無壓縮的視音頻數(shù)據(jù), 其數(shù)據(jù)量巨大,因此當運行本系統(tǒng)的計算機物理內(nèi)存較小時,可將緩存映射到硬盤上的一 個臨時文件中,使用硬盤空間來緩解內(nèi)存不足的缺陷。由于視音頻信號先經(jīng)過緩存池,再進入編碼器進行文件編碼工作,當同時有音頻 流和視頻流時,就需要做好音視頻同步工作,讓編碼器接收到的兩個流的時間戳盡量一致。 從技術上來講,視音頻數(shù)據(jù)進行同步的最佳方式就是基于時間戳的調(diào)整方式,首先選擇一 個參考時鐘,在生成視頻數(shù)據(jù)流和音頻數(shù)據(jù)流時對每一幀數(shù)據(jù)分別加上一個時間戳,通過 對照視頻數(shù)據(jù)流和音頻數(shù)據(jù)流的時間戳,對兩個數(shù)據(jù)流的輸送速度進行調(diào)整,以實現(xiàn)視音 頻數(shù)據(jù)的同步輸送。本發(fā)明的關鍵之處在于對視頻數(shù)據(jù)流和音頻數(shù)據(jù)流進行兩次同步,第一次發(fā)生在 步驟S02中,即視音頻信號進入編碼器之前先進行同步;第二次發(fā)生在步驟S04中,即當編 碼器需要切換輸出文件時,系統(tǒng)對視音頻信號數(shù)據(jù)再做一次同步,使得送給編碼器的視頻 流總長度等于音頻流總長度,然后系統(tǒng)暫時關閉緩存池的出口,讓未編碼的數(shù)據(jù)在緩存池 中排隊,這時再讓編碼器切換輸出文件。再次打開緩存池出口,將剩余數(shù)據(jù)繼續(xù)推送給編碼 器進行處理,真正做到無縫采集。上述步驟中做兩次視音頻同步非常重要,否則編碼器內(nèi)部會丟失數(shù)據(jù),無法做到真正的無縫采集。為實現(xiàn)上述無縫文件采集方法,本發(fā)明進一步提供了相應系統(tǒng)的結構組成,如圖2 所示,具體包括編碼器,用于對視音頻數(shù)據(jù)進行文件編碼,并輸出形成目標文件;數(shù)據(jù)緩存池,與編碼器的輸入端連接,用于暫時存儲未編碼的視音頻數(shù)據(jù),并將數(shù) 據(jù)輸送給編碼器;在具體實施方式
中,數(shù)據(jù)緩存池為計算機系統(tǒng)內(nèi)存中的一塊緩存區(qū)域,通 過設置數(shù)據(jù)經(jīng)該緩存區(qū)域進入編碼器的輸入路徑,形成緩存區(qū)域與編碼器的關聯(lián)關系;或 者,數(shù)據(jù)緩存池為計算機系統(tǒng)硬盤中的一個臨時文件所構成的虛擬內(nèi)存;數(shù)據(jù)同步模塊,與數(shù)據(jù)緩存池連接,用于對數(shù)據(jù)緩存池中的視音頻數(shù)據(jù)流進行先 后兩次同步控制;具體的控制方式是,根據(jù)一個參考時鐘,對生成的視頻數(shù)據(jù)流和音頻數(shù)據(jù) 流的每一幀數(shù)據(jù)分別加上一個時間戳,通過對照視頻數(shù)據(jù)流和音頻數(shù)據(jù)流的時間戳,對兩 個數(shù)據(jù)流的輸送速度進行調(diào)整,以實現(xiàn)視音頻數(shù)據(jù)的同步輸送;同步控制需要進行兩次,第 一次是在視音頻信號進入編碼器之前,第二次是在當編碼器需要切換輸出文件時;緩存池開關模塊,設置在數(shù)據(jù)緩存池的出口與編碼器的輸入端之間,為一個從緩 存池中取數(shù)據(jù)并輸送到編碼器的數(shù)據(jù)讀取線程,通過啟動和停止該數(shù)據(jù)讀取線程,控制未 編碼的視音頻數(shù)據(jù)經(jīng)過緩存池向編碼器的輸送。在該數(shù)據(jù)讀取線程正常運行期間,會調(diào)用 數(shù)據(jù)同步模塊對所有傳送的視音頻數(shù)據(jù)進行上述方法中步驟S02所述的第一次同步,當關 閉該數(shù)據(jù)讀取線程時,線程會在退出前調(diào)用數(shù)據(jù)同步模塊進行上述方法中步驟S04所述的 第二次同步。上述系統(tǒng)通過在編碼器前端增加了一個數(shù)據(jù)緩存池,使視音頻信號先經(jīng)過緩存 池,再進入編碼器進行文件編碼工作,通過數(shù)據(jù)同步模塊對數(shù)據(jù)緩存池中的視音頻數(shù)據(jù)流 進行先后兩次同步控制,保證了編碼器內(nèi)部編碼時不會丟失數(shù)據(jù),從而實現(xiàn)了文件的無縫 采集,緩存池開關模塊對緩存池的出口進行控制,保證了進入編碼器的數(shù)據(jù)量。顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權利要求
1.一種無縫文件采集方法,包括如下步驟(1)在編碼器前端設置一個數(shù)據(jù)緩存池,將視音頻數(shù)據(jù)按時間順序存入緩存池;(2)打開數(shù)據(jù)緩存池的出口,使未編碼的視音頻數(shù)據(jù)經(jīng)過緩存池同步輸出,進入編碼器 進行文件編碼;(3)當需要切換輸出文件時,系統(tǒng)發(fā)出文件切換消息;(4)再次同步緩存池中的視音頻數(shù)據(jù),使輸出給編碼器的視頻流總長度等于音頻流總 長度,然后關閉數(shù)據(jù)緩存池的出口 ;(5)編碼器將其內(nèi)部已完成編碼的數(shù)據(jù)生成一個文件,輸出到硬盤的目標位置;(6)返回步驟( 進行重復操作,直至完成所有視音頻數(shù)據(jù)的采集。
2.如權利要求1所述的無縫文件采集方法,其特征在于步驟(1)中設置數(shù)據(jù)緩存池 的方式是在計算機系統(tǒng)的內(nèi)存中劃分一塊緩存區(qū)域,將該緩存區(qū)域與編碼器相關聯(lián),形成 數(shù)據(jù)經(jīng)該緩存區(qū)域進入編碼器的輸入路徑。
3.如權利要求1所述的無縫文件采集方法,其特征在于步驟(1)中設置數(shù)據(jù)緩存池 的方式是在計算機系統(tǒng)的硬盤上建立一個臨時文件,將緩存映射到硬盤的臨時文件中,將 該臨時文件與編碼器相關聯(lián),形成數(shù)據(jù)經(jīng)該臨時文件進入編碼器的輸入路徑。
4.如權利要求1或2或3所述的無縫文件采集方法,其特征在于步驟O)中所述的 打開數(shù)據(jù)緩存池的出口為啟動從緩存池中取數(shù)據(jù)并輸送到編碼器的數(shù)據(jù)讀取線程;步驟 (4)中所述的關閉數(shù)據(jù)緩存池的出口為停止上述數(shù)據(jù)讀取線程。
5.如權利要求4所述的無縫文件采集方法,其特征在于在步驟(2)和步驟中對 視音頻數(shù)據(jù)進行同步的方式是選擇一個參考時鐘,在生成視頻數(shù)據(jù)流和音頻數(shù)據(jù)流時對 每一幀數(shù)據(jù)分別加上一個時間戳,通過對照視頻數(shù)據(jù)流和音頻數(shù)據(jù)流的時間戳,對兩個數(shù) 據(jù)流的輸送速度進行調(diào)整,以實現(xiàn)視音頻數(shù)據(jù)的同步輸送。
6.一種無縫文件采集系統(tǒng),包括編碼器,用于對視音頻數(shù)據(jù)進行文件編碼,并輸出形成目標文件;數(shù)據(jù)緩存池,與編碼器的輸入端連接,用于暫時存儲未編碼的視音頻數(shù)據(jù),并將數(shù)據(jù)輸 送給編碼器;數(shù)據(jù)同步模塊,與數(shù)據(jù)緩存池連接,用于對數(shù)據(jù)緩存池中的視音頻數(shù)據(jù)流進行同步控制;緩存池開關模塊,設置在數(shù)據(jù)緩存池的出口與編碼器的輸入端之間,用于控制未編碼 的視音頻數(shù)據(jù)經(jīng)過緩存池向編碼器的輸送。
7.如權利要求6所述的無縫文件采集系統(tǒng),其特征在于所述的數(shù)據(jù)緩存池為計算機 系統(tǒng)內(nèi)存中的一塊緩存區(qū)域,通過設置數(shù)據(jù)經(jīng)該緩存區(qū)域進入編碼器的輸入路徑,形成緩 存區(qū)域與編碼器的關聯(lián)關系。
8.如權利要求6所述的無縫文件采集系統(tǒng),其特征在于所述的數(shù)據(jù)緩存池為計算機 系統(tǒng)硬盤中的一個臨時文件所構成的虛擬內(nèi)存。
9.如權利要求6或7或8所述的無縫文件采集系統(tǒng),其特征在于所述的數(shù)據(jù)同步模 塊根據(jù)一個參考時鐘,對生成的視頻數(shù)據(jù)流和音頻數(shù)據(jù)流的每一幀數(shù)據(jù)分別加上一個時間 戳,通過對照視頻數(shù)據(jù)流和音頻數(shù)據(jù)流的時間戳,對兩個數(shù)據(jù)流的輸送速度進行調(diào)整,以實 現(xiàn)視音頻數(shù)據(jù)的同步輸送。
10.如權利要求6或7或8所述的無縫文件采集系統(tǒng),其特征在于所述的緩存池開關 模塊為一個數(shù)據(jù)讀取線程,通過啟動和停止該數(shù)據(jù)讀取線程,實現(xiàn)編碼器從緩存池中讀取 視音頻數(shù)據(jù)的控制。
全文摘要
本發(fā)明涉及視音頻文件采集技術,具體涉及一種針對視音頻文件的無縫采集方法及系統(tǒng)。該方法在編碼器前端設置一個數(shù)據(jù)緩存池,將視音頻數(shù)據(jù)按時間順序存入緩存池;打開數(shù)據(jù)緩存池的出口,使未編碼的視音頻數(shù)據(jù)經(jīng)過緩存池同步輸出,進入編碼器進行文件編碼;當需要切換輸出文件時,系統(tǒng)發(fā)出文件切換消息;再次同步緩存池中的視音頻數(shù)據(jù),使送給編碼器的視頻流總長度等于音頻流總長度,然后關閉數(shù)據(jù)緩存池的出口;編碼器將其內(nèi)部已完成編碼的數(shù)據(jù)生成一個文件,輸出到硬盤的目標位置;重新打開緩存池出口重復編碼操作,直至完成所有視音頻數(shù)據(jù)的采集。本發(fā)明能夠做到編碼時不丟失數(shù)據(jù),從而保證視音頻文件采集的完整性。
文檔編號H04N5/222GK102098423SQ200910242620
公開日2011年6月15日 申請日期2009年12月10日 優(yōu)先權日2009年12月10日
發(fā)明者周銘慧, 孔彥鋒, 時杰, 王常波, 白東巖 申請人:北京北大方正電子有限公司, 北大方正集團有限公司