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