-
FLV
FLV是一種容器封裝格式,是由Adobe公司發布和維護的,用于將視頻編碼流與音頻編碼流進行封裝。對于任意一種封裝格式,都有其頭部區域與數據區域,在FLV中,稱之為FLV Header與Body。
對于FLV Header,一個FLV文件只有一個FLV Header,前三字節是signature用來標記FLV文件,通常為“F”,“L”,“V”;第四字節是version代表版本號,通常為0x01。
對于FLV Body可以分為多個priviousDatasize與TAG,priviousDatasize代表前一個TAG長度,TAG又細分為Tag header與Tag Data,Tag header中的第1字節代表該TAG類型,Tag Data包含著真正的TAG數據。
Tag Data又可以分為VIdeo Tag與Audio Tag;VIdeo Tag中的Frame Type代表幀類型區分是否是關鍵幀,Audio Tag中的SoundFormat:音頻格式、SoundRate:采樣率、SoundSize:采樣大小、SoundType:聲道類型。
對于FLV的第一個TAG包,通常稱為Script Tag (一個FLV文件中只有這樣一個TAG),Script Tag 是由兩個 AMF 包組合起來(AMF 包 = 數據類型+ 數據長度 + 數據)。AMF 包 1: 通常是一個字符串,值為 “onMetaData”;AMF 包 2: 通常用于描述元數據信息,包括:視頻寬高、碼率、幀率、編解碼器ID,音頻碼率、編解碼器ID -
FLV整體結構
FLV幀內具體結構:
Video Tag、Audio Tag幀內結構: