Field | type | Comment |
签名 | UI8 | ’F’(0X46) |
签名 | UI8 | ‘L’(0X4C) |
签名 | UI8 | ‘V’(0x56) |
版本 | UI8 | FLV的版本。0x01表示FLV 版本是1 |
保留字段 | UB5 | 前五位必须是0 |
是否有音频流 | UB1 | 音频流是否存在标志 |
保留字段 | UB1 | 必须是0 |
是否有视频流 | UB1 | 视频流是否存在标志 |
文件头大小 | UI32 | FLV版本1时填写9,表明的是FLV头的大小,为后期的FLV版本扩展使用。包括这四个字节。 数据的起始位置就是从文件开头偏移这么多的大小。 |
Field | type | Comment |
TAG类型 | UI8 | 8: audio 9: video 18: script data——这里是一些描述信息。 all others: reserved其他所有值未使用。 |
数据大小 | UI24 | 数据区的大小,不包括包头。包头总大小是11个字节。 |
时戳 | UI24 | 当前帧时戳,单位是毫秒。相对于FLV文件的第一个TAG时戳。第一个tag的时戳总是0。——不是时戳增量,rtmp中是时戳增量。 |
时戳扩展字段 | UI8 | 如果时戳大于0xFFFFFF,将会使用这个字节。这个字节是时戳的高8位,上面的三个字节是低24位。 |
流ID | U24 | 总是0 |
数据区 | UI8[n] |
Field | type | Comment |
音频格式 | UB4 | 0 = Linear PCM, platform endian 1 = ADPCM 2 = MP3 3 = Linear PCM, little endian 4 = Nellymoser 16-kHz mono 5 = Nellymoser 8-kHz mono 6 = Nellymoser 7 = G.711 A-law logarithmic PCM 8 = G.711 mu-law logarithmic PCM 9 = reserved 10 = AAC 11 = Speex 14 = MP3 8-Khz 15 = Device-specific sound 7, 8, 14, and 15:内部保留使用。 flv是不支持g711a的,如果要用,可能要用线性音频。 |
采样率 | UB2 | For AAC: always 3 0 = 5.5-kHz 1 = 11-kHz 2 = 22-kHz 3 = 44-kHz |
采样大小 | UB1 | 0 = snd8Bit 1 = snd16Bit |
声道 | UB1 | 0=单声道 1=立体声,双声道。AAC永远是1 |
声音数据 | UI8[N] | 如果是PCM线性数据,存储的时候每个16bit小端存储,有符号。 如果音频格式是AAC,则存储的数据是AAC AUDIO DATA,否则为线性数组。 |
Field | type | Comment |
帧类型 | UB4 | 1: keyframe (for AVC, a seekable frame)——h264的IDR,关键帧,可重入帧。 2: inter frame (for AVC, a non- seekable frame)——h264的普通帧 3: disposable inter frame (H.263 only) 4: generated keyframe (reserved for server use only) 5: video info/command frame |
编码ID | UB4 | 使用哪种编码类型: 1: JPEG (currently unused) 2: Sorenson H.263 3: Screen video 4: On2 VP6 5: On2 VP6 with alpha channel 6: Screen video version 2 7: AVC |
视频数据 | UI[N] | 如果是avc,则参考下面的介绍: AVCVIDEOPACKET |
Field | type | Comment |
AVC packet类型 | UI8 | 0:AVC序列头 1:AVC NALU单元 2:AVC序列结束。低级别avc不需要。 |
CTS | SI24 | 如果AVC packet类型是1,则为cts偏移(见下面的解释),为0则为0 |
数据 | UI8[n] | 如果AVC packet类型是0,则是解码器配置,sps,pps。 如果是1,则是nalu单元,可以是多个,具体格式:将下面 |
Field | type | Comment |
长度 | UI32 | nalu单元的长度,不包括长度字段。 |
nalu数据 | UI8[N] | NALU数据,没有四个字节的nalu单元头,直接从h264头开始,比如:65 ** ** **,41 ** ** ** |
长度 | UI32 | nalu单元的长度,不包括长度字段。 |
nalu数据 | UI8[N] | NALU数据,没有四个字节的nalu单元头,直接从h264头开始,比如:65 ** ** **,41 ** ** ** |
... | ... | ... |