FLV文件分析--1 (头部分析)

    xiaoxiao2021-03-25  99

    FLV是一个二进制文件,简单来说,其是由一个文件头(FLV header)和很多tag组成

    而每个tag又由tag header和tag data组成。

    FLV文件头由9bytes组成:

    typedef struct{ char Signature[3]; // 前3个bytes是文件类型,总是“FLV”,也就是(0x46 0x4C 0x56)。 char Version; // 0x01 char Flags; // 流信息 倒数第一位 0x01 :有视频 倒数第三位 0x4: 有音频 0x01|0x04=0x05 :全有 unsigned int DataOffset; // FLV 头长度 ; 9 }FLV_HEADER;

    FLV header后面就是FLV body,FLV body由若干个tag 组成。

    分析上图 第一个tag

    每一个tag第一部分是tag header,tag header长度为11bytes

    ,但是每个tag header前面有4bytes记录着上一个tag的长度    00 00 00 00 

    09 :视频

    00 00 2D : datasize

    00 00 00 00 :时间戳

    00 00 00 :流信息

    tag header 长度为:       11

    1 //   09: 视频   08:音频

    3 //  数据长度  length

    3 // 时间戳 

    1 //扩展时间戳 0

    3 // stream ID   000

    typedef struct{ char type; char size[3]; char time[3]; unsigned int reserved; }TAG_HEADER; // tag head 头结构体 获取size大小算法:

    int rel_size2(unsigned char *m) { int size=0; size=((m[0]<<16)|(m[1]<<8)|(m[2])); return size; }

    转载请注明原文地址: https://ju.6miu.com/read-19077.html

    最新回复(0)