《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > MP4共享FLV數(shù)據(jù)研究與實現(xiàn)
MP4共享FLV數(shù)據(jù)研究與實現(xiàn)
來源:微型機(jī)與應(yīng)用2014年第3期
李興華,楊天奇
(暨南大學(xué) 計算機(jī)應(yīng)用技術(shù)系,廣東 廣州 510632)
摘要: MP4共享FLV數(shù)據(jù)的研究旨在以極小存儲空間高效方便地實現(xiàn)MP4文件與FLV文件的數(shù)據(jù)共享,滿足主流移動平臺的在線視頻播放。通過研究發(fā)現(xiàn),只需要利用FLV文件1%左右的存儲空間,就可以支持移動設(shè)備觀看FLV視頻內(nèi)容。MP4共享FLV數(shù)據(jù)具有很高的理論價值和現(xiàn)實意義。
Abstract:
Key words :

摘  要: MP4共享FLV數(shù)據(jù)的研究旨在以極小存儲空間高效方便地實現(xiàn)MP4文件與FLV文件的數(shù)據(jù)共享,滿足主流移動平臺的在線視頻播放。通過研究發(fā)現(xiàn),只需要利用FLV文件1%左右的存儲空間,就可以支持移動設(shè)備觀看FLV視頻內(nèi)容。MP4共享FLV數(shù)據(jù)具有很高的理論價值和現(xiàn)實意義。
關(guān)鍵詞: 視頻網(wǎng)站;MP4;FLV;移動設(shè)備;數(shù)據(jù)共享

 進(jìn)入Web 2.0時代后,國外的Youtube,國內(nèi)的優(yōu)酷、土豆網(wǎng)等視頻分享網(wǎng)站快速發(fā)展,F(xiàn)LV因為占用的存儲空間小、加載速度快,已經(jīng)成為各主流視頻網(wǎng)站存儲視頻的主要格式。隨著移動互聯(lián)網(wǎng)的發(fā)展,越來越多的人喜歡在移動設(shè)備上觀看在線視頻,而MP4格式[1]則是IOS、Android等主流移動智能操作系統(tǒng)原生支持的視頻格式。將FLV視頻轉(zhuǎn)化為MP4視頻,是視頻網(wǎng)站為支持這些移動設(shè)備在線觀看的傳統(tǒng)方法。這種方法的缺點是對于每個FLV視頻需要轉(zhuǎn)化出一個大小相當(dāng)?shù)腗P4文件,占用服務(wù)器巨大的存儲空間[2-3],同時需要耗費較多的轉(zhuǎn)化時間。現(xiàn)在越來越多的公司采用HTTP Live Streaming(HLS)[4]將流媒體切分為若干Transport Stream(TS)片段,然后通過一個擴(kuò)展的m3u8播放列表文件將這些TS片段集中起來供客戶端播放器接收。其優(yōu)點是用戶切換進(jìn)度更快,臨時文件小;缺點是生成和分發(fā)比較復(fù)雜,生成高清視頻TS片段時服務(wù)器負(fù)載較高。MP4格式共享FLV格式數(shù)據(jù)的優(yōu)勢是它能以極小存儲空間高效方便地滿足主流移動平臺的在線視頻播放。
1 相關(guān)技術(shù)
1.1 FLV視頻格式簡介

 Flash Video(FLV)[5]流媒體格式是隨著Flash MX的推出而發(fā)展而來的視頻格式。FLV文件占用的存儲空間非常小。FLV還有解碼效率高和視頻清晰等優(yōu)點。因此,主要的在線視頻網(wǎng)站均使用FLV格式文件存儲視頻,為用戶提供優(yōu)質(zhì)的在線視頻服務(wù)。
 FLV是一種全新的流媒體視頻格式,它利用了網(wǎng)頁中廣泛使用的Flash Player平臺,將FLV視頻整合到Flash動畫中。只要訪問者能夠正常觀看Flash動畫,就能觀看FLV格式視頻,而無需再額外安裝其他視頻插件。因此,F(xiàn)LV格式的使用給視頻的傳播帶來了極大便利。
 FLV是一個二進(jìn)制文件,文件符合流式傳輸?shù)奶攸c,由文件頭(FLV Header)和文件體(FLV Body)組成。FLV文件結(jié)構(gòu)圖如圖1所示。文件頭定義了Flash文檔的版本、是否壓縮、文件大小、場景大小、幀率和總幀數(shù)[6]。文件體由大量的標(biāo)簽(Tag)組成,文件體的最后是一個結(jié)束標(biāo)簽。Tag又可以分成Audio和Video和Script 3類,分別代表音頻流、視頻流和腳本流。每一個Tag都包括一個標(biāo)簽頭(Header)和一個數(shù)據(jù)體(Body)。

 通過解析FLV格式而得到的Tag內(nèi)容里的音視頻數(shù)據(jù)就是MP4文件格式所需要共享的FLV文件格式的內(nèi)容。
由于主流移動平臺對Flash Player支持不夠,存儲為FLV格式的視頻不能有效滿足移動平臺觀看,而MP4格式卻是可以得到廣泛支持的視頻格式,因此將這些FLV視頻轉(zhuǎn)化成MP4格式是視頻網(wǎng)站的傳統(tǒng)做法。
1.2 MP4視頻格式簡介
 MP4[7],全稱MPEG-4 Part 14[8],是一種使用MPEG-4的多媒體電腦檔案格式,后綴名為.mp4。
 MP4視頻文件封裝格式是基于QuickTime[8]容器格式定義的。MP4文件格式是一個十分開放的容器,幾乎可以用來描述所有的媒體結(jié)構(gòu),MP4文件中的媒體描述與媒體數(shù)據(jù)是分開的,并且媒體數(shù)據(jù)的組織也很自由,不一定要按照時間順序排列。
 MP4文件格式是以面向?qū)ο蟮募軜?gòu)來描述文件的,對象被稱為box。MP4文件中的所有數(shù)據(jù)都裝在box中,也就是說,MP4文件由若干個box組成。每個box的結(jié)構(gòu)都由大小、類型和內(nèi)容組成。一個box還可以包含別的box,這種分層結(jié)構(gòu)以及box的自身結(jié)構(gòu)使得box的插入和刪除十分方便。
 同時,MP4也支持流媒體[9]。MP4目前被廣泛用于封裝H.264[10]視頻和Advanced Audio Coding(AAC)音頻,是高清視頻的代表。
 通過對FLV和MP4的介紹可知,如果能將FLV轉(zhuǎn)化MP4的傳統(tǒng)方法加以創(chuàng)新,使MP4共享FLV數(shù)據(jù),不僅能在存儲空間上大大節(jié)省成本,計算效率也能大幅度提高,具有很高的研究價值和現(xiàn)實意義。
2 MP4文件共享FLV文件媒體數(shù)據(jù)
2.1 MP4格式特點

 MP4由一系列的box組成,box是一種獨特類型的由識別符和長度構(gòu)成的面向?qū)ο蟮慕ㄖK,也稱為atom。表2列出了常見的box類型。

 通常來說,一個MP4文件主要包含兩個atom,分別是存儲元數(shù)據(jù)的Movie atom(moov)和存儲媒體數(shù)據(jù)的Media Data atom(mdat)[11-14]。
 一個MP4文件由一個ftyp類型的box開始,ftyp包含關(guān)于文件的一些信息。ftyp之后有且只有一個moov類型的box,它是一種容器box,子box包含了媒體的元數(shù)據(jù)信息。MP4文件的媒體數(shù)據(jù)包含在mdat類型的box中,該類型的box也是容器box,可以有多個子box。圖2展示了MP4文件的結(jié)構(gòu)樹。

 moov包含了文件媒體的所有元數(shù)據(jù)信息,moov容器box通常在靠近該文件的開頭或結(jié)尾地方。
 trak是一個container box,其子box包含了該軌道的媒體數(shù)據(jù)引用和描述。一個MP4文件中的媒體可以包含多個track,并且至少有一個軌道,這些軌道之間彼此獨立,有各自的時間和空間信息。
 mdia容器的軌道媒體信息定義了軌道媒體類型。
 minf容器包含了所有關(guān)于軌道媒體中定義特征信息的對象。
stbl樣品表box包含了軌道里所有媒體樣本的時間和數(shù)據(jù)索引信息。通過樣本表,可以定位樣本的時間,確定它們的類型(例如I-幀),并確定它們的大小以及文件中的偏移量。
 stsc提供樣本塊的部分?jǐn)?shù)據(jù)的偏移信息表。媒體數(shù)據(jù)里的樣本被分組為塊。塊可以是不同的大小,塊內(nèi)的樣本可以具有不同的尺寸。這個表可以用于找到塊的位置以及相關(guān)的樣本描述。偏移信息表是緊湊的編碼。每個條目給出運行塊的第一個塊的索引。
 stsz包含樣本數(shù)和一張描述各個樣本大小(以字節(jié)為單位)的表。
 stso、co64對象包含一張塊的偏移表,表里給出了文件中每個塊的索引,允許使用32位或64位偏移,64位偏移在文件超過4 GB時使用。
2.2 MP4文件共享FLV文件數(shù)據(jù)
 MP4文件中的媒體描述與媒體數(shù)據(jù)是分開的[6],MP4的媒體數(shù)據(jù)的組織也很自由,可以不用按照時間順序排列。MP4文件共享FLV文件媒體數(shù)據(jù)關(guān)鍵就在于生成一個共享FLV媒體數(shù)據(jù)的MP4文件頭部,稱為共享MP4頭部。
 共享MP4頭部在媒體描述中的stco box記錄每個媒體數(shù)據(jù)數(shù)據(jù)塊在完整MP4文件中位置,完整MP4文件由共享MP4頭部和對應(yīng)的FLV文件組成。即在原有FLV文件的基礎(chǔ)上,再增加一個只有FLV文件1%左右大小的共享MP4頭部,就可以共享FLV文件的視頻內(nèi)容。
 對于在線視頻網(wǎng)站,可以不用在視頻服務(wù)器里為每個FLV視頻轉(zhuǎn)化一個完整的MP4視頻,視頻網(wǎng)站可以通過生成共享MP4頭部共享FLV視頻數(shù)據(jù),節(jié)省巨大的存儲空間。
 對于一個已經(jīng)存在FLV文件格式的視頻,只需要用共享工具生成對應(yīng)的共享MP4頭部,就可以同時滿足對這個視頻的FLV和MP4兩種格式的訪問需求。
當(dāng)用戶通過移動設(shè)備觀看某個視頻時,視頻網(wǎng)絡(luò)的服務(wù)器只需要順序返回這個視頻的共享MP4頭部和FLV視頻文件即可。
 MP4文件共享FLV文件數(shù)據(jù)方案以極小的存儲代價和計算代價,滿足了移動設(shè)備觀看已經(jīng)存在的海量FLV視頻文件的需求。
2.3 基于FFMPEG庫的共享工具簡介
 MP4文件共享FLV文件數(shù)據(jù)的共享工具主要是在開源項目FFMPEG的基礎(chǔ)上實現(xiàn)的。
FFMPEG是一個非常優(yōu)秀的開源免費跨平臺的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據(jù)所選擇的組件)。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。
 FFMPEG是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計算機(jī)程序。它包括了目前領(lǐng)先的音/視頻編碼庫libavcodec等。
 共享工具主要使用了FFMPEG庫里的libavformat、libavcodec和ffmpeg項目。libavformat用于各種音視頻封裝格式的生成和解析,包括獲取解碼所需信息以生成解碼上下文結(jié)構(gòu)和讀取音視頻幀等功能;libavcodec用于各種類型聲音/圖像編解碼;ffmpeg項目提供的一個工具可用于格式轉(zhuǎn)換、解碼等。
2.4 共享工具生成共享MP4文件
 共享工具生成共享MP4文件,首先需要將FLV文件解封裝提取出FLV文件中的視頻信息,然后將這些視頻描述信息寫入共享MP4文件中。
 在FLV文件中解析出的每個標(biāo)簽里,數(shù)據(jù)區(qū)的內(nèi)容是需要共享的內(nèi)容,也是FLV文件里的最主要組成部分。將FLV文件中每個標(biāo)簽的數(shù)據(jù)區(qū)在FLV文件中的偏移值記錄在共享MP4文件的stco對象中,將FLV的每個標(biāo)簽的數(shù)據(jù)區(qū)長度記錄在共享MP4文件的stsz對象中。
 共享MP4文件的mdat對象的大小就是FLV文件的大小,mdat對象的內(nèi)容則不需要寫入共享MP4文件,因為mdat對象內(nèi)容正是對應(yīng)的整個FLV文件。共享MP4文件和對應(yīng)的FLV文件可以組成一個完整的MP4文件。
共享工具需要生成的共享MP4文件是一個除去mdat對象內(nèi)容的MP4文件。在初始生成共享MP4文件過程中,需要在共享MP4文件的stco對象中記錄對應(yīng)FLV中每個音視頻標(biāo)簽的內(nèi)容數(shù)據(jù)在FLV文件的位置,即共享MP4文件stco對象存儲著FLV文件中標(biāo)簽的內(nèi)容的偏移值,如圖3所示。


2.5 修正共享MP4文件
 共享工具初始生成的共享MP4文件中的stco對象記錄的偏移值是在FLV文件中的偏移值,不是共享MP4文件和FLV文件組合成的完整MP4文件中的偏移值,因此需要修正共享MP4文件的stco對象中記錄的原始偏移值。需要將共享MP4文件的stco對象中的原始偏移值加上共享MP4文件的大小,如圖4所示,這樣得出的位置值才是共享MP4文件和對應(yīng)FLV文件組合成的完整MP4文件里的真實偏移值。

 本文主要研究了一種傳統(tǒng)流媒體文件FLV在適應(yīng)移動設(shè)備上播放的一種高效、節(jié)約成本的可行性方案。MP4共享FLV數(shù)據(jù)利用MP4和FLV兩種格式的特點達(dá)到數(shù)據(jù)共享的目的,從而滿足了移動設(shè)備在線觀看的需求。
 相對于直接轉(zhuǎn)換MP4文件的方式,MP4文件共享FLV文件數(shù)據(jù)方案節(jié)約了近一半的存儲空間,并且對于計算的消耗極小。對于擁有上千萬部FLV視頻內(nèi)容的視頻網(wǎng)站,利用共享數(shù)據(jù)方案可節(jié)省上千萬元的存儲成本,且維護(hù)起來非常方便、可靠。相對于TS流方案,MP4文件共享FLV文件數(shù)據(jù)方案對源服務(wù)器的負(fù)載壓力小很多,且生成、分發(fā)以及維護(hù)也簡單很多。
 由于MP4文件播放前需要加載完整個頭部才能播放,因此對于低質(zhì)量的長視頻文件,利用HLS協(xié)議提供服務(wù)體驗會更好;對于高清短視頻,使用MP4文件共享FLV文件數(shù)據(jù)方案是最佳選擇。
參考文獻(xiàn)
[1] SINGER D, BELKNAP W, FRANCESCHINI G. ISO media file format specif ication[R]. ISO/IEC JTC1/SC29/WG11 MPEG01/N4270-1, 2001.
[2] 陳利,呂格莉,潘正清.流媒體視頻存儲服務(wù)器設(shè)計與研究[J].計算機(jī)工程與設(shè)計,2010,31(4):903-906
[3] 謝建國,陳松喬.視頻存儲技術(shù)發(fā)展綜述[J].計算機(jī)工程與應(yīng)用,2002,38(9):17-19.
[4] 維基百科.http://zh.wikipedia.org/wiki/HTTP_ Live_Streaming,2013-03-14.
[5] Adobe Macromedia video file format specification version10.http://download.macromedia.com/f4v/video_file_format_spec_v10_ 1.pdf,2013-04.
[6] 王奎澎,劉建輝.Flv文件格式及其嵌入式應(yīng)用[J].計算機(jī)系統(tǒng)應(yīng)用,2010,19(3):190-191.
[7] ISO/IEC 14496-14, information technology-coding of audio-visual objects-part 14: MP4 file format[S].
[8] ISO/IEC 14496-10, information technology-coding of audio-visual objects-part 10: Advanced video coding[S].
[9] Apple. QuickTime file format specification[S].
[10] THOMAS W, GARY S, GISLE B, et al. Overview of the H.264 PAVC video coding standard[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2003(7):560-576.
[11] ISMA. Internet streaming media alliance implementation specification(Version 2.0)[M].
[12] 周瑾,支琤,宋利.流媒體應(yīng)用TS和MP4格式分析[J].信息技術(shù),2007(7):16-18.
[13] 趙麗娜,韓冬梅,薛華成.一種有效加密MP4文件的方法[J].計算機(jī)應(yīng)用與軟件,2010,10(10):22-23.
[14] 鄭翔,周秉峰,葉志遠(yuǎn),等.流文件MP4文件的核心技術(shù)[J].計算機(jī)應(yīng)用,2004(5):76-78.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲国产毛片完整版| 一区二区三区国产在线| 亚洲日本中文字幕免费在线不卡| 国产午夜精品理论片a级大结局| 欧美午夜不卡| 欧美精品自拍| 欧美极品欧美精品欧美视频| 另类欧美日韩国产在线| 久久久噜噜噜久久久| 久久久久99精品国产片| 久久国产精品一区二区| 欧美在线观看网站| 欧美在线观看天堂一区二区三区| 欧美一级播放| 久久精品国产久精国产思思| 欧美专区日韩视频| 久久久久九九视频| 久久青草欧美一区二区三区| 老色鬼精品视频在线观看播放 | 亚洲免费在线视频一区 二区| 亚洲视频一区二区免费在线观看| 亚洲视频免费观看| 亚洲欧美日韩天堂| 欧美中文在线免费| 久久综合久久88| 欧美精品二区| 国产精品第一区| 国产精品伊人日日| 韩国自拍一区| 亚洲黄一区二区三区| 亚洲免费成人av| 亚洲永久字幕| 久久激情综合| 99国内精品久久| 亚洲专区一二三| 久久精品女人的天堂av| 久久永久免费| 欧美日韩亚洲一区二区三区四区| 国产精品久久国产愉拍| 国产亚洲欧美一区二区三区| 136国产福利精品导航网址应用| 亚洲人精品午夜在线观看| 99综合电影在线视频| 亚洲影音一区| 亚洲韩国日本中文字幕| 一区二区三区欧美日韩| 午夜精品免费| 美女脱光内衣内裤视频久久影院 | 欧美日韩精品| 国产精品无人区| 尤物99国产成人精品视频| 日韩亚洲在线| 久久精品91久久香蕉加勒比| 一本一道久久综合狠狠老精东影业| 午夜精品影院在线观看| 久久免费视频在线| 欧美日韩亚洲成人| 国内成人精品2018免费看| 亚洲日本免费| 欧美一级片久久久久久久| 亚洲精品欧美日韩| 欧美一区二区三区免费视频| 欧美 亚欧 日韩视频在线| 国产精品久久久久免费a∨| 黄色成人91| 一区二区日本视频| 亚洲国产精品传媒在线观看 | 极品少妇一区二区三区| 亚洲美女色禁图| 欧美一区二区私人影院日本| 日韩一区二区电影网| 久久国产日本精品| 欧美日韩精品一区二区在线播放 | 狠狠操狠狠色综合网| 99精品视频免费观看| 久久av一区二区三区漫画| 亚洲婷婷在线| 免费不卡在线视频| 国产美女精品| 在线一区日本视频| 亚洲日本一区二区| 久久精品一本久久99精品| 欧美日韩在线另类| 亚洲电影免费观看高清完整版在线 | 亚洲欧美国产va在线影院| 亚洲精品日产精品乱码不卡| 欧美在线free| 国产精品久久久久久超碰| 亚洲国产裸拍裸体视频在线观看乱了中文| 午夜欧美电影在线观看| 亚洲网址在线| 欧美日韩国语| 亚洲欧洲日本mm| 亚洲激情综合| 久久精品系列| 国产嫩草影院久久久久| 99精品视频一区二区三区| 亚洲精品国产精品国自产观看浪潮| 久久久www成人免费无遮挡大片 | 新片速递亚洲合集欧美合集| 亚洲性感激情| 欧美精品一区二区三区一线天视频| 激情久久久久久| 午夜视频一区| 欧美一区二区黄色| 国产精品免费看片| 亚洲先锋成人| 亚洲免费一区二区| 欧美性猛片xxxx免费看久爱| 日韩视频―中文字幕| 亚洲最新色图| 欧美另类女人| 亚洲精品中文字幕女同| 99re66热这里只有精品4| 欧美成年人视频| 亚洲电影在线看| 亚洲人成小说网站色在线| 久久综合综合久久综合| 国语自产偷拍精品视频偷 | 亚洲高清视频一区二区| 久久久久在线| 影音先锋久久| 亚洲精品在线观看视频| 欧美国产精品中文字幕| 亚洲国语精品自产拍在线观看| 亚洲精品网址在线观看| 欧美精品成人| 99re6这里只有精品视频在线观看| 一区二区av在线| 国产精品福利网站| 亚洲欧美日韩精品久久奇米色影视 | 欧美国产日韩视频| 亚洲精品少妇30p| 中文精品在线| 国产精品青草综合久久久久99| 亚洲午夜精品福利| 欧美在线1区| 国产一区二区三区在线观看免费视频 | 影音先锋国产精品| 99riav1国产精品视频| 欧美日韩一级黄| 午夜激情综合网| 久久久精品国产一区二区三区 | 亚洲欧洲一区二区三区在线观看| 99xxxx成人网| 国产精品99免费看| 午夜亚洲性色福利视频| 久久午夜精品| 99re这里只有精品6| 性8sex亚洲区入口| 狠狠色综合日日| 99精品免费网| 国产精品爽爽ⅴa在线观看| 久久av资源网| 欧美精品一区二区三区蜜臀 | 久久黄色网页| 欧美日韩亚洲一区在线观看| 亚洲欧美一区二区三区在线| 久久亚洲一区二区三区四区| 亚洲精品久久久久久一区二区| 亚洲一区免费| 韩日欧美一区| 夜夜嗨av色一区二区不卡| 国产精品自拍三区| 亚洲黄色免费网站| 国产精品女主播一区二区三区| 久久国产黑丝| 欧美日韩在线一区二区| 欧美一区二区国产| 欧美精品一区二区视频| 亚洲一区影音先锋| 欧美mv日韩mv亚洲| 亚洲视频一二| 免费中文字幕日韩欧美| 亚洲一区二区动漫| 美女啪啪无遮挡免费久久网站| 一区二区高清视频| 免费精品99久久国产综合精品| 在线性视频日韩欧美| 你懂的国产精品永久在线| 亚洲一区二区在线视频| 欧美成人三级在线| 性做久久久久久久久| 欧美日韩免费| 亚洲黑丝在线| 国产视频不卡| 亚洲性感美女99在线| 亚洲电影免费观看高清完整版| 午夜免费在线观看精品视频| 亚洲欧洲在线免费| 久久久久久午夜| 亚洲一区二区伦理| 欧美日本精品| 亚洲精品123区| 国产视频亚洲精品| 亚洲一区二区在线看| 亚洲国内精品在线| 久久一区中文字幕| 午夜视频在线观看一区二区| 欧美色中文字幕|