Op1a和Op1b格式的MXF文件的續(xù)寫方法
【專利摘要】本發(fā)明公開了一種Op1a和Op1b格式的MXF文件的續(xù)寫方法,包括以下步驟:判斷MXF文件是否完整;若所述MXF文件不完整,則判斷所述MXF文件的頭部元數(shù)據(jù)是否完成,若所述頭部元數(shù)據(jù)未完成,則重寫所述頭部元數(shù)據(jù);尋找MXF文件中最后一個包含完整索引表段的文件體包,通過解析所述文件體包獲取已寫入的音視頻幀數(shù);繼續(xù)寫入音視頻數(shù)據(jù),并填充新的索引表段,記錄音視頻數(shù)據(jù)的索引信息;寫入文件尾部包;改寫頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項。本發(fā)明通過續(xù)寫的方法對不完整MXF文件進行處理,相比對不完整MXF文件的重寫操作,大大縮短了處理時間,減少了工作量。
【專利說明】
0p1 a和0p1 b格式的MXF文件的續(xù)寫方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及MXF文件續(xù)寫技術(shù)領(lǐng)域,特別是涉及一種Opla和Oplb格式的MXF文件的續(xù)寫方法。
【背景技術(shù)】
[0002]MXF可以同時處理打包多條軌道的音視頻和數(shù)據(jù)庫文件,所以一個完整的MXF素材內(nèi)容較多,且文件較大。在MXF文件的生成過程中,如果遇到斷電或者其他情況,文件寫入中斷后,現(xiàn)有技術(shù)都是從頭重新寫入MXF文件,這樣勢必會有以下幾個方面的缺點:
(1)重寫MXF文件時,首先需要重新寫入HeaderMetadata(頭部元數(shù)據(jù)),頭部元數(shù)據(jù)包含了描述主體的總體內(nèi)容和單個節(jié)目片段的元數(shù)據(jù)組的結(jié)構(gòu),需要有專業(yè)的MXF文件知識背景才能寫入正確,因此需要投入大量精力才能完成;
(2)如果需要生成的MXF文件很大,寫入中斷時有時可能文件已經(jīng)寫了大部分,若這時再從頭開始寫入,勢必會費時費力,;而且,文件已經(jīng)寫到接近尾部時中斷,這時只需再寫入小部分音視頻數(shù)據(jù),然后再按照MXF標(biāo)準寫入FPP(文件尾部包)和RIP(隨機索引包),即能成為一個可供媒體交換的完整素材,若重寫此類文件幾乎相當(dāng)于又重新寫了一個相同的完整文件,這是完全沒有必要的;
(3)若重寫MXF文件,由于不同文件編碼格式的差異所需的描述信息不同,如果不懂解碼所需信息的人在寫入視音頻數(shù)據(jù)描述信息時,有可能不清楚必須要寫入的描述參數(shù),重寫時可能造成錯誤。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種Opla和Oplb格式的MXF文件的續(xù)寫方法,通過續(xù)寫的方法對不完整MXF文件進行處理,相比對不完整MXF文件的重寫操作,大大縮短了處理時間,減少了工作量。
[0004]本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的:0pla和Oplb格式的MXF文件的續(xù)寫方法,包括:判斷MXF文件是否完整;若所述MXF文件不完整,則判斷所述MXF文件的頭部元數(shù)據(jù)是否完成,若所述頭部元數(shù)據(jù)未完成,則重寫所述頭部元數(shù)據(jù);尋找MXF文件中最后一個包含完整索引表段的文件體包,通過解析所述文件體包獲取已寫入的音視頻幀數(shù);繼續(xù)寫入音視頻數(shù)據(jù),并填充新的索引表段,記錄音視頻數(shù)據(jù)的索引信息;寫入文件尾部包。
[0005]所述續(xù)寫方法還包括:改寫頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項。
[0006]判斷MXF文件是否完整的方法為:讀取所述MXF文件的末尾的數(shù)據(jù)進行分析,判斷所述MXF文件是否存在隨機索引包,若所述MXF文件存在隨機索引包,則認為所述MXF文件完整,否則認為所述MXF文件不完整。
[0007]若所述頭部元數(shù)據(jù)完成,則記錄頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項在文件中的偏移量。
[0008]所述頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項包括視音頻序列和實際源素材。
[0009]所述續(xù)寫方法還包括:判斷是否寫入完整的索引表段和隨機索引包。
[0010]本發(fā)明的有益效果是:
(1)減少不完整MXF文件寫入的工作量:不完整的MXF文件續(xù)寫時,不需要重新寫入頭部元數(shù)據(jù),而且已經(jīng)寫入的部分音視頻數(shù)據(jù)就不需要再重寫一遍,能夠大大減少工作量;
(2)縮短不完整MXF文件寫入的時間:已寫入的音視頻數(shù)據(jù)不需要重新寫入,節(jié)省了大量時間,尤其是文件第一次寫入塊接近尾部的時候中斷,續(xù)寫此類文件相比重寫此類文件,優(yōu)勢更是顯而易見的;
(3)提高不完整的MXF文件的寫入的可操作性:因為減少了頭部元數(shù)據(jù)的重新寫入,對于尾部需要寫入視頻描述信息和音頻描述信息的MXF文件,只需要解析MXF文件頭部中的頭部元數(shù)據(jù)信息,復(fù)制寫入即可。
【附圖說明】
[0011 ]圖1為本發(fā)明中Op I a和Op Ib格式的MXF文件的續(xù)寫方法。
【具體實施方式】
[0012]下面結(jié)合附圖進一步詳細描述本發(fā)明的技術(shù)方案,但本發(fā)明的保護范圍不局限于以下所述。
[0013]如圖1所示,OpI a和Op I b格式的MXF文件的續(xù)寫方法,包括以下步驟:
步驟一、判斷MXF文件是否完整:讀取所述MXF文件的末尾的數(shù)據(jù)進行分析,判斷所述MXF文件是否存在隨機索引包,若所述MXF文件存在隨機索引包,則認為所述MXF文件完整,否則認為所述MXF文件不完整。
[0014]步驟二、若所述MXF文件不完整,則判斷所述MXF文件的頭部元數(shù)據(jù)是否完成,若所述頭部元數(shù)據(jù)未完成,則重寫所述頭部元數(shù)據(jù);若所述頭部元數(shù)據(jù)完成,則記錄頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項在文件中的偏移量。通過記錄需要改寫時長參數(shù)的項在文件中的偏移量,方便后續(xù)改寫時長時,直接根據(jù)記錄的偏移量定位到需要改寫數(shù)據(jù)的文件位置,無需再次解析頭部元數(shù)據(jù),節(jié)約了時間。
[0015]若所述MXF文件完整,則說明所述MXF文件無需進行續(xù)寫。
[0016]所述頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項包括視音頻序列和實際源素材。
[0017]步驟三、解析MXF文件中的所有文件體包(BPP),尋找MXF文件中最后一個包含完整索引表段(Index Table Segment)的文件體包,通過解析所述文件體包獲取已寫入的音視頻幀數(shù)。
[0018]步驟四、繼續(xù)寫入音視頻數(shù)據(jù),并填充新的索引表段,記錄音視頻數(shù)據(jù)的索引信息。
[0019]步驟五、寫入文件尾部包。
[0020]所述續(xù)寫方法還包括:改寫頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項,通過前文解析得到的視音頻序列和實際源素材在文件中的偏移量進行定位,改寫視音頻序列和實際源素材中的時長項。
[0021]所述續(xù)寫方法還包括:根據(jù)文件的具體格式判斷是否需要寫入完整的索引表段和隨機索引包,對于需要寫入完整索引表段和隨機索引包的MXF文件,則進行索引表段和隨機索引包的寫入。
[0022]本發(fā)明基于MXF標(biāo)準打包方式,通過解析MXF文件的物理結(jié)構(gòu)和邏輯結(jié)構(gòu),能夠簡單、快速的實現(xiàn)對不完整MXF文件的處理,處理后的MXF文件能夠正確播放及傳輸。通過續(xù)寫的方法對不完整MXF文件進行處理,相比對不完整MXF文件的重寫操作,大大縮短了處理時間,減少了工作量。
[0023]以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。
【主權(quán)項】
1.0p I a和Op Ib格式的MXF文件的續(xù)寫方法,其特征在于:包括: 判斷MXF文件是否完整; 若所述MXF文件不完整,則判斷所述MXF文件的頭部元數(shù)據(jù)是否完成,若所述頭部元數(shù)據(jù)未完成,則重寫所述頭部元數(shù)據(jù); 尋找MXF文件中最后一個包含完整索引表段的文件體包,通過解析所述文件體包獲取已寫入的音視頻幀數(shù); 繼續(xù)寫入音視頻數(shù)據(jù),并填充新的索引表段,記錄音視頻數(shù)據(jù)的索引信息; 寫入文件尾部包。2.根據(jù)權(quán)利要求1所述的OpI a和Op I b格式的MXF文件的續(xù)寫方法,其特征在于:所述續(xù)寫方法還包括:改寫頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項。3.根據(jù)權(quán)利要求1所述的OpIa和Op Ib格式的MXF文件的續(xù)寫方法,其特征在于:判斷MXF文件是否完整的方法為:讀取所述MXF文件的末尾的數(shù)據(jù)進行分析,判斷所述MXF文件是否存在隨機索引包,若所述MXF文件存在隨機索引包,則認為所述MXF文件完整,否則認為所述MXF文件不完整。4.根據(jù)權(quán)利要求1所述的Opla和Oplb格式的MXF文件的續(xù)寫方法,其特征在于:若所述頭部元數(shù)據(jù)完成,則記錄頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項在文件中的偏移量。5.根據(jù)權(quán)利要求2或4所述的Opla和Oplb格式的MXF文件的續(xù)寫方法,其特征在于:所述頭部元數(shù)據(jù)中需要改寫時長參數(shù)的項包括視音頻序列和實際源素材。6.根據(jù)權(quán)利要求1所述的OpI a和Op I b格式的MXF文件的續(xù)寫方法,其特征在于:所述續(xù)寫方法還包括:判斷是否寫入完整的索引表段和隨機索引包。
【文檔編號】G06F17/30GK106021565SQ201610376225
【公開日】2016年10月12日
【申請日】2016年5月31日
【發(fā)明人】侯小葉, 張金沙, 劉盾
【申請人】成都索貝數(shù)碼科技股份有限公司