Mp4視頻源的傳送方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種MP4視頻源的傳送方法和裝置。
【背景技術(shù)】
[0002] 隨著計(jì)算機(jī)、數(shù)字媒體技術(shù)、音視頻技術(shù)不斷的提高,網(wǎng)絡(luò)音視頻傳輸技術(shù)越來越 重要。流媒體技術(shù)的興起,越來越多的用戶選擇從網(wǎng)上獲得視頻進(jìn)行網(wǎng)絡(luò)視頻流媒體的播 放。網(wǎng)絡(luò)視頻流媒體的播放主要是基于MP4容器格式的播放,以MP4視頻源為例,MP4視頻源 的文件封裝格式是基于QuickTime容器格式定義的,它是一種十分開放的容器,其主要由 ftyp原子、moov原子、mdat原子組成。其中,ftyp原子作為MP4視頻源格式的標(biāo)志并包含關(guān)于 文件的一些信息,moov原子包含了媒體的metadata數(shù)據(jù)信息,mdat原子包含了傳送MP4文件 的數(shù)據(jù),該數(shù)據(jù)的組成是由不同的sample組成。
[0003] 目前,傳統(tǒng)的MP4視頻源播放是將這三種原子統(tǒng)一的組合進(jìn)行播放,即在MP4視頻 源文件播放中先解析ftyp原子,然后解析moov原子,最后播放mdat原子中的sample。且在 MP4視頻源文件的傳送過程中,文件的大小是不固定的傳送。若進(jìn)行本地播放,由于文件已 經(jīng)下載存放在本地的路徑下,因此不會(huì)丟失moov原子中包含的metadata數(shù)據(jù)信息而漏掉一 些文件的信息。但是若MP4視頻源文件的播放是網(wǎng)絡(luò)視頻流媒體的播放,由于網(wǎng)絡(luò)的moov原 子中包含的metadata數(shù)據(jù)信息與網(wǎng)絡(luò)的傳送下載速度有關(guān),并且網(wǎng)絡(luò)傳送的數(shù)據(jù)大小是不 固定的。因此,當(dāng)網(wǎng)絡(luò)不穩(wěn)定或網(wǎng)絡(luò)下載出現(xiàn)故障時(shí),將會(huì)丟失moov原子,隨之mdat原子中 的sample的媒體數(shù)據(jù)也將會(huì)丟失,從而使得傳送過程中moov原子與mdat原子的信息不一 致,導(dǎo)致mdat原子無法解析,播放錯(cuò)誤。大大降低了對MP4視頻源的傳送效率,若繼續(xù)進(jìn)行網(wǎng) 絡(luò)的MP4視頻源播放,在播放中將出現(xiàn)卡頓,不能流暢進(jìn)行播放。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的主要目的在于提供一種MP4視頻源的傳送方法和裝置,旨在提高對MP4視 頻源的傳送效率。
[0005] 為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種MP4視頻源的傳送方法,包括:
[0006] 獲取網(wǎng)絡(luò)傳輸流中的MP4視頻源,并分別提取所述MP4視頻源中的moov原子及mdat 原子;
[0007] 將所述mdat原子進(jìn)行拆分得到多個(gè)從mdat原子;
[0008] 將所述moov原子分別與每一所述從mdat原子進(jìn)行組合得到多個(gè)組合對,并將所述 多個(gè)組合對組合得到新MP4視頻源;
[0009] 將所述新MP4視頻源進(jìn)行傳送。
[0010] 優(yōu)選地,所述將所述mdat原子進(jìn)行拆分得到多個(gè)從mdat原子包括:
[0011]獲取所述mdat原子中所有I幀的位置;
[0012]將所述I幀的不同位置作為拆分點(diǎn),對所述mdat原子進(jìn)行拆分得到多個(gè)從mdat原 子。
[0013] 優(yōu)選地,所述mdat原子包括多個(gè)sample,所述將所述moov原子分別與每一所述從 mdat原子進(jìn)行組合得到多個(gè)組合對,并將所述多個(gè)組合對組合得到新MP4視頻源包括:
[0014] 獲取拆分后每個(gè)從mdat原子中sample的個(gè)數(shù);
[0015] 以MP4視頻源中的第一個(gè)I幀的位置為基準(zhǔn),將所述moov原子與所述第一個(gè)I幀以 及第二個(gè)I幀之間對應(yīng)數(shù)目的sample進(jìn)行組合,繼續(xù)以所述第二個(gè)I幀的位置為基準(zhǔn),將所 述moov原子與所述第二個(gè)I幀以及第三個(gè)I幀之間對應(yīng)數(shù)目的sample進(jìn)行組合,直至完成所 述moov原子與所有sample的組合;
[0016] 根據(jù)所述第一個(gè)I幀的編解碼信息設(shè)置關(guān)鍵位標(biāo)識,以作為重組后的MP4視頻源的 標(biāo)識。
[0017] 優(yōu)選地,所述moov原子和不同的sample進(jìn)行組合式表示為:
[0019] 其中,moov表示一個(gè)moov原子,k表示第k個(gè)I幀,T為兩個(gè)I幀之間sample的數(shù)目, sample (k)(t)表示第k個(gè)I幀對應(yīng)的T個(gè)sample的數(shù)目,t為從1遞增至T的自然數(shù),X表示拆分 后得到的從mdat原子的個(gè)數(shù);
[0020] X=M/N;
[0021 ] 其中,Μ表示MP4視頻源中的sample的總數(shù),N表示MP4視頻源中I幀的總數(shù)。
[0022] 優(yōu)選地,所述將所述新MP4視頻源進(jìn)行傳送之前包括:
[0023] 將重組后的MP4視頻源的傳送大小設(shè)置為通信接口的最大傳輸單元大小。
[0024]此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種MP4視頻源的傳送裝置,包括:
[0025]信息提取模塊,用于獲取網(wǎng)絡(luò)傳輸流中的MP4視頻源,并分別提取所述MP4視頻源 中的moov原子及mdat原子;
[0026]拆分模塊,用于將所述mdat原子進(jìn)行拆分得到多個(gè)從mdat原子;
[0027] 重組模塊,用于將所述moov原子分別與每一所述從mdat原子進(jìn)行組合得到多個(gè)組 合對,并將所述多個(gè)組合對組合得到新MP4視頻源;
[0028] 傳送模塊,用于將所述新MP4視頻源進(jìn)行傳送。
[0029 ]優(yōu)選地,所述拆分模塊包括:
[0030]位置獲取單元,用于獲取所述mdat原子中所有I幀的位置;
[0031]拆分單元,用于將所述I幀的不同位置作為拆分點(diǎn),對所述mdat原子進(jìn)行拆分得到 多個(gè)從mdat原子。
[0032] 優(yōu)選地,所述mdat原子包括多個(gè)sample,所述重組模塊包括:
[0033] 個(gè)數(shù)獲取單元,用于獲取拆分后每個(gè)從mdat原子中sample的個(gè)數(shù);
[0034] 組合單元,用于以MP4視頻源中的第一個(gè)I幀的位置為基準(zhǔn),將所述moov原子與所 述第一個(gè)I幀以及第二個(gè)I幀之間對應(yīng)數(shù)目的sample進(jìn)行組合,繼續(xù)以所述第二個(gè)I幀的位 置為基準(zhǔn),將所述moov原子與所述第二個(gè)I幀以及第三個(gè)I幀之間對應(yīng)數(shù)目的sample進(jìn)行組 合,直至完成所述moov原子與所有sample的組合;
[0035] 標(biāo)識設(shè)置單元,用于根據(jù)所述第一個(gè)I幀的編解碼信息設(shè)置關(guān)鍵位標(biāo)識,以作為重 組后的MP4視頻源的標(biāo)識。
[0036] 優(yōu)選地,所述moov原子和不同的sample進(jìn)行組合式表示為:
[0038] 其中,moov表示一個(gè)moov原子,k表示第k個(gè)I幀,T為兩個(gè)I幀之間sample的數(shù)目, sample (k)(t)表示第k個(gè)I幀對應(yīng)的T個(gè)sample的數(shù)目,t為從1遞增至T的自然數(shù),X表示拆分 后得到的從mdat原子的個(gè)數(shù);
[0039] X=M/N;
[0040] 其中,Μ表示MP4視頻源中的samp 1 e的總數(shù),N表示MP4視頻源中I幀的總數(shù)。
[0041 ]優(yōu)選地,所述MP4視頻源的傳送裝置還包括:
[0042]設(shè)置模塊,用于將重組后的MP4視頻源的傳送大小設(shè)置為通信接口的最大傳輸單 元大小。
[0043] 本發(fā)明實(shí)施例通過對MP4視頻源格式進(jìn)行分析,提取MP4視頻源中的moov原子及 mdat原子等原子信息,并對mdat原子進(jìn)行拆分得到多個(gè)從mdat原子。然后將moov原子分別 與每一從mdat原子進(jìn)行組合,得到重組后的新MP4視頻源,再將新MP4視頻源進(jìn)行傳送。對 MP4視頻源中的原子結(jié)構(gòu)進(jìn)行重構(gòu)解決了當(dāng)網(wǎng)絡(luò)不穩(wěn)定丟失moov原子時(shí),mdat原子中包含 的信息也將會(huì)丟失,導(dǎo)致moov原子與mdat的原子信息不一致而mdat原子無法解析的問題。 提高了對MP4視頻源的傳送效率,從而能夠穩(wěn)定有效的傳送MP4視頻源。
【附圖說明】
[0044]圖1為本發(fā)明MP4視頻源的傳送方法第一實(shí)施例的流程示意圖;
[0045]圖2為傳統(tǒng)的MP4視頻源的結(jié)構(gòu);
[0046]圖3為本發(fā)明重組后的MP4視頻源的結(jié)構(gòu);
[0047]圖4為本發(fā)明MP4視頻源的傳送方法中,將mdat原子進(jìn)行拆分得到多個(gè)從mdat原子 的細(xì)化流程示意圖;
[0048]圖5為本發(fā)明MP4視頻源的傳送方法中,將所述moov原子分別與每一從mdat原子進(jìn) 行組合得到多個(gè)組合對,并將多個(gè)組合對組合得到新MP4視頻源的細(xì)化流程示意圖;
[0049]圖6為本發(fā)明對mdat原子拆分后再進(jìn)行重構(gòu)后的MP4視頻源的結(jié)構(gòu);
[0050]圖7為本發(fā)明MP4視頻源的傳送方法第二實(shí)施例的流程示意圖;
[0051 ]圖8為本發(fā)明MP4視頻源的傳送裝置第一實(shí)施例的功能模塊示意圖;
[0052] 圖9為本發(fā)明MP4視頻源的傳送裝置中拆分模塊的細(xì)化功能模塊示意圖;
[0053] 圖10為本發(fā)明MP4視頻源的傳送裝置中重組模塊的細(xì)化功能模塊示意圖;
[0054] 圖11為本發(fā)明MP4視頻源的傳送裝置第二實(shí)施