FLV文件格式解析
阿新 • • 發佈:2018-01-13
表示 specific 參考 wid aud details art AMF 如果
第一個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類型值,表示數組元素的個數。後面即為各數組元素的封裝,數組元素為元素名稱和值組成的對。常見的數組元素如下:
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位代表音頻編碼類型,各個取值的含義如下
第5-6位代表音頻采樣率,各取值的含義如下:
第7位代表音頻采樣精度,各取值的含義如下 第8位代表音頻的聲道數,各取值含義如下: 從第2個字節開始就為音頻數據 如果音頻數據編碼格式為AAC3.Video Tag Data結構
視頻Tag也用開始的第1個字節包含視頻數據的參數信息,從第2個字節為視頻流數據。結構如下圖所示第1個字節的前4位表示幀類型,各個取值的含義如下:
後4位表示視頻編碼類型,各個取值的含義如下:
從第二個字節開始就是視頻數據
如果視頻為AVC
4.Script Tag Data結構(控制幀)
該類型Tag又通常被稱為Metadata Tag,會放一些關於FLV視頻和音頻的元數據信息如:duration、width、height等。通常該類型Tag會跟在File Header後面作為第一個Tag出現,而且只有一個。結構如下圖所示
參考資料: http://blog.csdn.net/leixiaohua1020/article/details/17934487 flv_video_file_format_specification _v10.pdf
FLV文件格式解析