FLV文件格式解析

1.FLV文件總體結構

FLV文件由FLV header和FLV body組成,FLV body由一系列的FLV tags組成,以下圖所示

tag又能夠分紅三類:audio,video,script,分別表明音頻流,視頻流,腳本流,而每一個tag又由tag header和tag data組成。每一個Tag前面還包含了Previous Tag Size字段,表示前面一個Tag的大小。整個FLV文件的詳細的組成以下圖所示數組

2.Audio Tag Data結構

音頻tag開始的第1個字節包含了音頻數據的參數信息,從第2個字節開始爲音頻流數據。結構以下圖所示

音頻tag的第一個字節的前4位表明音頻編碼類型,各個取值的含義以下ide

第5-6位表明音頻採樣率,各取值的含義以下:編碼

 第7位表明音頻採樣精度,各取值的含義以下
第8位表明音頻的聲道數,各取值含義以下:
從第2個字節開始就爲音頻數據
 若是音頻數據編碼格式爲AAC

3.Video Tag Data結構

視頻Tag也用開始的第1個字節包含視頻數據的參數信息,從第2個字節爲視頻流數據。結構以下圖所示

第1個字節的前4位表示幀類型,各個取值的含義以下:.net

後4位表示視頻編碼類型,各個取值的含義以下:3d

從第二個字節開始就是視頻數據orm

若是視頻爲AVC視頻

4.Script Tag Data結構(控制幀)

該類型Tag又一般被稱爲Metadata Tag,會放一些關於FLV視頻和音頻的元數據信息如:duration、width、height等。一般該類型Tag會跟在File Header後面做爲第一個Tag出現,並且只有一個。結構以下圖所示
第一個AMF包:第1個字節表示AMF包類型,通常老是0x02,表示字符串。第2-3個字節爲UI16類型值,標識字符串的長度,通常老是0x000A(「onMetaData」長度)。後面字節爲具體的字符串,通常總爲「onMetaData」(6F,6E,4D,65,74,61,44,61,74,61)。
第二個AMF包:第1個字節表示AMF包類型,通常老是0x08,表示數組。第2-5個字節爲UI32類型值,表示數組元素的個數。後面即爲各數組元素的封裝,數組元素爲元素名稱和值組成的對。常見的數組元素以下:

 

 

參考資料:
flv_video_file_format_specification _v10.pdf
相關文章
相關標籤/搜索