一種視頻錄制方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及本發(fā)明涉及視頻處理領(lǐng)域,尤其涉及一種視頻錄制方法及裝置。
【背景技術(shù)】
[0002]視頻錄制是指錄制來自于計算機硬件終端、計算機視窗環(huán)境的視頻,常見的錄制模式包括捕捉攝像頭、攝像機、數(shù)碼相機、電視卡、DVR等硬件視頻,錄制計算機視窗的游戲視頻、QQ視頻、錄制電影等。隨著時代進步,科技發(fā)展,人民追求精神享受的愿望的提高,對視頻錄制的清晰度,可靠性也隨之增加,通常視頻錄制的幀數(shù)越高,視頻越清晰,但是視頻錄制幀數(shù)越高,越容易出現(xiàn)漏幀,漏秒的情況。通常是通過提升硬件配置,加強視頻處理芯片和存儲介質(zhì)的處理速度來解決漏幀,漏秒的情況。沒有一種在當(dāng)前有限的硬件資源下,解決視頻錄制不理想,漏幀,漏秒的情況。
【發(fā)明內(nèi)容】
[0003]為了解決上述技術(shù)問題,本發(fā)明的目的是提供一種在有限的硬件資源下,解決視頻錄制不理想,漏幀,漏秒的情況的視頻錄制方法及裝置。
[0004]本發(fā)明所采用的技術(shù)方案是:一種視頻錄制方法,其包括如下步驟:
一種視頻錄制方法,其特征在于,其包括如下步驟:
步驟11、視頻數(shù)據(jù)采集;
步驟12、建立視頻幀緩存;
步驟13、建立循環(huán)隊列;
步驟14、建立寫卡緩存a;
步驟15、將采集的視頻數(shù)據(jù)寫入循環(huán)隊列,標(biāo)示w;
步驟16、讀循環(huán)隊列,標(biāo)示r,并寫入卡緩存a;
步驟17、動態(tài)增減循環(huán)隊列節(jié)點。
[0005]進一步,所述視頻數(shù)據(jù)包括H264或MPEG1-4視頻編碼方式的數(shù)據(jù)。
[0006]進一步,所述的步驟12、建立視頻幀緩存,具體分為2種:第一種為bigBuf,主要為存儲關(guān)鍵幀I幀,緩存大小為(480*1024)Byte;第二種為smallBuf,主要為存儲預(yù)測幀P幀,緩存大小為(120*1024)Byte。
[0007]進一步,步驟13建立循環(huán)隊列,所述循環(huán)隊列節(jié)點包括寫入的視頻數(shù)據(jù)的數(shù)據(jù)包長度D1。
[0008]進一步,所述的循環(huán)節(jié)點數(shù)為300。
[0009]進一步,步驟14、建立寫卡緩存a,為3M連續(xù)內(nèi)存,所述寫卡緩存a包括寫入的視頻的數(shù)據(jù)長度D2。
[0010]進一步,步驟17、動態(tài)增減循環(huán)隊列節(jié)點,具體為當(dāng)寫入循環(huán)隊列結(jié)點中的成員“數(shù)據(jù)包長度D1”不為O時,讀取循環(huán)隊列的內(nèi)容,同時標(biāo)示r,開始解析。當(dāng)寫卡緩存a中“數(shù)據(jù)長度D2”加上“數(shù)據(jù)包長度D1”〈3M,將解析后的數(shù)據(jù)寫入卡緩存a,否則開始寫卡,寫卡完后將循環(huán)隊列節(jié)點中的“數(shù)據(jù)長度”清O,同時將該次解析數(shù)據(jù)寫入卡緩存a。
[0011]進一步,所述步驟17包括:當(dāng)循環(huán)隊列剩余可用節(jié)點小于循環(huán)隊列節(jié)點數(shù)的六分之一大小時,則增加循環(huán)隊列節(jié)點數(shù)的1/6個節(jié)點;當(dāng)循環(huán)隊列剩余可用節(jié)點不少于循環(huán)隊列總節(jié)點數(shù)1/2時,則一次釋放;當(dāng)循環(huán)隊列剩余可用節(jié)點大于循環(huán)隊列總節(jié)點數(shù)1/3,小于循環(huán)隊列總節(jié)點數(shù)1/2時,則逐漸釋放。
[0012]此外,本發(fā)明的另一方面,提供了一種視頻錄制裝置,其包括:
視頻采集單元:用于視頻數(shù)據(jù)采集,所提供數(shù)據(jù)可以是來自任何視頻源設(shè)備;
視頻幀緩存創(chuàng)建單元:用于建立視頻幀緩存;
循環(huán)隊列創(chuàng)建單元:用于建立循環(huán)隊列;
寫卡緩存創(chuàng)建單元:用于建立寫卡緩存a;
數(shù)據(jù)寫入單元:用于將采集的視頻數(shù)據(jù)寫入循環(huán)隊列,標(biāo)示w;
數(shù)據(jù)讀取單元:用于將視頻數(shù)據(jù)讀循環(huán)隊列,標(biāo)示r,并寫入卡緩存a;
控制單元:用于動態(tài)增減循環(huán)隊列節(jié)點。
[0013]本發(fā)明的有益效果是:本發(fā)明通過建立循環(huán)隊列,實現(xiàn)動態(tài)緩沖機制,動態(tài)分配資源,在有限的硬件資源下,解決視頻錄制不理想,漏幀,漏秒的情況。
【附圖說明】
[0014]下面結(jié)合附圖對本發(fā)明的【具體實施方式】作進一步說明:
圖1是本發(fā)明的一具體實施例的流程圖;
圖2是本發(fā)明的一具體實施例的功能模塊圖。
【具體實施方式】
[0015]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
[0016]如圖1所示,一種視頻錄制方法,其包括如下步驟:
本發(fā)明所采用的技術(shù)方案是:一種視頻錄制方法,其包括如下步驟:
步驟11、視頻數(shù)據(jù)采集;
步驟12、建立視頻幀緩存;
步驟13、建立循環(huán)隊列;
步驟14、建立寫卡緩存a;
步驟15、將采集的視頻數(shù)據(jù)寫入循環(huán)隊列,標(biāo)示w;
步驟16、讀循環(huán)隊列,標(biāo)示r,并寫入卡緩存a;
步驟17、動態(tài)增減循環(huán)隊列節(jié)點。
[0017]進一步作為優(yōu)選的實施方式,所述視頻數(shù)據(jù)包括H264或MPEG1-4視頻編碼方式的數(shù)據(jù)。
[0018]進一步作為優(yōu)選的實施方式,所述的步驟12、建立視頻幀緩存,具體分為2種:第一種為bigBuf,主要為存儲關(guān)鍵幀I幀,緩存大小為(480*1024)Byte;第二種為smallBuf,主要為存儲預(yù)測幀P幀,緩存大小為(120*1024)Byte,目的在于減少無效內(nèi)存的分配。
[0019]進一步作為優(yōu)選的實施方式,步驟13建立循環(huán)隊列,所述循環(huán)隊列節(jié)點包括寫入的視頻數(shù)據(jù)的數(shù)據(jù)包長度D1。循環(huán)隊列及每個節(jié)點中成員如下: struct bufQue{
隊列頭;
頭索引w;
尾索引r;
}
struct bufNode
{
視頻幀緩存指針;
數(shù)據(jù)包長度;
時間戳;
關(guān)鍵幀標(biāo)示;
下一個節(jié)點指針;
};
此循環(huán)隊列判別隊列是〃空〃還是〃滿〃另設(shè)一 char變量(以下簡稱F)標(biāo)示。此循環(huán)的隊列節(jié)點個數(shù)為300。
[0020]進一步作為優(yōu)選的實施方式,步驟14、建立寫卡緩存a,為3M連續(xù)內(nèi)存,所述寫卡緩存a包括寫入的視頻的數(shù)據(jù)長度D2。以3M左右大小寫卡時,速度最快,具體大小視系統(tǒng)而