[發(fā)明專利]一種修復(fù)MP4損壞文件的方法有效
| 申請(qǐng)?zhí)枺?/td> | 201911050367.3 | 申請(qǐng)日: | 2019-10-31 |
| 公開(公告)號(hào): | CN110740391B | 公開(公告)日: | 2021-10-26 |
| 發(fā)明(設(shè)計(jì))人: | 許超明;梁效寧;韓勇 | 申請(qǐng)(專利權(quán))人: | 四川效率源信息安全技術(shù)股份有限公司 |
| 主分類號(hào): | H04N21/854 | 分類號(hào): | H04N21/854 |
| 代理公司: | 暫無(wú)信息 | 代理人: | 暫無(wú)信息 |
| 地址: | 641000 四*** | 國(guó)省代碼: | 四川;51 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 修復(fù) mp4 損壞 文件 方法 | ||
1.一種修復(fù)MP4損壞文件的方法,其特征在于包括以下步驟:
S100:獲取任一MP4正常文件,解析所述MP4正常文件以獲取數(shù)據(jù)流的編碼方式、sample數(shù)據(jù)的封裝模式及時(shí)間流的交錯(cuò)模式,其中,所述MP4正常文件與所述MP4損壞文件由相同的MP4制作裝置和/或制作軟件所生成且具有相同的編碼方式及交錯(cuò)模式,所述步驟S100包括以下步驟:
S101:獲取數(shù)據(jù)流的編碼方式,包括以下步驟:
S1011:獲取sample描述信息,所述sample描述信息包含atom大小、類型、版本、標(biāo)志、條目數(shù)及sample描述表,其中,所述類型儲(chǔ)存于stsd中;
S1012:讀取所述sample描述表中的數(shù)據(jù)格式作為所述編碼方式,所述編碼方式包括avc1、mp4a、mp4v、alac、samr、Twos、apcn、in24、sowt及sawb;
S102:獲取時(shí)間流的交錯(cuò)模式,包括以下步驟:
S1021:獲取所述MP4正常文件中各個(gè)音/視頻序列的區(qū)塊偏移表并獲取各個(gè)音/視頻序列的偏移量,所述偏移量是相對(duì)于媒體數(shù)據(jù)區(qū)域的起始地址的相對(duì)偏移地址;
S1022:將各個(gè)音/視頻序列的偏移量并入同一集合并按升序排列;
S1023:查找各個(gè)偏移量所屬的音/視頻序列在所述集合中出現(xiàn)的規(guī)律,用以確定各個(gè)音/視頻序列的交錯(cuò)模式;
S1024:去除所述集合中重復(fù)循環(huán)的音/視頻序列,用以獲取時(shí)間流的交錯(cuò)模式;
S103:獲取sample數(shù)據(jù)的封裝模式,包括以下步驟:
S1031:獲取所述MP4正常文件中sample-區(qū)塊對(duì)應(yīng)關(guān)系表并讀取第一區(qū)塊的序號(hào)、每區(qū)塊的sample數(shù)及sample的描述識(shí)別號(hào);
S1032:根據(jù)所獲取的音/視頻序列的交錯(cuò)模式及所述MP4正常文件中sample-區(qū)塊對(duì)應(yīng)關(guān)系表,獲取sample數(shù)據(jù)的封裝模式;
S200:根據(jù)所述編碼方式及所述交錯(cuò)模式,掃描所述MP4損壞文件的媒體數(shù)據(jù)區(qū)域并獲取所述媒體數(shù)據(jù)區(qū)域中的sample大小及sample的偏移量并記錄在音/視頻序列容器中;
S300:根據(jù)所述音/視頻序列容器中sample大小及sample的偏移位置,修改所述MP4正常文件中moov的區(qū)塊偏移表的偏移量,用以重新構(gòu)建所述MP4正常文件的moov;
S400:采用所述MP4損壞文件的媒體數(shù)據(jù)區(qū)域替換步驟S300中所重新構(gòu)建的所述MP4正常文件的媒體數(shù)據(jù)區(qū)域,生成正常播放的MP4文件,完成所述MP4損壞文件的修復(fù)。
2.根據(jù)權(quán)利要求1所述的一種修復(fù)MP4損壞文件的方法,其特征在于,所述步驟S200包括以下步驟:
S201:讀取所述MP4損壞文件的媒體數(shù)據(jù)容器的數(shù)據(jù),查找媒體數(shù)據(jù)的標(biāo)識(shí),所述媒體數(shù)據(jù)的標(biāo)識(shí)為媒體數(shù)據(jù)的起始地址;
S202:根據(jù)所述MP4正常文件的交錯(cuò)模式,選取要匹配的音/視頻序列;
S203:根據(jù)所述MP4正常文件的每區(qū)塊的sample數(shù)獲取要匹配的sample個(gè)數(shù);
S204:根據(jù)音/視頻序列的編碼方式來(lái)掃描媒體數(shù)據(jù)中的sample,用以匹配所讀取的sample;
S205:判斷所讀取的sample是否與音/視頻序列的編碼方式匹配,如果是,執(zhí)行步驟S207,否則,執(zhí)行步驟S206;
S206:尋址下一所需讀取的sample,執(zhí)行步驟S204;
S207:記錄當(dāng)前sample的字節(jié)長(zhǎng)度和偏移量,并將當(dāng)前sample的偏移量記錄在音/視頻序列容器中。
3.根據(jù)權(quán)利要求2所述的一種修復(fù)MP4損壞文件的方法,其特征在于,針對(duì)不同的音/視頻序列的編碼方式,獲取sample的字節(jié)長(zhǎng)度的方法如下:
編碼方式為avc1:以當(dāng)前sample的起始地址為首地址,向后偏移0x5字節(jié)并讀取字節(jié)的內(nèi)容,與0x1f進(jìn)行邏輯與運(yùn)算,所得結(jié)果表示sample的類型且小于十進(jìn)制數(shù)21,當(dāng)前sample的前4字節(jié)的內(nèi)容表示sample的字節(jié)長(zhǎng)度;
編碼方式為mp4a:以當(dāng)前sample的起始地址為首地址,向后偏移0x5字節(jié)、0x06字節(jié)并分別讀取字節(jié)的內(nèi)容且所讀取的內(nèi)容分別為0xee、0x1b,或者,
以當(dāng)前sample的起始地址為首地址,向后偏移0x5字節(jié)、0x06字節(jié)并分別讀取字節(jié)的內(nèi)容,所讀取的內(nèi)容分別為0x3e、0x64且當(dāng)前sample的首字節(jié)內(nèi)容不為零;
采用ffpeg的untr_decode_audio4函數(shù)獲得sample的字節(jié)長(zhǎng)度;
編碼方式為mp4v:以當(dāng)前sample的起始地址為首地址,前兩個(gè)字節(jié)的內(nèi)容為0x1b3或0x1b6,采用ffpeg的avcodec_decode_video2函數(shù)獲得sample的字節(jié)長(zhǎng)度;
編碼方式為alac:以當(dāng)前sample的起始地址為首地址,向后偏移0x5字節(jié)并讀取連續(xù)4字節(jié)的內(nèi)容的整數(shù)t,當(dāng)前sample的前4字節(jié)的內(nèi)容為0x00時(shí),t的值為0x00130000,或,
當(dāng)前sample的前4字節(jié)的內(nèi)容為0x1000時(shí),t的值為0x001a0000,采用ffpeg的untr_decode_audio4函數(shù)獲得sample的字節(jié)長(zhǎng)度;
編碼方式為samr:當(dāng)前sample的首字節(jié)內(nèi)容為0x3c,sample的字節(jié)長(zhǎng)度為32字節(jié)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于四川效率源信息安全技術(shù)股份有限公司,未經(jīng)四川效率源信息安全技術(shù)股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911050367.3/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
H04N 圖像通信,如電視
H04N21-00 可選的內(nèi)容分發(fā),例如交互式電視,VOD〔視頻點(diǎn)播〕
H04N21-20 .專門適用于內(nèi)容分發(fā)的專用服務(wù)器,例如:VOD服務(wù)器;其操作
H04N21-40 .專門適用于接收內(nèi)容或者與內(nèi)容交互的客戶端設(shè)備,如STB[機(jī)頂盒];相關(guān)操作
H04N21-60 .用于在服務(wù)器和客戶端之間或者在遠(yuǎn)程客戶端之間的視頻分配的網(wǎng)絡(luò)結(jié)構(gòu)或者處理
H04N21-80 .通過(guò)內(nèi)容產(chǎn)生器獨(dú)立于分配過(guò)程實(shí)現(xiàn)的內(nèi)容或附加數(shù)據(jù)的生成或處理;內(nèi)容本身
H04N21-81 ..其單媒體部件





