亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

FLV文件格式解析

系統(tǒng) 2163 0

FLV(Flash Video)是現(xiàn)在非常流行的流媒體格式,由于其視頻文件體積輕巧、封裝播放簡(jiǎn)單等特點(diǎn),使其很適合在網(wǎng)絡(luò)上進(jìn)行應(yīng)用,目前主流的視頻網(wǎng)站無(wú)一例外地使用了FLV格式。另外由于當(dāng)前瀏覽器與Flash Player緊密的結(jié)合,使得網(wǎng)頁(yè)播放FLV視頻輕而易舉,也是FLV流行的原因之一。

FLV視頻格式是Adobe公司設(shè)計(jì)開發(fā)的,目前已經(jīng)免費(fèi)開放,現(xiàn)在的版本是v10。下面我們就了解一下FLV文件格式。

FLV是流媒體封裝格式,我們可以將其數(shù)據(jù)看為二進(jìn)制字節(jié)流。總體上看,F(xiàn)LV包括文件頭(File Header)和文件體(File Body)兩部分,其中文件體由一系列的Tag及Tag Size對(duì)組成。因此一個(gè)FLV文件看上去是下面的結(jié)構(gòu):

FLV文件格式解析

其中, Previous Tag Size 緊跟在每個(gè) Tag 之后,占 4 個(gè)字節(jié)表示一個(gè) UI32 類型的數(shù)值,表示前面一個(gè) Tag 的大小。需要注意的是, Previous Tag Size #0 的值總是為 0 Tag 類型包括視頻、音頻和 Script ,且每個(gè) Tag 只能包含一種類型的數(shù)據(jù)。下面我們看看 File Header Tag 的具體結(jié)構(gòu),為了方便大家理解,我貼一個(gè)實(shí)際 FLV 文件的字節(jié)流圖片,圖片中把不同部分區(qū)分了顏色。

FLV文件格式解析

一、File Header結(jié)構(gòu)

File Header在當(dāng)前版本中總是由9個(gè)字節(jié)組成,如圖中藍(lán)色區(qū)域所示。

第1-3字節(jié)為文件標(biāo)識(shí)(Signature),總為“FLV”(0x46 0x4C 0x56),如圖中紫色區(qū)域。

第4字節(jié)為版本,目前為1(0x01)。

第5個(gè)字節(jié)的前5位保留,必須為0。

第5個(gè)字節(jié)的第6位表示是否存在音頻Tag。

第5個(gè)字節(jié)的第7位保留,必須為0。

第5個(gè)字節(jié)的第8位表示是否存在視頻Tag。

第6-9個(gè)字節(jié)為UI32類型的值,表示從File Header開始到File Body開始的字節(jié)數(shù),版本1中總為9。

二、Previous Tag Size結(jié)構(gòu)

如圖中紅色位置所示。

三、Tag結(jié)構(gòu)

Tag包括Tag Header和Tag Data兩部分。不同類型的Tag的Header結(jié)構(gòu)是相同的,但是Data結(jié)構(gòu)各不相同。如圖中綠色和黃色區(qū)域分別表示Tag Header數(shù)據(jù)和Tag Data數(shù)據(jù)。

當(dāng)前版本的Tag Header結(jié)構(gòu)占用11個(gè)字節(jié)。

第1個(gè)字節(jié)表示Tag類型,包括音頻(0x08)、視頻(0x09)和script data(0x12),其他類型值被保留。

第2-4字節(jié)為UI24類型的值,表示該Tag Data部分的大小。

第5-7字節(jié)為UI24類型的值,表示該Tag的時(shí)間戳(單位為ms),第一個(gè)Tag的時(shí)間戳總是0。

第8個(gè)字節(jié)為時(shí)間戳的擴(kuò)展字節(jié),當(dāng)24位數(shù)值不夠時(shí),該字節(jié)作為最高位將時(shí)間戳擴(kuò)展為32位值。

第9-11字節(jié)為UI24類型的值,表示stream id,總是0。

后面的字節(jié)為Tag Data數(shù)據(jù),Data的大小由第2-4字節(jié)的數(shù)值指示,根據(jù)第1個(gè)字節(jié)指示的Tag類型,按照不同的結(jié)構(gòu)解析Tag Data。下面分別介紹。

四、Audio Tag Data結(jié)構(gòu)

音頻Tag開始的第1個(gè)字節(jié)包含了音頻數(shù)據(jù)的參數(shù)信息,從第2個(gè)字節(jié)開始為音頻流數(shù)據(jù)。

第1個(gè)字節(jié)的前4位的數(shù)值表示了音頻數(shù)據(jù)格式,各值代表的意義大家可以查閱Adobe公司發(fā)布的FLV格式說明文檔(可以到我的磁盤空間的“資料”目錄去下載 http://e.ys168.com/?tinyfun )。

第1個(gè)字節(jié)的第5-6位的數(shù)值表示采樣率,0 = 5.5 kHz,1 = 11 kHz,2 = 22 kHz,3 = 44 kHz。

第1個(gè)字節(jié)的第7位表示采樣精度,0 = 8bits,1 = 16bits。

第1個(gè)字節(jié)的第8位表示音頻類型,0 = mono,1 = stereo。

五、Video Tag Data結(jié)構(gòu)

視頻Tag也用開始的第1個(gè)字節(jié)包含視頻數(shù)據(jù)的參數(shù)信息,從第2個(gè)字節(jié)開始為視頻流數(shù)據(jù)。

第1個(gè)字節(jié)的前4位的數(shù)值表示幀類型。

第1個(gè)字節(jié)的后4位的數(shù)值表示視頻編碼ID,1 = JPEG(現(xiàn)已不用),2 = Sorenson H.263,3 = Screen video,4 = On2 VP6,5 = On2 VP6 with alpha channel,6 = Screen video version 2。

六、Script Tag Data結(jié)構(gòu)

該類型Tag又通常被稱為Metadata Tag,會(huì)放一些關(guān)于FLV視頻和音頻的參數(shù)信息,如duration、width、height等。通常該類型Tag會(huì)跟在File Header后面作為第一個(gè)Tag出現(xiàn),而且只有一個(gè)。

一般來說,該Tag Data結(jié)構(gòu)包含兩個(gè)AMF包。AMF(Action Message Format)是Adobe設(shè)計(jì)的一種通用數(shù)據(jù)封裝格式,在Adobe的很多產(chǎn)品中應(yīng)用,簡(jiǎn)單來說,AMF將不同類型的數(shù)據(jù)用統(tǒng)一的格式來描述。第一個(gè)AMF包封裝字符串類型數(shù)據(jù),用來裝入一個(gè)“onMetaData”標(biāo)志,這個(gè)標(biāo)志與Adobe的一些API調(diào)用有,在此不細(xì)述。第二個(gè)AMF包封裝一個(gè)數(shù)組類型,這個(gè)數(shù)組中包含了音視頻信息項(xiàng)的名稱和值。具體說明如下,大家可以參照?qǐng)D片上的數(shù)據(jù)進(jìn)行理解。

第一個(gè)AMF包:

第1個(gè)字節(jié)表示AMF包類型,一般總是0x02,表示字符串,其他值表示意義請(qǐng)查閱文檔。

第2-3個(gè)字節(jié)為UI16類型值,表示字符串的長(zhǎng)度,一般總是0x000A(“onMetaData”長(zhǎng)度)。

后面字節(jié)為字符串?dāng)?shù)據(jù),一般總為“onMetaData”。

第二個(gè)AMF包:

第1個(gè)字節(jié)表示AMF包類型,一般總是0x08,表示數(shù)組。

第2-5個(gè)字節(jié)為UI32類型值,表示數(shù)組元素的個(gè)數(shù)。

后面即為各數(shù)組元素的封裝,數(shù)組元素為元素名稱和值組成的對(duì)。表示方法如下:

第1-2個(gè)字節(jié)表示元素名稱的長(zhǎng)度,假設(shè)為L(zhǎng)。

后面跟著為長(zhǎng)度為L(zhǎng)的字符串。

第L+3個(gè)字節(jié)表示元素值的類型。

后面跟著為對(duì)應(yīng)值,占用字節(jié)數(shù)取決于值的類型。

OK,到此FLV文件結(jié)構(gòu)講完了,希望我已經(jīng)講清楚了:)另外我自己寫了一個(gè)小工具,用它可以查看一個(gè)FLV文件的結(jié)構(gòu),并且能夠分析各個(gè)字段對(duì)應(yīng)字節(jié)的具體值,截圖如下。目前還有一些小問題需要完善,后面我會(huì)加一個(gè)使用說明。想用的朋友可以到我磁盤空間的“工具”目錄去下載。( http://e.ys168.com/?tinyfun

FLV文件格式解析


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美娇小www | 久久久免费观成人影院 | 国产精品伦理久久久久 | 亚洲一区二区在线成人 | 成人午夜影视全部免费看 | 深夜在线免费 | 亚洲涩色 | 国产一区二区免费播放 | 国产aaaaaaa毛片 | 97在线视频网站 | 国产亚洲精彩视频 | 九九99久久精品午夜剧场免费 | 九九性视频| 亚洲国产精品一区 | 中文精品爱久久久国产 | 91亚洲精品一区二区在线观看 | 五月综合视频 | 色五月情 | 国产日韩精品一区在线不卡 | 免费h片在线观看 | 国产精品久久自在自2021 | 最新99国产成人精品视频免费 | 四虎永久 | 91在线免费公开视频 | 久久久久国产精品免费网站 | 另类videossexo老妇 | 99久久综合久中文字幕 | 久久成人亚洲 | 韩国三日本三级中文字幕 | 澳门四虎影院 | 天天射夜夜骑 | 久热这里只精品热在线观看 | 国产 日韩 一区 | 日韩一区在线视频 | 国产精品人人视频 | 国产精品麻豆久久久 | 国产成人精品日本亚洲直接 | 伊人午夜| 久久成人免费视频 | 中文字幕中文字幕在线 | 日韩亚洲视频 |