两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種音視頻文件轉(zhuǎn)存及檢索方法

文檔序號:8546392閱讀:1199來源:國知局
一種音視頻文件轉(zhuǎn)存及檢索方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻文件存儲及檢索領(lǐng)域,尤其涉及一種音視頻文件轉(zhuǎn)存及檢索方法。
【背景技術(shù)】
[0002]目前有很多以MP4、WMV、RM等文件格式存儲的節(jié)目文件,當(dāng)需要觀看某個絕對時間段的錄像內(nèi)容時,操作非常復(fù)雜。以MP4文件為例,首先需要查找到待觀看的錄像分布在哪些MP4的錄像文件中,然后打開該MP4文件,拖動播放位置到OSD顯示為待觀看的時間處,然后再進(jìn)行觀看。比如說,當(dāng)觀看2014年12月I日14:00?14:20的一檔電視節(jié)目的時候,首先需要確定該電視節(jié)目分布在哪些錄像文件中,然后拖動到視頻畫面上顯示時間為14:00的位置開始進(jìn)行觀看。當(dāng)需要當(dāng)觀看的時間段不連續(xù)時,需要反復(fù)上述操作多次。所以這種查看某段時間節(jié)目視頻的操作非常麻煩。

【發(fā)明內(nèi)容】

[0003]有鑒于此,本發(fā)明提供一種音視頻文件轉(zhuǎn)存方法,該方法包括:對若干待轉(zhuǎn)存的音視頻文件按照時間順序進(jìn)行排序;依次對排好序的各個待轉(zhuǎn)存文件按照塊格式進(jìn)行存儲;在對每一個待轉(zhuǎn)存的文件按照塊格式進(jìn)行存儲包括:在存儲設(shè)備上,開辟出塊格式存儲區(qū)域,向其中的超級塊區(qū)域中填入對應(yīng)的超級塊信息,向其中的一級索引區(qū)填入一級時間索引,數(shù)據(jù)單元的二級時間索引區(qū)填入二級時間索引,數(shù)據(jù)單元的數(shù)據(jù)區(qū)中填入I幀組數(shù)據(jù);其中,一級時間索引區(qū)中的第一條一級時間索引中填入該待轉(zhuǎn)存的文件的媒體開始時間Tl ;在第一個數(shù)據(jù)單元的二級時間索引區(qū)的第一條二級時間索引中填入所述時間Tl,在該第一個數(shù)據(jù)單元的二級時間索引區(qū)的第η條二級時間索引中填入時間Τη,其中Tn =Τ1+(η-1)*Ι幀組的幀數(shù)/幀率,η為從2開始的自然數(shù);第一個數(shù)據(jù)單元的數(shù)據(jù)區(qū)填入各二級時間索引對應(yīng)的I幀組數(shù)據(jù);在I幀組的每個幀的ES頭中填充幀內(nèi)包序號、幀首包標(biāo)識、幀結(jié)尾標(biāo)識、幀類型、碼流類型、ES凈長度、幀率。
[0004]優(yōu)選地,每隔預(yù)設(shè)時間間隔,利用I幀數(shù)據(jù)解碼獲取OSD時間對所述二級索引時間進(jìn)行校準(zhǔn)。
[0005]優(yōu)選地,當(dāng)存在待插入的音視頻文件時,重新開辟一塊塊格式存儲區(qū)域用于該音視頻文件的補(bǔ)存;對該塊格式存儲區(qū)域的一級時間索引區(qū)進(jìn)行標(biāo)記,以表示其為補(bǔ)存錄像的索引區(qū);將該補(bǔ)存的塊格式文件與之前已經(jīng)存儲的塊格式文件進(jìn)行索引重構(gòu)。
[0006]優(yōu)選地索引重構(gòu)包括:利用二分法在已經(jīng)存儲的塊格式文件的二級時間索引中確定所述補(bǔ)存索引區(qū)的第一條時間索引的時間之前相鄰的二級時間索引,將該相鄰的二級時間索引進(jìn)行標(biāo)記,添加指向補(bǔ)存索引區(qū)的信息。
[0007]優(yōu)選地,在對按照塊格式存儲的文件進(jìn)行檢索的時候,忽略存在補(bǔ)存標(biāo)記的一級時間索引區(qū),用二分法定位待檢索錄像的開始時間在其他一級時間索引區(qū)的一級時間索引中的位置,進(jìn)一步用二分法定位待檢索錄像的開始時間在對應(yīng)的二級時間索引中的位置,如果定位后的位置緊挨著存在補(bǔ)存錄像標(biāo)記的二級時間索引且在其后,則進(jìn)一步在該存在補(bǔ)存錄像標(biāo)記的二級時間索引所指向的補(bǔ)存錄像索引區(qū)再用二分法進(jìn)行待檢索錄像開始時間的定位。
[0008]相較于現(xiàn)有技術(shù),本發(fā)明的多媒體音視頻文件轉(zhuǎn)存方案將多媒體音視頻文件按照其媒體時間連續(xù)地存儲在塊存儲設(shè)備上。當(dāng)后續(xù)要查詢某一時間的錄像時,系統(tǒng)能迅速定位到該錄像并自動進(jìn)行播放。
【附圖說明】
[0009]圖1是一種塊存儲格式。
[0010]圖2是一個ES頭示例。
[0011]圖3是索引重構(gòu)示例圖。
【具體實(shí)施方式】
[0012]針對【背景技術(shù)】提出的技術(shù)問題,本發(fā)明提供一種多媒體音視頻文件轉(zhuǎn)存方案。該多媒體音視頻文件轉(zhuǎn)存方案將多媒體音視頻文件按照其媒體時間連續(xù)地存儲在塊存儲設(shè)備上。當(dāng)后續(xù)要查詢某一時間的錄像時,系統(tǒng)能迅速定位到該錄像并自動進(jìn)行播放。以下通過具體實(shí)施例來詳細(xì)描述本發(fā)明方案。
[0013]本實(shí)施例中的多媒體音視頻文件包括但不限于MP4、WMV、MR格式的文件。以下以MP4格式文件為例進(jìn)行說明。
[0014]當(dāng)前需要對若干個MP4文件按照適于一鍵式檢索的方式進(jìn)行存儲。
[0015]首先對這若干個MP4文件按照時間順序進(jìn)行排序。系統(tǒng)先獲取各個文件的媒體開始時間,按照該獲取的媒體開始時間對這些文件進(jìn)行排序。獲取媒體開始時間的方式包括:讀取攜帶在MP4文件信息中的媒體創(chuàng)建時間;或者讀取以文件方式保存的媒體創(chuàng)建時間;或者可以通過獲取各個文件的第一幀視頻數(shù)據(jù),解碼出OSD時間作為媒體的開始時間。
[0016]然后依次對排好序的各個MP4文件按照塊格式進(jìn)行存儲。本實(shí)施例所述的塊格式請參圖1,其包括如下幾部分:
[0017]超級塊:一般有幾十K(比如16Κ)字節(jié),用來記錄塊格式的版本號、錄像來源設(shè)備編碼。由于超級塊中的數(shù)據(jù)有限,因此通常有較多的預(yù)留空間。
[0018]—級時間索引區(qū):超級塊后面為一級時間索引區(qū),索引區(qū)中的每條時間索引與一個數(shù)據(jù)單元一一對應(yīng)(比如:第η個一級時間索引,對應(yīng)第η個數(shù)據(jù)單元),用于記錄該數(shù)據(jù)單元的最早I幀組的時間,從而可以基于時間快速定位到某個數(shù)據(jù)單元。
[0019]數(shù)據(jù)單元:一級時間索引區(qū)后面是一系列的數(shù)據(jù)單元,用于保存錄像的I幀組數(shù)據(jù)。為了保證I幀組數(shù)據(jù)的連續(xù)寫入,數(shù)據(jù)單元一般達(dá)到幾百M(fèi)字節(jié)(比如256Μ字節(jié))。每個數(shù)據(jù)單元是以一個二級時間索引區(qū)開始的,其中每條時間索引項(xiàng)與一個I幀組—對應(yīng)(比如:第η個二級時間索引,對應(yīng)本數(shù)據(jù)單元的第η個I幀組),用于記錄該I幀組的開始時間,從而可以基于時間快速定位某個I幀組。二級索引區(qū)之后,就是本數(shù)據(jù)單元中的所有I幀組數(shù)據(jù)。I幀組:一個I幀組通常就是I秒的錄像數(shù)據(jù)。在I幀組中,存儲的是該I幀組的所有視頻、音頻數(shù)據(jù)包。I幀組中的視頻、音頻數(shù)據(jù)以ES數(shù)據(jù)的形式進(jìn)行存儲,ES數(shù)據(jù)具有 ES 頭,該 ES 頭包括 PTS (Presentat1n Time Stamp 顯示時間戳)、DTS (DecodingTime Stamp解碼時間戳)。
[0020]將一個MP4文件按照塊格式進(jìn)行存儲時要考慮如何生成塊格式中的一級時間索弓1、二級時間索引以及I幀組中的ES頭部數(shù)據(jù)。
[0021]在存儲設(shè)備上,開辟出塊格式存儲區(qū)域,向其中的超級塊區(qū)域中填入對應(yīng)的超級塊信息,向其中的一級索引區(qū)填入一級時間索引,數(shù)據(jù)單元的二級時間索引區(qū)中填入二級時間索引,數(shù)據(jù)單元的數(shù)據(jù)區(qū)中填入對應(yīng)的I幀組數(shù)據(jù)。
[0022]在對排序后的第一個MP4文件按照塊格式進(jìn)行轉(zhuǎn)存時,一級時間索引區(qū)中的第一條一級時間索引中填入步驟Sll中獲取的該MP4文件的媒體開始時間Tl。對于第一個數(shù)據(jù)單元的二級時間索引區(qū)中第一條二級時間索引(表示為Inl.1)仍然填入上述媒體開始時間Tl,對于Inl.η (第一個數(shù)據(jù)單元的二級時間索引區(qū)中的第η條二級時間索引,η從2開始直到某一個數(shù)值)填入的時間值為Τη,該Tn = Τ1+(η-1)*Ι幀組的幀數(shù)/幀率。第一個數(shù)據(jù)單元的數(shù)據(jù)區(qū)則填入各個二級時間索引對應(yīng)的各個I幀組數(shù)據(jù),比如說Inl.1對應(yīng)的第一個I幀組。如果一個數(shù)據(jù)單元的大小是256Μ,那么當(dāng)該數(shù)據(jù)單元被存滿時,則在下一個數(shù)據(jù)單元中存儲時間索引和對應(yīng)的數(shù)據(jù)。此時,一級時間索引區(qū)中需要填入一條新的一級時間索引,同樣的二級時間索引區(qū)中也要填入相應(yīng)的二級時間索引。如果一級時間索引區(qū)中設(shè)定存儲256條一級時間索引,對應(yīng)的數(shù)據(jù)單元也有256個,那么當(dāng)該空間都被存滿時,需要在另外的存儲空間中按照同樣的方式存儲MP4文件中的數(shù)據(jù)。
[0023]為了提高檢索精度,本發(fā)明實(shí)施例利用I幀數(shù)據(jù)解碼獲取到的OSD時間對該二級索引時間進(jìn)行校準(zhǔn)。為了提高存儲速率,可以每隔一定的時間間隔進(jìn)行一次校準(zhǔn)。比如說,每隔10個GOP就進(jìn)行一次校準(zhǔn)。例如,Inl.1的時間值是Tl,則計(jì)算得到的第11個二級時間索引Inl.11的時間值為Τ1+10*Ι幀組的幀數(shù)/幀率,在利用OSD進(jìn)行校準(zhǔn)時,可以解碼第11個I幀組中的I幀,然后將解碼得到的OSD時間與計(jì)算得到的Inl.11時間值進(jìn)行比較,若兩者的差值大于設(shè)定閾值時,則以當(dāng)前的OSD時間作為該I幀的二級時間索引中的時間值。后續(xù)二級索引時間的計(jì)算以該OSD時間為基準(zhǔn)進(jìn)行計(jì)算。上述計(jì)算得到的二級時間索引中的時間值精度不準(zhǔn)的原因有獲取到的幀率不準(zhǔn)、MP4文件部分?jǐn)?shù)據(jù)丟失等。
[0024]在生成每個幀的ES頭部時,先確定各ES頭部中的PTS、DTS間隔值。PTS間隔值為90*1000/幀率;假設(shè)I幀的PTS時間為tl,則其后的第一個P幀的PTS值為tl+90*1000/幀率;第二個P幀的PTS值為tl+2*90*1000/幀率,以此類推。同樣的,DTS間隔值也為90*1000/幀率;假設(shè)I幀的DTS時間為t2,則其后的第一個P幀的DTS值為t2+90*1000/幀率;第二個P幀的DTS值為t2+2*90*1000/幀率,依次類推。除了 PTS和DTS之外,ES頭中還需要進(jìn)一步填充幀內(nèi)包序號、幀首包標(biāo)識、幀結(jié)尾標(biāo)識、幀類型、碼流類型、ES凈長度、幀率等。請參圖2給出的一個例子。packCnt表示幀內(nèi)包序號,start
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
永济市| 新营市| 营口市| 东光县| 班玛县| 化隆| 南部县| 尤溪县| 客服| 莱阳市| 凤山县| 安福县| 大新县| 青冈县| 林西县| 安泽县| 元谋县| 临沧市| 炎陵县| 镇沅| 浠水县| 大新县| 汾西县| 镇赉县| 海兴县| 阿克苏市| 科技| 望城县| 温宿县| 庄河市| 泊头市| 洞头县| 翼城县| 日喀则市| 东阳市| 海盐县| 江阴市| 鄂托克前旗| 临漳县| 肃宁县| 尉氏县|