flv格式用什么打開 打開flv格式的播放器

flv格式用什么打開 打開flv格式的播放器FLV (Flash Video) 是由 Adobe 公司推出的一種封裝格式,主要用于流媒體系統 。FLV 封裝的媒體文件具有體積輕巧、封裝播放簡單等特點,很適合網絡應用 。目前各瀏覽器普遍使用 Fl
FLV (Flash Video) 是由 Adobe 公司推出的一種封裝格式,主要用于流媒體系統 。FLV 封裝的媒體文件具有體積輕巧、封裝播放簡單等特點,很適合網絡應用 。目前各瀏覽器普遍使用 Flash Player 作為網頁播放器,使得安裝有瀏覽器的計算機終端不需要另外安裝播放器,這也是 FLV 格式廣為流行的原因之一 。
FLV 封裝格式的文件擴展名為 .flv 。FLV 文件主要由一個 Header 加上由多個 Tag 組成的 Body 構成 。如下所述:
1. FLV Header
所有 FLV 格式文件都以 FLV Header 開頭 。FLV Header 類型是 FLVHEADER,FLVHEADER 定義如下:

flv格式用什么打開 打開flv格式的播放器

文章插圖
flv格式用什么打開 打開flv格式的播放器

文章插圖
在 FLV 版本 1 中,“數據偏移”字段值為 9 。在 FLV 未來版本中,此字段可兼容更大尺寸的 FLV Header 。
typedef struct {UI8 Signature;UI8 Signature;UI8 Signature;UI8 Version;UI8 TypeFlags;UI32 DataOffset;}FLVHEADER;2. FLV Body
一個 FLV 文件,除開頭的 FLV Header 外,剩余部分就是 FLV Body 。FLV Body 由一系列 back-pointer 和 tag 交織構成 。back-pointer 表示前一 tag 大小 。FLV Body 類型是 FLVBODY,FLVBODY 定義如下:
flv格式用什么打開 打開flv格式的播放器

文章插圖
flv格式用什么打開 打開flv格式的播放器

文章插圖
typedef struct {UI32 PreviousTagSize0;FLVTAG Tag1;UI32 PreviousTagSize1;FLVTAG Tag2;...UI32 PreviousTagSizeN-1;FLVTAG TagN;UI32 PreviousTagSizeN;}FLVBODY;
領取音視頻開發資料包:音視頻流媒體高級開發FFmpegWebRTCRTMPRTSPHLSRTP播放器
flv格式用什么打開 打開flv格式的播放器

文章插圖
flv格式用什么打開 打開flv格式的播放器

文章插圖
企鵝君羊994289133領取資料
flv格式用什么打開 打開flv格式的播放器

文章插圖
flv格式用什么打開 打開flv格式的播放器

文章插圖
企鵝君羊994289133領取資料
3. FLV Tag
FLV Tag 包含音頻、視頻或腳本元數據、可選的加密元數據和 payload 。FLV Tag 類型是 FLVTAG,FLVTAG 定義如下:
flv格式用什么打開 打開flv格式的播放器

文章插圖
flv格式用什么打開 打開flv格式的播放器

文章插圖
typedef struct {UB[2] Reserved;UB[1] Filter;UB[5] TagType;UI24 DataSize;UI24 Timestamp;UI8 TimestampExtended;UI24 StreamID; IF TagType == 8AudioTagHeader Header; IF TagType == 9VideoTagHeader Header; IF TagType == 8AUDIODATA Data; IF TagType == 9VIDEODATA Data; IF TagType == 18SCRIPTDATA Data;}FLVTAG;
一個 FLVTAG 中,前 11 個字節是通用 TagHeader,后面緊跟跟著音頻 Tag、視頻 Tag 或腳本 Tag,其中音頻 Tag 和視頻 Tag 都包含 TagHeader 和 TagBody 兩部分,腳本 Tag 只有 TagBody 部分 。
上面 Timestamp 和 TimestampExtended 兩個字段拼成一個 32 位的時間戳,是當前 Tag 的解碼時間戳 (DTS) 。對于音頻幀來說,PTS 和 DTS 相同 。對于視頻幀來說,若含 B 幀,則 PTS 和 DTS 不同,H264 視頻幀 PTS = DTS + CTS,CTS 就是 CompositionTime 字段,參考 3.2.1 節 CompositionTime 字段的定義 。
3.1 Audio Tag
Audio Tag 包括 AudioTagHeader 和 AudioTagBody 兩部分 。
3.1.1 AudioTagHeader
AudioTagHeader 定義如下:
flv格式用什么打開 打開flv格式的播放器

文章插圖
flv格式用什么打開 打開flv格式的播放器

文章插圖
格式 3,linear PCM,存儲原始 PCM 采樣點 。如果采樣位深為 8,采樣點數據為無符號型 。如果采樣位深為 16,采樣點數據為小端存儲的帶符號型 。如果是立體聲,左右聲道采樣點交織存放:左-右-左-右-…
格式 0 與格式 3 的不同之處只有一點:格式 0 存儲 16 位采樣數據,采用的大小端順序是創建 FLV 文件的平臺所使用的大小端順序 。因此,不應使用格式 0,而應使用格式 3 。
格式 4 (Nellymoser 16-kHz mono) 和格式 5 (Nellymoser 8 kHz mono),是兩種特殊情況, 因為采樣率字段無法表示 8 kHz 和 16 kHz 。當采樣格式是格式 4 或格式 5 時,Flash 播放器會忽略采樣率和聲音類型兩個字段 。對于其他采樣率的 Nellymoser 格式, 即格式 6,則正常使用采樣率和聲音類型兩個字段 。

推薦閱讀