利用utralEdit打開flv的文件可以看到如下:
以頭信息爲例進行分析如下:
這個是對flv格式的視頻數據進行分析的一個總結。
一、File Header結構
File Header在當前版本中總是由9個字節組成,如圖中藍色區域所示。
第1-3字節爲文件標識(Signature),總爲“FLV”(0x46 0x4C 0x56),如圖中紫色區域。
第4字節爲版本,目前爲1(0x01)。
第5個字節的前5位保留,必須爲0。
第5個字節的第6位表示是否存在音頻Tag。
第5個字節的第7位保留,必須爲0。
第5個字節的第8位表示是否存在視頻Tag。
第6-9個字節爲UI32類型的值,表示從File Header開始到File Body開始的字節數,版本1中總爲9。
Tag結構
Tag包括Tag Header和Tag Data兩部分。不同類型的Tag的Header結構是相同的,但是Data結構各不相同。如圖中綠色和黃色區域分別表示Tag Header數據和Tag Data數據。
當前版本的Tag Header結構佔用11個字節。
第1個字節表示Tag類型,包括音頻(0x08)、視頻(0x09)和script data(0x12),其他類型值被保留。
第2-4字節爲UI24類型的值,表示該Tag Data部分的大小。
第5-7字節爲UI24類型的值,表示該Tag的時間戳(單位爲ms),第一個Tag的時間戳總是0。
第8個字節爲時間戳的擴展字節,當24位數值不夠時,該字節作爲最高位將時間戳擴展爲32位值。
第9-11字節爲UI24類型的值,表示stream id,總是0。
後面的字節爲Tag Data數據,Data的大小由第2-4字節的數值指示,根據第1個字節指示的Tag類型,按照不同的結構解析Tag Data。下面分別介紹。
原本的格式如下
從下圖更形象的看出tag和body的結構